是否可以在 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 中创建实例