[JAVA] Modèle de framework sans serveur pour planifier le démarrage / l'arrêt d'EC2 dans Lambda
Ceci est l'article du 16ème jour du Calendrier de l'avent AWS Lambda 2017.
introduction
- De nos jours avec un conteneur, je n'ai pas touché à Lambda ou Serverless Framework depuis longtemps, mais comme l'exigence de démarrer EC2 à 8 heures et de s'arrêter à 20h30 est apparue, je l'ai fait rapidement avec sls.
- La source est disponible sur Github.
- Le contenu est extrêmement simple, donc je pense qu'il peut être réalisé à la hâte.
Mise en place de l'environnement
- Veuillez vous référer à Article précédent.
https://qiita.com/ukitiyan/items/945d84282726d3fe2c2f
Déployer avec une infrastructure sans serveur
Obtenir la source
- Obtenez la source du Github suivant.
$ git clone https://github.com/ukitiyan/operation-ec2-instance.git
Importer dans STS (Eclipse)
- Démarrez STS et sélectionnez le dossier "operation-ec2-instance" que vous avez obtenu de Github plus tôt dans l'Explorateur de projet-> Clic droit-> Maven-> Projets Maven existants.
Modifier serverless.yml + Build
- Modifiez les paramètres autour de L37 dans serverless.yml comme il convient.
- taux: AWS Lambda - Format de crâne pour l'événement planifié
et décrit dans ʻUTC`
- instanceId: Décrivez l'instanceId de l'instance cible
- Le calendrier peut être augmenté verticalement pour prendre en charge plusieurs instances. (Sur cette base, instanceId n'est pas spécifié dans la variable d'environnement)
serverless.yml
- schedule:
rate: cron(30 11 * * ? *)
input:
goal: stop
instanceId: i-XXXXXXXXXXXXXXXXX
- schedule:
rate: cron(0 23 * * ? *)
input:
goal: start
instanceId: i-XXXXXXXXXXXXXXXXX
- Faites un clic droit sur le projet-> Exécuter en tant que-> Maven Install pour le construire.
- Operation-ec2-instance.1.0.0.jar sera créé sous target.
Deploy
- Comme dans l'exemple, la commande suivante est un tir.
$ cd operation-ec2-instance
$ serverless deploy -v
Serverless: Packaging service...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
・
・
Serverless: Stack update finished...
Service Information
service: operation-ec2-instance
stage: prod
region: ap-northeast-1
api keys:
None
endpoints:
None
functions:
aws-java-maven-prod-hello: arn:XXXXXXXX
- Faites un
test
depuis la console avec le Json suivant, ou attendez que l'heure définie soit atteinte et assurez-vous qu'il n'y a pas de problème.
{
"goal": "stop",
"instanceId": "i-XXXXXXXXXXXXXXXXX"
}
Résumé
- Eh bien, c'est une défaite. J'ai pu me rendre compte de la hâte.
- C'est vraiment bien pour les magasins d'applications de compléter avec STS.