2013-07-03 243 views
1

一個CloudWatch的警報到目前爲止,我已成立了以這樣的方式報警:停止一個AWS EC2實例在Java

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界面上,您可能會創建停止或終止實例的警報。

回答

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&#466061