Utilisation de Java avec AWS Lambda-Implementation-Stop / Launch EC2

Chose que tu veux faire

Démarrer / arrêter EC2 avec Java s'exécutant sur Lambda (Essayez d'écrire ↓ en Java et personnalisez-le un peu. https://aws.amazon.com/jp/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/)

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

Depuis que j'ai rendu possible la création d'un exemple de classe dans Eclipse la dernière fois, Utilisez-le pour créer un projet Lambda avec le type d'entrée "Personnalisé". image.png

Voici ce que vous pouvez faire avec

LambdaFunctionHandler.java


	package com.amazonaws.lambda.demo;

	import com.amazonaws.services.lambda.runtime.Context;
	import com.amazonaws.services.lambda.runtime.RequestHandler;

	public class LambdaFunctionHandler implements RequestHandler<Object, String> {

	    @Override
	    public String handleRequest(Object input, Context context) {
	        context.getLogger().log("Input: " + input);

	        // TODO: implement your handler
	        return "Hello from Lambda!";
	    }
	}

Depuis la création de la méthode handleRequest, écrivez le contenu que vous souhaitez exécuter avec Lambda. Voir ci-dessous pour la description du gestionnaire https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/java-handler.html Vous pouvez recevoir json comme argument. https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/java-handler-pojo.html

Aller à EC2

Créer un objet EC2

//Créer un objet EC2
AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard().withRegion("us-east-1").build();

Vous pouvez maintenant travailler avec EC2 dans la région des arguments. Voir ici pour le code de région https://docs.aws.amazon.com/ja_jp/general/latest/gr/rande.html Je ne vais pas l'utiliser cette fois, mais comme Enum est également préparé sous le nom Regions, les classes ci-dessous peuvent également être utilisées. com.amazonaws.regions.Regions

Lancer une instance

//Démarrez l'ID d'instance stocké dans la liste d'arguments
StartInstancesResult ret = ec2.startInstances(new StartInstancesRequest(instanceIdList));

Vous pouvez maintenant lancer l'ID d'instance dans la liste.

Arrêtez l'instance

//Arrêtez l'ID d'instance stocké dans la liste d'arguments
StopInstancesResult ret = ec2.stopInstances(new StopInstancesRequest(instanceIdList));

Vous pouvez arrêter l'ID d'instance de List de la même manière que le démarrage. AmazonWebServiceResult est hérité par les valeurs de retour de start et stop, vous pouvez donc procéder comme suit.

AmazonWebServiceResult<?> ret 

Voici le produit fini

Présentez l'argument comme ↓ pour pouvoir opérer sur plusieurs régions et instances.

{"targets":[
    {
         "action":"start"
        ,"targetReagion":"us-east-1"
        ,"targetInstances":"x-xxxxxxxxxxxxx"
    }
    ,{
         "action":"stop"
        ,"targetReagion":"ap-northeast-1"
        ,"targetInstances":"y-yyyyyyyyyyy"
    }
]}

Dans l'exemple de cet argument, démarrez une instance appelée x-xxxxxxxxxxxxx dans le nord de la Virginie, Arrêtez l'instance y-yyyyyyyyyyy à Tokyo.

ActionEC2Instances


package com.amazonaws.lambda.demo;

import java.util.ArrayList;
import java.util.List;

import com.amazonaws.AmazonWebServiceResult;
import com.amazonaws.services.ec2.AmazonEC2;
import com.amazonaws.services.ec2.AmazonEC2ClientBuilder;
import com.amazonaws.services.ec2.model.StartInstancesRequest;
import com.amazonaws.services.ec2.model.StopInstancesRequest;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

import com.amazonaws.lambda.demo.ActionEC2Instances.Input;
import com.amazonaws.lambda.demo.ActionEC2Instances.Output;

public class ActionEC2Instances implements RequestHandler<Input, Output> {

	@Override
	public Output handleRequest(Input input, Context context) {
		context.getLogger().log("Input : " + input);
		Output output = new Output();

		for (Target action : input.targets) {
			output.result.add(doAction(action));
		}

		return output;
	}

