我希望为我位于 us-west-2 数据中心的 EC2 实例设置通知架构。我已阅读 CloudWatch 和 SNS 文档,并且我知道 SMS 通知仅在 us-east-1 中设置 SNS 主题时可用。
我想知道是否有人找到了一种方法来获取不在 us-east-1 中的实例的 CloudWatch 警报,以便在 us-east-1 中的主题设置上广播?
我希望为我位于 us-west-2 数据中心的 EC2 实例设置通知架构。我已阅读 CloudWatch 和 SNS 文档,并且我知道 SMS 通知仅在 us-east-1 中设置 SNS 主题时可用。
我想知道是否有人找到了一种方法来获取不在 us-east-1 中的实例的 CloudWatch 警报,以便在 us-east-1 中的主题设置上广播?
文档似乎不正确 - 当尝试在 us-west-2 中添加指向 us-east-1 中针对 SMS 功能的主题的新警报时,观察到以下错误(今天在 2014 年 9 月 10 日尝试过):
A client error (ValidationError) occurred when calling the PutMetricAlarm operation: Invalid region us-east-1 specified. Only us-west-2 is supported.
这基于使用 aws cli 运行以下命令(帐号更改为 1234567890):
aws cloudwatch put-metric-alarm --alarm-name "ELB UnHealthy > 0" --alarm-description "ELB UnHealthy > 0" --actions-enabled --ok-actions arn:aws:sns:us-west-2:1234567890:EmailOnly --alarm-actions arn:aws:sns:us-east-1:1234567890:EmailAndSMS --insufficient-data-actions arn:aws:sns:us-west-2:1234567890:EmailOnly --metric-name UnHealthyHostCount --namespace AWS/ELB --statistic Average --dimensions Name=LoadBalancerName,Value=elb-name --period 60 --evaluation-periods 3 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold
我猜之前的答案是来自没有实际测试过的人......是那个或AWS在过去几个月中禁用了引用其他区域sns主题的能力并且忘记更新他们的文档......
您可以设置警报以使用 Amazon Cloudwatch CLI 将通知发送到不同的区域。您只需通过调用在 us-west-2 中创建警报mon-put-metric-alarm
并将您的 us-east-1 主题的 ARN 提供为alarm-actions
.
export AWS_CLOUDWATCH_URL=http://monitoring.us-west-2.amazonaws.com/
mon-put-metric-alarm --alarm-name my-alarm --alarm-description "some desc"
--metric-name CPUUtilization --namespace AWS/EC2
--statistic Average --period 60 --threshold 90
--comparison-operator GreaterThanThreshold
--dimensions InstanceId=i-abcdef --evaluation-periods 3 --unit Percent
--alarm-actions arn:aws:sns:us-east-1:1234567890:my-topic
您可以在此处阅读官方文档:http:
//docs.aws.amazon.com/AmazonCloudWatch/latest/cli/cli-mon-put-metric-alarm.html
并在此处找到 CLI 设置说明:http: //docs.aws.amazon.com/AmazonCloudWatch/latest/cli/SetupCLI.html
这不完全是您所要求的,但我在 us-west-1 区域中有需要 SMS 警报的实例,因此我找到了一种方法来实现它。诀窍是在 us-east-1 区域中创建指标和警报。
在 us-west-1 区域中的实例上,运行以下命令以在 us-east-1 区域中创建指标并向其发布值。
aws cloudwatch put-metric-data
--region us-east-1 --namespace NameSpace --metric-name MetricName
--dimensions InstanceId=i-12345678 --value 10
接下来,在 us-east-1 区域中,创建一个 SNS 主题以及关联的 SMS 订阅。
最后,在 us-east-1 区域中,您创建的主题将可见。根据该指标创建警报,指定您刚刚创建的 SNS 主题。
此警报现在将在触发时通过 SNS 发送 SMS 通知。
我原以为将指标数据从 us-west-1 发送到 us-east-1 可能会产生额外的成本,但事实证明,对于我使用的指标数量和频率而言,成本为零,这是一个单一的指标每分钟发送一次。
如果您尝试在默认区域以外的区域创建警报,则必须使用 --region 选项显式指定它(尽管 ARN 中已经隐含了这一点)。