CloudWatch сигнализация к SNS в другом регионе - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь уведомить тему SNS из тревоги CloudWatch, которая находится в другом регионе. Причина в том, что я хочу получать SMS-оповещения, которых нет в регионе, где есть мои услуги. Если я ввожу ARN подписки и сохраняю изменения в консоли, я получаю сообщение «Произошла ошибка при сохранении тревоги. Пожалуйста, попробуйте еще раз». Повторная попытка не помогает. Использование темы в местном регионе работает, но это не то, что мне нужно.

Есть ли способ уведомить тему в другом регионе? Если нет, есть ли другой простой способ достичь своей цели?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Чтобы добавить ответ @ Tartaglia, вот источник такой лямбда-функции, использующей Python 3, собранной из разных источников, потому что у меня нет времени, чтобы сделать это должным образом:

import json
import logging

import boto3


logger = logging.getLogger()
logger.setLevel(logging.INFO)


session = boto3.Session(region_name='eu-west-1') # EU (Ireland)
sns_client = session.client('sns')


def lambda_handler(event, context):
    logger.info('Received event: %s', event)

    for record in event['Records']:
        sns_message = record['Sns']

        response = sns_client.publish(
            TopicArn='YOUR TOPIC ARN HERE',
            Subject=sns_message.get('Subject', None),
            Message=sns_message.get('Message', None))

        logger.info('Publish response: %s', response)

    return 'OK'
0 голосов
/ 08 июля 2018

Не нашел документов, в которых явно сказано, что это невозможно, но попытался установить SNS с us-east-1 как действие по тревоге в eu-west- 1 используя CLI, и я получил это:

An error occurred (ValidationError) when calling the PutMetricAlarm operation: Invalid region us-east-1 specified. Only eu-west-1 is supported.

Итак, я предполагаю, что это не поддерживается.

Для получения необходимой вам функциональности вы можете использовать AWS Lambda. Допустим, ваш сервис находится в регионе, где SMS не поддерживается, я буду использовать eu-central-1 в качестве примера.

Настройка будет выглядеть следующим образом:

  1. [ us-east-1 ] Создайте тему SNS, которая может отправлять SMS-сообщения, в регионе, где поддерживается SMS.
  2. [ eu-central-1 Создайте лямбда-функцию, которая отправляет сообщения в тему SNS с шага 1 в регионе, где находится ваша служба.
  3. [ eu-central-1 ] Создайте тему SNS в регионе, где находится ваша служба. Для темы SNS настройте подписку с использованием протокола AWS Lambda и укажите на шаге 2 значение lambda.
  4. [ eu-central-1 ] Создайте свою тревогу в регионе, где находится ваша служба, и добавьте тему SNS из шага 3 в качестве действия.
...