在 cloudformation 中启用 SNS 传递状态日志记录配置
Enable SNS Delivery Status Logging configuration in cloudformation
我正在尝试使用 AWS CloudFormation 设置 SNS 主题。
我能够获取主题及其 SQS 订阅并 运行,但我找不到指定传递状态日志记录选项的方法(告诉主题将其日志写入 cloudwatch 的选项)。
official SNS/Cloudformation docs对此功能只字不提。
I found here 显然它还没有实现。有人知道这方面的最新情况吗?
下面是我的模板(片段):
SNSBouncesTopic:
Type: AWS::SNS::Topic
Properties:
DisplayName: SNS-Bounces
Subscription:
- Endpoint: !GetAtt
- SQSBouncesQueue
- Arn
Protocol: sqs
TopicName: SNS-Bounces
SQSBouncesQueue 是处理 SNS 消息的堆栈的另一个资源。
目前,CloudFormation 不支持启用 SNS 传递状态日志记录。
您需要使用控制台、SDK 或 CLI。如果您仍需要使用 CloudFormation 工作流,请查看以下解决方法:
此解决方法涉及使用 Lambda 支持的自定义资源,通过向 SNS 主题添加必要的属性来启用 SNS 传递状态日志记录。
A custom resource essentially triggers a Lambda function when your CFN stack is created, updated, or deleted.
要设置主题属性,您需要以下内容:
a) 一个 IAM 角色,具有 SNS 服务代入该角色的权限。它应该包括以下内容:
Permissions :
Actions :
"logs:CreateLogGroup"
"logs:CreateLogStream”
"logs:PutLogEvents”
"logs:PutMetricFilter"
"logs:PutRetentionPolicy"
b) SNS 主题
c) 接受 IAM 角色 ARN 和 SNS 主题 ARN 并调用相应设置主题属性的 Lambda 函数的自定义资源。
在 Lambda 函数中,您需要指定 SNS TopicArn,使用 set_topic_attributes() 方法设置主题属性。对于 AttributeName,您必须将其指定为 “LambdaSuccessFeedbackRoleArn” 以设置成功交付的属性,并指定为 “LambdaFailureFeedbackRoleArn” 以设置交付失败的属性。
注:
成功和失败的 AttributeValue 都是具有修改 CloudWatch 日志访问权限的 IAM 角色的 ARN。
该函数应该被调用两次,一次是为成功传递设置属性,另一次是为传递失败设置属性。
我正在尝试使用 AWS CloudFormation 设置 SNS 主题。 我能够获取主题及其 SQS 订阅并 运行,但我找不到指定传递状态日志记录选项的方法(告诉主题将其日志写入 cloudwatch 的选项)。
official SNS/Cloudformation docs对此功能只字不提。
I found here 显然它还没有实现。有人知道这方面的最新情况吗?
下面是我的模板(片段):
SNSBouncesTopic:
Type: AWS::SNS::Topic
Properties:
DisplayName: SNS-Bounces
Subscription:
- Endpoint: !GetAtt
- SQSBouncesQueue
- Arn
Protocol: sqs
TopicName: SNS-Bounces
SQSBouncesQueue 是处理 SNS 消息的堆栈的另一个资源。
目前,CloudFormation 不支持启用 SNS 传递状态日志记录。
您需要使用控制台、SDK 或 CLI。如果您仍需要使用 CloudFormation 工作流,请查看以下解决方法:
此解决方法涉及使用 Lambda 支持的自定义资源,通过向 SNS 主题添加必要的属性来启用 SNS 传递状态日志记录。
A custom resource essentially triggers a Lambda function when your CFN stack is created, updated, or deleted.
要设置主题属性,您需要以下内容:
a) 一个 IAM 角色,具有 SNS 服务代入该角色的权限。它应该包括以下内容:
Permissions :
Actions :
"logs:CreateLogGroup"
"logs:CreateLogStream”
"logs:PutLogEvents”
"logs:PutMetricFilter"
"logs:PutRetentionPolicy"
b) SNS 主题
c) 接受 IAM 角色 ARN 和 SNS 主题 ARN 并调用相应设置主题属性的 Lambda 函数的自定义资源。
在 Lambda 函数中,您需要指定 SNS TopicArn,使用 set_topic_attributes() 方法设置主题属性。对于 AttributeName,您必须将其指定为 “LambdaSuccessFeedbackRoleArn” 以设置成功交付的属性,并指定为 “LambdaFailureFeedbackRoleArn” 以设置交付失败的属性。
注:
成功和失败的 AttributeValue 都是具有修改 CloudWatch 日志访问权限的 IAM 角色的 ARN。
该函数应该被调用两次,一次是为成功传递设置属性,另一次是为传递失败设置属性。