	private String doAction(Target target) {
		AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard().withRegion(target.targetReagion).build();
		List<String> instances = target.targetInstances;

		AmazonWebServiceResult<?> ret = null;
		if ("start".equals(target.action)) {
			ret = ec2.startInstances(new StartInstancesRequest(instances));

		} else if ("stop".equals(target.action)) {
			ret = ec2.stopInstances(new StopInstancesRequest(instances));

		} else {
			return "Unexpected Action";

		}
		return ret.toString();
	}

	public static class Input {
		public List<Target> targets;

		@Override
		public String toString() {
			StringBuffer sbf = new StringBuffer();
			for (Target target : targets) {
				sbf.append(target);
			}
			return sbf.toString();
		}
	}

	public static class Target {

		private String action;
		private String targetReagion;
		private List<String> targetInstances;

		public String getAction() {
			return action;
		}

		public void setAction(String action) {
			this.action = action;
		}

		public String getTargetReagion() {
			return targetReagion;
		}

		public void setTargetReagion(String targetReagion) {
			this.targetReagion = targetReagion;
		}

		public List<String> getTargetInstances() {
			return targetInstances;
		}

		public void setTargetInstances(List<String> targetInstances) {
			this.targetInstances = targetInstances;
		}

		@Override
		public String toString() {
			StringBuffer sbf = new StringBuffer();
			sbf.append("{action :").append(action).append(" targetReagion :").append(targetReagion)
					.append(" targetInstances :").append(targetInstances).append("}");

			return sbf.toString();
		}

	}

	public static class Output {
		public List<String> result = new ArrayList<String>();
	}
}

Ajout de pom

<dependency>
	<groupId>com.amazonaws</groupId>
	<artifactId>aws-java-sdk-core</artifactId>
	<version>1.11.719</version>
</dependency>
<dependency>
	<groupId>com.amazonaws</groupId>
	<artifactId>aws-lambda-java-events</artifactId>
	<version>1.3.0</version>
</dependency>
<dependency>
	<groupId>com.amazonaws</groupId>
	<artifactId>aws-lambda-java-core</artifactId>
	<version>1.1.0</version>
</dependency>
<dependency>
	<groupId>com.amazonaws</groupId>
	<artifactId>aws-java-sdk-ec2</artifactId>
	<version>1.11.602</version>
	<scope>compile</scope>
</dependency>

Recommended Posts

Utilisation de Java avec AWS Lambda-Implementation-Stop / Launch EC2
Utilisation de Java avec AWS Lambda-Eclipse Préparation
Utilisation de Java avec des arguments CloudWatch AWS Lambda-Implementation-Check
Utilisation de Mapper avec Java (Spring)
Essayez d'utiliser Redis avec Java (jar)
Développement HTML5 par Java avec TeaVM
Utilisation du service proxy avec l'exploration Java
Jusqu'à INSERT S3 objet dans EC2 DB avec Lambda @ java: AWS
Déploiement facile avec Capistrano + AWS (EC2) + Rails
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
Lancez l'environnement de vérification Java localement avec Vagrant
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
Déployer laravel à l'aide de docker sur EC2 sur AWS ① (Créer une instance EC2)
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
Lancez EC2 Rails
Changer de siège avec Java
Installez Java avec Ansible
Utiliser la paire avec OpenJDK
Lancez MariaDB avec Docker
Téléchargement confortable avec JAVA
Pratique de grattage avec Java ②
Changer java avec direnv
Pratique du grattage avec Java ①
Téléchargement Java avec Ansible
Raclons avec Java! !!
Construire Java avec Wercker
Conversion Endian avec JAVA
Déployez laravel à l'aide de docker sur EC2 sur AWS ② (Elastic IP acquisition-binding)
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
Déployer laravel à l'aide de docker sur EC2 sur AWS ④ (git clone-deploy, migration)
Créer un SlackBot avec AWS lambda et API Gateway en Java
J'ai essayé le déploiement automatique avec CircleCI + Capistrano + AWS (EC2) + Rails
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