是否可以在 cloudformation 模板中创建具有多个电子邮件收件人的 SNS 主题?

Posted

技术标签:

【中文标题】是否可以在 cloudformation 模板中创建具有多个电子邮件收件人的 SNS 主题?【英文标题】:Is to possible to create SNS topic with multiple email Recipients in cloudformation template? 【发布时间】:2020-10-14 18:31:28 【问题描述】:

V1:我正在尝试设置 cloudwatch 警报以向多个团队成员发送电子邮件通知。看起来我们只能在主题端点中设置一封电子邮件。有没有办法在 cloudformation 模板的端点中添加订阅者列表?还是有更好的方法来做到这一点?

V2:当我创建 SNS::Subscription 资源并提供 2 封电子邮件时,它给了我错误:##[error]Error: Stack failed to reach update completion status, error: 'Resource is not in the state stackUpdateComplete' 我不确定我是否以正确的格式提供了财产,或者可能是什么错误。

Resources:
  Topic:
    Type: "AWS::SNS::Topic"
    Properties:
      DisplayName: !Sub "Connect InstanceId $InstanceId"

  EmailSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      Endpoint: abc@abc.com
      Protocol: email
      Endpoint: xyz@xyz.com
      Protocol: email
      TopicArn: !Ref Topic

问题:即使它有效,我对此的问题是,当您设置多个 CloudWatch 警报并希望在确定时向多个人发送电子邮件通知时,什么是理想的方法阈值是违反? 在我看来,当您像这样对用户的每个电子邮件地址进行硬编码时,这有点违背了 cloudformation 模板的可重用性目的。即使我们参数化每个用户的电子邮件地址,当您有 50 个订阅者/用户时,在参数文件中添加电子邮件地址也会花费大量时间。我可能是错的,或者有没有更好的方法来做到这一点!

谢谢!

【问题讨论】:

您必须以某种方式管理这些订阅。有很多方法可以解决它。 “理想”是相对的和主观的。最简单的方法之一是在 SNS 控制台中管理电子邮件订阅。 【参考方案1】:

CloudFormation 提供AWS::SNS::Subscription 资源。

我看不出你为什么不能创建几个,为每个电子邮件收件人创建一个

编辑。

对于两封电子邮件,您必须创建两个资源

 EmailSubscription1:
    Type: AWS::SNS::Subscription
    Properties:
      Endpoint: abc@abc.com
      Protocol: email
       TopicArn: !Ref Topic

 EmailSubscription2:
    Type: AWS::SNS::Subscription
    Properties:
      Endpoint: xyz@xyz.com
      Protocol: email
      TopicArn: !Ref Topic

【讨论】:

【参考方案2】:

你可以使用

Resources:
  Topic:
    Type: "AWS::SNS::Topic"
    Properties:
      DisplayName: !Sub "Connect InstanceId $InstanceId"
      Subscription:
        - Endpoint: <email_1>
          Protocol: "email"
        - Endpoint: <email_2>
          Protocol: "email"

【讨论】:

以上是关于是否可以在 cloudformation 模板中创建具有多个电子邮件收件人的 SNS 主题?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Inspector 的 AWS CloudFormation 模板能否添加 SNS 主题

是否可以在从 CloudFormation 模板创建时触发 lambda

在特定子网和安全组 cloudformation 中创建实例

无法在CLoud格式模板中测试AWS DMS端点

Cloudformation Cloudwatch 输入模板格式

在 Cloudformation 模板中为 AWS API Gateway 使用 IAM 角色