在 cloudformation 中启用 SNS 传递状态日志记录配置

Seb*_*Gra 4 amazon-sns aws-cloudformation amazon-cloudwatch

我正在尝试使用 AWS CloudFormation 设置 SNS 主题。我能够启动并运行主题及其 SQS 订阅,但我找不到指定交付状态日志记录选项的方法(告诉主题将其日志写入 cloudwatch 的选项)。

官方SNS / Cloudformation文档没有谈到这个能力。

我在这里发现显然它还没有实现。有没有人有这方面的最新状态?

以下是我拥有的模板(片段):

SNSBouncesTopic:
  Type: AWS::SNS::Topic
  Properties: 
    DisplayName: SNS-Bounces
    Subscription: 
     - Endpoint: !GetAtt
        - SQSBouncesQueue
        - Arn
       Protocol: sqs
    TopicName: SNS-Bounces
Run Code Online (Sandbox Code Playgroud)

SQSBouncesQueue 是处理 SNS 消息的堆栈的另一个资源。

syu*_*maK 5

目前,CloudFormation 不支持启用 SNS 传递状态日志记录。

您需要使用控制台、SDK 或 CLI。如果您仍需要使用 CloudFormation 工作流程,请查看以下解决方法:

此解决方法涉及使用 Lambda 支持的自定义资源,通过将必要的属性添加到 SNS 主题来启用 SNS 传递状态日志记录。

一个自定义的资源基本上是触发时,创建你的CFN栈,更新或删除lambda函数。

要设置主题属性,您需要以下内容:

a)具有 SNS 服务承担该角色权限的 IAM 角色。它应该包括以下内容:

  Permissions : 
  Actions : 
  "logs:CreateLogGroup"
  "logs:CreateLogStream”
  "logs:PutLogEvents”
  "logs:PutMetricFilter"
  "logs:PutRetentionPolicy"
Run Code Online (Sandbox Code Playgroud)

b)一个 SNS 话题

c)接受 IAM 角色 ARN 和 SNS 主题 ARN 并调用相应设置主题属性的 Lambda 函数的自定义资源。

在 Lambda 函数中,您需要指定 SNS TopicArn,使用 set_topic_attributes() 方法设置主题属性。对于 AttributeName,您必须将其指定为“LambdaSuccessFeedbackRoleArn”以设置成功交付的属性,并指定为“LambdaFailureFeedbackRoleArn”以设置失败交付的属性。

笔记:

  1. 成功和失败的 AttributeValue 都是具有修改 CloudWatch 日志权限的 IAM 角色的 ARN。

  2. 这个函数应该被调用两次,一次是设置成功交付的属性,另一个是设置失败交付的属性。

  • @Ward - 我想我不明白。您提供的[链接](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks-event-bridge.html)似乎与启用SNS传递状态的CDK或CFN方式无关记录? (3认同)