gpt4 book ai didi

amazon-web-services - 在电子邮件中查看来自 AWS Lambda 的错误

转载 作者:行者123 更新时间:2023-12-02 03:15:41 25 4
gpt4 key购买 nike

我的 AWS Lambda 代码中有错误,如我的 Lambda 配置上的监控选项卡所示,但我在 CloudWatch 日志中看不到错误。

我如何配置 AWS,以便当我的 lambda 函数失败时,我会收到一封电子邮件,说明哪个 lambda 失败,原因(超时或应用程序错误)。

我设置了一个 CloudWatch 警报,但我只是收到一个警报通知,但没有告诉我失败的原因(或者我不知道去哪里查看)

最佳答案

我想到的第一种方法是更好地捕获异常的 Lambda 函数,这样您就可以接受该异常并将通知发送到您的电子邮件地址订阅的 SNS 队列。

或者,您可以编写一个由云监视警报激活的 Lambda 函数,并将您的 CloudWatch 日志的最后“N”行(或者您可以编写更智能的东西)再次发送到 SNS 队列,您是订阅者。

第二种方法可能更好,因为您可以使它可重复用于许多 Lambda 查询,但我认为第一种方法是最简单和最容易的方法,可以让您到达想要的位置。

对于上述两种情况,您也可以使用 SES,但我认为这有点矫枉过正,SNS 更适合该用例。

最后检查用于发布到 SNS 的“MessageStructure”参数。如果您想在接收端启动某种形式的自动化,您可以发送一些非常棒的 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"
]
}
]
}

关于amazon-web-services - 在电子邮件中查看来自 AWS Lambda 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37198256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com