Можно ли создать тему SNS с несколькими получателями электронной почты в шаблоне облачной информации?
V1: Я пытаюсь настроить сигнализацию Cloudwatch для отправки уведомлений по электронной почте нескольким членам команды. похоже, что мы можем установить только одно электронное письмо в конечной точке темы. есть ли способ добавить список подписчиков в конечной точке в шаблоне облачной информации? или есть лучший подход для этого?
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
Вопрос: даже если это сработает, мой вопрос относительно этого: какой будет идеальный подход, если вы настроили несколько тревог CloudWatch и хотите отправить уведомление по электронной почте нескольким людям при превышении определенного порога? На мой взгляд, это своего рода поражение цели повторного использования шаблона облачной информации, когда вы жестко кодируете каждый адрес электронной почты таких пользователей. и даже если мы параметризуем адрес электронной почты для каждого пользователя, добавление адреса электронной почты в файл параметров займет много времени, если у вас 50 подписчиков / пользователей. Я могу ошибаться, или есть лучший способ сделать это!
Спасибо!
3 ответа
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
Вы можете использовать
Resources:
Topic:
Type: "AWS::SNS::Topic"
Properties:
DisplayName: !Sub "Connect InstanceId ${InstanceId}"
Subscription:
- Endpoint: <email_1>
Protocol: "email"
- Endpoint: <email_2>
Protocol: "email"
EmailSubscription:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint: "xyz@xyz.com"
Protocol: "email"
- Endpoint: "abc@abc.com"
Protocol: "email"
TopicName: !Ref Topic