我的AWS Lambda代码中存在错误,如Lambda配置的监控选项卡中所示,但我无法在CloudWatch日志中看到错误。
如何以这样的方式配置AWS:当我的lambda函数失败时,我收到一封电子邮件,说明哪个lambda失败,原因(超时或应用程序错误)。
我设置了一个CloudWatch警报,但我只是收到一个警报通知而没有告诉我它失败的原因(或者我不知道在哪里看)
答案 0 :(得分:1)
我想到的第一种方法是更好地捕获异常的Lambda函数,以便您可以接受该异常并将通知发送到您的电子邮件地址订阅的SNS队列。
或者,您可以编写一个由云监视警报激活的Lambda函数,并通过最后一个N' CloudWatch Logs的行数(或者您可以更智能地写一些内容)再次成为您订阅的SNS队列。
第二种方法可能更好,因为你可以让它重复使用许多Lambda查询,但我认为第一种选择是最简单,最简单的选项,可以让你到达你想要的地方。
对于上述两种情况,您也可以使用SES,但我认为这是过度杀伤,SNS更适合用例。
最后查看" MessageStructure"发布到SNS的参数。如果你想在收件人端启动某种形式的自动化,你可以发送一些非常棒的JSON来实现这一点。
从Lambda发布到SNS队列非常简单,我将链接到下面的JavaScript SDK参考:
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property
示例代码:
using UnityEngine;
using System.Collections;
public class TileType {
public string name;
public GameObject tileVisualPrefab;
}
Lambda函数的IAM策略文档:
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
});