1

到目前为止,我已经以这种方式设置了警报:

dim = new Dimension()
        .withName("InstanceId")
        .withValue(hashedId);

alarmreq = new PutMetricAlarmRequest()
              .withDimensions(dim)
              .withMetricName(metricName)
              .withNamespace(nameSpace)
              .withAlarmName(alarmName)
              .withActionsEnabled(true)
              .withStatistic(statistic)
              .withThreshold(threshold)
              .withComparisonOperator("GreaterThanThreshold")
              .withPeriod(period)
              .withEvaluationPeriods(evaluationPeriods)
              .withAlarmActions("arn:aws:sns:us-west-2:xxxxxxxxx:NotifyMe");

gCloudWatch.putMetricAlarm(alarmreq);

这将为执行 SNS NotifyMe 的指定实例创建一个警报。但是,我找不到有关如何添加到此警报或 SNS 以在警报进入警报状态时停止或终止实例的任何文档。

我拥有的唯一线索是,虽然 .withAlarmActions() 只接受 SNS 或 SQS 操作,但 SNS 可以发出 HTTP 请求,在最坏的情况下我可以使用它。

另外我知道可以将此功能添加到警报中,因为在 AWS Web 界面上,您可以创建一个警报来停止或终止实例。

4

1 回答 1

2

通过在亚马逊论坛中提问找到了答案。基本上,我认为 withAlarmActions 只接受 SNS 或 SQS 操作是错误的。它还可以接受“arn:aws:automate:us-west-2:ec2:stop”形式的停止或终止操作。编辑后要修复的最后一行代码如下所示:

.withAlarmActions("arn:aws:sns:us-west-2:xxxxxxxxx:NotifyMe", "arn:aws:automate:us-west-2:ec2:stop");

如果有人好奇,这里是完整的答案。 https://forums.aws.amazon.com/thread.jspa?messageID=466061᲍

于 2013-07-04T15:43:52.803 回答