Как отправить смс через SNS и Cloudwatch? - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь отправить SMS на мой мобильный, когда мой экземпляр EC2 останавливается.

  1. Я автоматически останавливаю свой экземпляр EC2, и теперь я хочу отправить SMS на мой мобильный телефон, когда он остановится.
  2. Я создал тему SNS с моим номером мобильного телефона. как подписчик.
  3. Я создал сигнал тревоги, когда EC2 останавливается.
  4. Под SNS> Мобильный> Обмен текстовыми сообщениями (SMS)> Настройки обмена текстовыми сообщениями (Изменить):

а. Я выбрал «Тип сообщения по умолчанию» как «Транзакционный».

б. Я создал новую роль IAM.

Политика ролей IAM

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:PutMetricFilter",
                "logs:PutRetentionPolicy"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

Политика доступа к темам SNS

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:Publish",
        "SNS:RemovePermission",
        "SNS:SetTopicAttributes",
        "SNS:DeleteTopic",
        "SNS:ListSubscriptionsByTopic",
        "SNS:GetTopicAttributes",
        "SNS:Receive",
        "SNS:AddPermission",
        "SNS:Subscribe"
      ],
      "Resource": "arn:aws:sns:us-west-2:account-id:sns-topic-name",
      "Condition": {
        "StringEquals": {
          "AWS:SourceOwner": "account-id"
        },
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:cloudwatch:us-west-2:account-id:alarm:*"
        }
      }
    }
  ]
}

Когда срабатывает сигнал тревоги, я получаю сообщение об ошибке ниже:

{
  "actionState": "Failed",
  "stateUpdateTimestamp": 1561102479560,
  "notificationResource": "arn:aws:sns:us-west-2:account-id:sns-topic-name",
  "publishedMessage": null,
  "error": "Resource: arn:aws:cloudwatch:us-west-2:account-id:alarm:alarm-name is not authorized to perform: SNS:Publish on resource: arn:aws:sns:us-west-2:account-id:sns-topic-name"
}

Я не могу понять, какого разрешения он ожидает.

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Причина ошибки, скорее всего, связана с неправильными значениями политики.Я не уверен, какие значения вы изменили, чтобы защитить конфиденциальные значения, но вам нужно обновить sns-topic-name и account-id.

Однако я бы порекомендовал другой способ достижения ваших целей ...

Вы можете использовать События Amazon CloudWatch для поиска определенного события (например, изменение состояния экземпляра на Остановлено) и его отправки напрямую в Amazon SNS (без использования Alarm).

Шаги:

  • В консоли Amazon CloudWatch нажмите Правила
  • Создать правило
  • Имя службы: EC2
  • Тип события: EC2 Уведомление об изменении состояния экземпляра
  • Определенное состояние (я): Остановлено
  • Выберите Любой экземпляр или Идентификаторы конкретного экземпляра
  • Справа, под Цели ,нажмите Добавить цель
  • Тема SNS
  • Выберите тему

CloudWatch Events - Create Rule

После этого будет отправлено сообщениепри еver экземпляр останавливается.

0 голосов
/ 21 июня 2019

Кажется, ошибка связана с отсутствующими разрешениями для вашей роли IAM для публикации сообщений в теме SNS. Примите меры для добавления необходимых разрешений к используемой вами роли или к пользователю, например:

 {
  "Id": "Policy1415489375392",
  "Statement": [
    {
      "Sid": "AWSConfigSNSPolicy20150201",
      "Action": [
        "SNS:Publish"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:sns:region:account-id:myTopic",
      "Principal": {
        "AWS": [
          "account-id1",
          "account-id2",
          "account-id3",
        ]
      }
    }
  ]
}
...