Utilisation de Java avec des arguments CloudWatch AWS Lambda-Implementation-Check

Chose que tu veux faire

Obtenez les arguments enregistrés dans CloudWatch avec Java s'exécutant sur Lambda.

Contexte / histoire

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.)

Utilisation de Java avec AWS Lambda Contents

Préparation à l'éclipse ・ Exécution de l'inscription (un jour) ・ Implementation-Stop / Start EC2

Créer une classe pour le moment

[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)

Accéder aux événements CloudWatch

Créer un objet CloudWatchEvents

//Créer un objet CloudWatchEvents
AmazonCloudWatchEvents event = AmazonCloudWatchEventsClientBuilder.defaultClient();

Obtenez les règles pour les événements CloudWatch

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. image.png

Obtenir des cibles à partir des règles CloudWatch Events

// 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 image.png

Affiner par nom de fonction à partir des cibles à partir des règles de CloudWatch Events

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.) image.png

Récupérez l'argument (entrée) de la cible à partir des règles de CloudWatch Events

target.getInput()

Cette partie de la console image.png

//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.

POM ajouté cette fois

<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

Utilisation de Java avec des arguments CloudWatch AWS Lambda-Implementation-Check
Utilisation de Java avec AWS Lambda-Eclipse Préparation
Utilisation de Java avec AWS Lambda-Implementation-Stop / Launch EC2
Utilisation de Mapper avec Java (Spring)
Valider les arguments à l'aide d'ArgumentCaptor avec mockito
Essayez d'utiliser Redis avec Java (jar)
Développement HTML5 par Java avec TeaVM
Utilisation du service proxy avec l'exploration Java
Utilisation de JupyterLab + Java avec WSL sous Windows 10
AWS Lambda (Lambda) Partie 1 avec Java pour démarrer maintenant
Développement de jeux avec deux personnes utilisant java 2
J'ai essayé d'utiliser OpenCV avec Java + Tomcat
Développement de jeux avec deux personnes utilisant java 1
Essayez de gérer les bibliothèques Java avec AWS CodeArtifact
Développement de jeux avec deux personnes utilisant java 3
Essayez d'utiliser la télécommande Wii en Java
Utilisation de Java avec AWS Lambda-Implementation Tips - Obtenir le nom de l'instance à partir de la réaction et de l'ID d'instance
Interagir avec l'API de message LINE à l'aide de Lambda (Java)
Comment utiliser le framework Java avec AWS Lambda! ??
Spécifiez ClassPath lors de l'utilisation de jupyter + Java avec WSL
En utilisant Gradle avec VSCode, compilez Java → exécutez
Configurer des cookies signés (pour CloudFront) avec des stratégies personnalisées à l'aide du kit AWS SDK pour Java
Utilisation de Java 8 avec Bluemix (sur Liberty Runtime & DevOps Service)
Prise en main des programmes Java à l'aide de Visual Studio Code
Soumettre une tâche à AWS Batch avec Java (Eclipse)
Comment déployer Java sur AWS Lambda avec Serverless Framework
J'ai essayé de faire fonctionner SQS en utilisant AWS Java SDK
[Java] Développement avec plusieurs fichiers en utilisant package et import
Installez java avec Homebrew
Tri à l'aide du comparateur java
Changer de siège avec Java
Installez Java avec Ansible
Utiliser la paire avec OpenJDK
Téléchargement confortable avec JAVA
Pratique de grattage avec Java ②
Changer java avec direnv
[Java] Arguments et paramètres
Pratique du grattage avec Java ①
Téléchargement Java avec Ansible
Raclons avec Java! !!
Construire Java avec Wercker
Conversion Endian avec JAVA
Publiez régulièrement des images de tweets sur Twitter avec AWS Lambda + Java
Agrégation et analyse de journaux (utilisation d'AWS Athena en Java)
Utilisation de plusieurs versions de Java avec Brew sur Mac + jEnv
Enregistrez votre propre image Docker dans ECR à l'aide de l'AWS CLI
Créer un SlackBot avec AWS lambda et API Gateway en Java
PriorityQueue, où j'avais des problèmes avec la méthode Dyxtra en utilisant la liste de contiguïté (java)
Communication socket avec un navigateur Web utilisant Java et JavaScript ②
Essayez Spark Submit to EMR à l'aide du kit AWS SDK pour Java
Communication socket avec un navigateur Web utilisant Java et JavaScript ①
J'ai essayé d'utiliser la bibliothèque CameraX avec Android Java Fragment
Importer / télécharger / supprimer en bloc des données sur S3 à l'aide d'Amazon S3 Client Builder avec AWS SDK pour Java
AWS Elastic Beanstalk # 1 avec Java à partir de zéro - Création d'un environnement d'application Web Java à l'aide de l'interface de ligne de commande EB-