Node.js 我需要将AWS SDK导入lambda吗
可能是个愚蠢的问题,但在stack/aws文档中找不到明确的答案。我的假设是它应该内置在lambda中 我正在AWS Lambda中运行Node10.x,带有Axios模块。我有一个成功的函数,它检查DNS/EC2/端点路径并返回正确的响应。我想让它自动化,让它每10分钟检查一次。如果出现错误,它将在SES中通知我,如果响应良好,则什么也不做 所有的功能都可以正常工作,但我在整合SES时遇到了问题。在下面的if语句中,我添加了这段代码,console.log可以工作,所以这只是我遇到问题的SES部分Node.js 我需要将AWS SDK导入lambda吗,node.js,aws-lambda,axios,amazon-ses,Node.js,Aws Lambda,Axios,Amazon Ses,可能是个愚蠢的问题,但在stack/aws文档中找不到明确的答案。我的假设是它应该内置在lambda中 我正在AWS Lambda中运行Node10.x,带有Axios模块。我有一个成功的函数,它检查DNS/EC2/端点路径并返回正确的响应。我想让它自动化,让它每10分钟检查一次。如果出现错误,它将在SES中通知我,如果响应良好,则什么也不做 所有的功能都可以正常工作,但我在整合SES时遇到了问题。在下面的if语句中,我添加了这段代码,console.log可以工作,所以这只是我遇到问题的SES
exports.handler = async (event, context) => {
let aws = require('aws-sdk');
let ses = new aws.SES({
region: 'us-east-1'
});
let data = "document_contents=<?xml version=\"1.0\" encoding=\"UTF-8\"?><auth><user>fake</user><pass>info</pass></auth>";
var axios = require("axios");
var config = {
headers: { 'Content-Type': 'text/xml' },
};
let res = await axios.post('https://awebsiteidontwanttogiveout.com', data, config);
let eParams;
if (res.status === 200) {
console.log("Success");
eParams = {
Destination: {
ToAddresses: ["banana@apples.com"]
},
Message: {
Body: {
Text: {
Data: "Test SUCCESSFUL"
}
},
Subject: {Test SUCCESSFUL"
}
},
Source: "banana@apples.com"
};
ses.sendEmail(eParams);
}
if (res.status != 200) {
console.log("Failure");
eParams = {
Destination: {
ToAddresses: ["banana@apples.com"]
},
Message: {
Body: {
Text: {
Data: "Test FAIL"
}
},
Subject: {
Data: "Test FAIL"
}
},
Source: "banana@apples.com"
};
ses.sendEmail(eParams);
}
};
exports.handler=async(事件、上下文)=>{
设aws=require('aws-sdk');
设ses=新的aws.ses({
地区:'us-east-1'
});
let data=“document\u contents=fakeinfo”;
var axios=要求(“axios”);
变量配置={
标题:{'Content Type':'text/xml'},
};
let res=等待axios.post('https://awebsiteidontwanttogiveout.com,数据,配置);
让eParams;
如果(资源状态===200){
控制台日志(“成功”);
eParams={
目的地:{
地址:[”banana@apples.com"]
},
信息:{
正文:{
正文:{
数据:“测试成功”
}
},
主题:{测试成功“
}
},
来源:“banana@apples.com"
};
ses.发送电子邮件(eParams);
}
如果(恢复状态!=200){
控制台日志(“故障”);
eParams={
目的地:{
地址:[”banana@apples.com"]
},
信息:{
正文:{
正文:{
数据:“测试失败”
}
},
主题:{
数据:“测试失败”
}
},
来源:“banana@apples.com"
};
ses.发送电子邮件(eParams);
}
};
我在3秒钟后超时。我上传了一个zip文件到节点,带有依赖项。我需要安装AWS SDK并将其与文件一起上传吗?它不应该以某种方式内置吗?我的SES调用中是否遗漏了什么
谢谢有两个问题需要解决:
等待ses.sendmail(eParams.promise()
否则,Lambda将在sendmail方法
完成之前结束执行
不确定,但您是否也应该
var AWS=require('AWS-sdk');
和var ses=new AWS.ses({apiVersion:'2010-12-01'))
etc?zip文件中到底上传了什么?其中是否有node_modules文件夹?aws sdk不需要导入,它已经包含在lambda运行时中很难说不知道网络限制。是否需要使用公司代理?唯一的一点是您应该使用wait ses.sendmail(eParams).promise()
由于此调用是异步的,您确定是sendmail
函数有问题吗?