我正在尝试通过位于不同区域的CloudWatch警报通知SNS主题。原因是我想要SMS警报,而该警报在我的服务所在的地区不可用。如果输入订阅的ARN并将更改保存在控制台中,则会收到“保存警报时出错。请重试。”重试无济于事。在本地使用主题确实可以,但这不是我所需要的。
是否可以通过其他方式通知主题?如果没有,还有其他简单的方法可以实现我的目标吗?
答案 0 :(得分:6)
找不到任何明确表示无法完成此操作的文档,但尝试将 us-east-1 中的SNS设置为 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 :(得分:1)
要添加到@Tartaglia的答案中,以下是使用Python 3的这种lambda函数的来源,由于没有时间妥善处理,所以从各种来源将它们拼凑在一起:
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'