2013-07-03 4 views
1

Jusqu'à présent, j'ai mis en place une alarme de telle manière:Arrêt d'un AWS EC2 instance avec une alarme CloudWatch en 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); 

Cela crée une alarme pour l'instance spécifiée très bien qui exécute la SNS NotifyMe . Cependant, je suis incapable de trouver une documentation sur la façon d'ajouter à cette alarme, ou peut-être le SNS, pour arrêter ou terminer l'instance lorsque l'alarme passe à l'état d'alarme. Les seules pistes que j'ai est que, bien que .withAlarmActions() accepte uniquement une action SNS ou SQS, SNS peut faire une requête HTTP avec laquelle je peux travailler dans le pire des cas.

Je sais également qu'il est possible d'ajouter cette fonctionnalité à une alarme, car dans l'interface Web AWS, vous pouvez créer une alarme qui arrête ou termine l'instance.

Répondre

2

J'ai trouvé la réponse en demandant dans les forums Amazon. Fondamentalement, j'avais tort dans l'hypothèse que withAlarmActions n'accepte que les actions SNS ou SQS. Il peut également accepter d'arrêter ou de terminer des actions sous la forme de "arn: aws: automate: us-west-2: ec2: stop". La dernière ligne de code éditée à être fixé ressemblerait à:

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

Voici la réponse complète si quelqu'un est curieux. https://forums.aws.amazon.com/thread.jspa?messageID=466061&#466061

Questions connexes