Можно ли создать тему 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                                                            
Другие вопросы по тегам