我的Lambda配置的“监控”选项卡中显示了我的AWS Lambda代码中的错误,但是在CloudWatch日志中看不到该错误。
如何以这样的方式配置AWS:当我的lambda函数失败时,我会收到一封电子邮件,指出哪个lambda失败,原因(超时或应用程序错误)。
我设置了CloudWatch警报,但只收到警报通知,没有告诉我为什么它失败了(或者我不知道在哪里看)
我想到的第一种方法是更好地捕获Lambda函数的异常,以便您可以采用该异常并将通知发送到已订阅您的电子邮件地址的SNS队列。
或者,您可以编写Lambda函数,该函数由云监视警报激活,并通过CloudWatch Logs的最后“ N”行发送(或者您可以编写更智能的东西)再次发送给您作为订户的SNS队列的。
第二种方法可能更好,因为您可以使它可重复用于许多Lambda查询,但是我认为第一种方法是使您到达想要的位置的最简单,最简单的选择。
对于以上两种情况,您也可以使用SES,但是我认为这太过分了,SNS更适合用例。
最后,检查“ MessageStructure”参数以发布到SNS。如果您想在接收者端开始某种形式的自动化,则可以通过发送一些非常惊人的JSON来完成此操作。
从Lambda发布到SNS队列非常简单,我将把您链接到下面的JavaScript SDK参考:
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property
示例代码:
var AWS = require('aws-sdk');
var sns = new AWS.SNS();
var exceptionMessage = "This is exception data / information";
var topicArn = "arn:aws:sns:ap-southeast-2:012345678912:My-SNS-Topic";
var subject = "Lambda exception alert";
var params = {
Message: exceptionMessage,
MessageAttributes: {
someKey: {
DataType: 'String',
StringValue: exceptionMessage
}
},
Subject: subject,
TopicArn: topicArn
};
sns.publish(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
您的Lambda函数的IAM策略文档:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1477112217000",
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": [
"arn:aws:sns:ap-southeast-2:012345678912:My-SNS-Topic"
]
}
]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句