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

Aut*_*eek 6 amazon-web-services amazon-sns aws-cloudformation

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

V2:当我创建 SNS::Subscription 资源并提供 2 封电子邮件时,它给了我错误:##[错误]错误:堆栈无法达到更新完成状态,错误:“资源未处于 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
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

小智 5

您可以使用

Resources:
  Topic:
    Type: "AWS::SNS::Topic"
    Properties:
      DisplayName: !Sub "Connect InstanceId ${InstanceId}"
      Subscription:
        - Endpoint: <email_1>
          Protocol: "email"
        - Endpoint: <email_2>
          Protocol: "email"
Run Code Online (Sandbox Code Playgroud)


Mar*_*cin 4

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
Run Code Online (Sandbox Code Playgroud)