Obtenez les arguments enregistrés dans CloudWatch avec Java s'exécutant sur Lambda.
La fonction Lambda qui démarre et arrête EC2 créée dans l'article précédent, CloudWatchEvents Cron a été conçu pour démarrer à plusieurs heures, par exemple 8h00, 9h00, 17h00 et 18h00. Mais j'ai oublié quelle instance a été lancée à quelle heure, J'ai dû vérifier les arguments enregistrés dans CloudWatch Events un par un. C'était un problème, j'ai donc créé une fonction pour obtenir les arguments. (Je voulais éviter de prendre des notes car je devais synchroniser les arguments enregistrés avec les notes.)
・ Préparation à l'éclipse ・ Exécution de l'inscription (un jour) ・ Implementation-Stop / Start EC2
[Identique à la dernière fois](https://qiita.com/t_ookubo/items/3b12bd985a65a73b4c59#%E3%81%A8%E3%82%8A%E3%81%82%E3%81%88%E3%81%9A % E3% 82% AF% E3% 83% A9% E3% 82% B9% E4% BD% 9C% E6% 88% 90)
//Créer un objet CloudWatchEvents
AmazonCloudWatchEvents event = AmazonCloudWatchEventsClientBuilder.defaultClient();
ListRulesResult retRule = event.listRules(new ListRulesRequest());
for(Rule rule : retRule.getRules()) {
// rule.getName()、rule.getDescription()
}
Cette partie de la console Comme le nom de la méthode l'indique, vous pouvez obtenir le nom et la description de la règle.
// get target information from rule
ListTargetsByRuleRequest req = new ListTargetsByRuleRequest().withRule(rule.getName());
ListTargetsByRuleResult retTarget = event.listTargetsByRule(req);
List<Target> cloudWatchTargets = retTarget.getTargets();
for (Target target : cloudWatchTargets) {
// do loop each cloud watch rule's target
}
Cette partie de la console
target.getArn()
Désormais, chaque cible sera renvoyée sous la forme ci-dessous arn:aws:lambda:region:xxxxxx:function:functionName
Si restreint avec la fin avec
if (target.getArn().endsWith("Nom de la fonction que vous souhaitez affiner")) {
//
}
Cette partie de la console (dans le cas de cet écran de console, il n'y en a qu'un seul en premier lieu, donc peu importe que vous le fassiez ou non.)
target.getInput()
Cette partie de la console
//Puisque l'entrée de cloudWatch est décrite dans json, convertir de json en bean
SomethingBean cloudWatchInput = Jackson.fromJsonString(target.getInput(), SomethingBean.class);
Après cela, formatez le nom de la règle CloudWatchEvents, la description, les arguments, etc. que vous avez acquis jusqu'à présent dans la forme que vous souhaitez générer et renvoyez-le en sortie pour terminer.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-cloudwatch</artifactId>
<version>1.11.99</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-events</artifactId>
<version>1.11.719</version>
<scope>compile</scope>
</dependency>
Recommended Posts