我们如何为使用开发工具包发送到 AWS Lambda 的通知启用 SNS 日志记录?

Dei*_*eiv 6 amazon-web-services amazon-sns amazon-cloudwatch aws-lambda

要求:

为使用开发工具包(而不是通过控制台)发送到 AWS Lambda 的通知启用 SNS 传输状态日志记录(到 CloudWatch)

问题:

通过控制台,我们可以通过选择协议“AWS Lambda”轻松启用交付状态日志记录。但是,通过SDK,只有一个选项可以将其设置为“平台应用程序端点”协议,该协议具有强制属性PlatformApplicationArn,因此不能用于其他日志协议。

我是否遗漏了什么,或者此功能尚不可用?

Dei*_*eiv 3

好吧,由于文档极具误导性,经过很多麻烦之后,我已经弄清楚了。

为了启用 Lambda 协议的日志记录(我还没有测试其他协议),您必须使用SetTopicAttributes。尽管文档声明这AttributeName是一个包含DeliveryPolicyDisplayName、 或 的地图Policy,但您实际上必须在3 个单独的 SNS.setTopicAttributes() 调用AttributeName中设置为LambdaSuccessFeedbackRoleArnLambdaFailureFeedbackRoleArn、 和。LambdaSuccessFeedbackSampleRate

因此,参数将如下所示:

let paramsSuccessFeedbackRoleArn = {
    TopicArn: topicArn,
    AttributeName: "LambdaSuccessFeedbackRoleArn",
    AttributeValue: "replace with arn for SuccessFeedbackRoleArn"
};
let paramsFailureFeedbackRoleArn = {
    TopicArn: topicArn,
    AttributeName: "LambdaFailureFeedbackRoleArn",
    AttributeValue: "replace with arn for FailureFeedbackRoleArn"
};
let paramsSuccessFeedbackSampleRate = {
    TopicArn: topicArn,
    AttributeName: "LambdaSuccessFeedbackSampleRate",
    AttributeValue: 0
};
Run Code Online (Sandbox Code Playgroud)

然后 3 个 SDK 调用,每个参数调用一个。