[JAVA] Serverless Framework-Vorlage zum Planen des EC2-Starts / Stopps in Lambda
Dies ist der Artikel zum 16. Tag von AWS Lambda Adventskalender 2017.
Einführung
- Heutzutage habe ich mit einem Container Lambda oder Serverless Framework schon lange nicht mehr berührt, aber da die Anforderung, EC2 um 8 Uhr zu starten und um 20:30 Uhr zu stoppen, aufgetaucht ist, habe ich es mit sls schnell geschafft.
- Die Quelle ist auf [Github] verfügbar (https://github.com/ukitiyan/operation-ec2-instance).
- Der Inhalt ist extrem einfach, daher denke ich, dass er in Eile erreicht werden kann.
Umgebung einrichten
Bereitstellung mit Serverless Framework
Quelle abrufen
- Holen Sie sich die Quelle vom folgenden Github.
$ git clone https://github.com/ukitiyan/operation-ec2-instance.git
In STS importieren (Eclipse)
- Starten Sie STS und wählen Sie den Ordner "operation-ec2-instance" aus, den Sie zuvor von Github im Projektexplorer-> Rechtsklick-> Maven-> Vorhandene Maven-Projekte erhalten haben.
Ändern Sie serverless.yml + Build
- Ändern Sie die Einstellungen für L37 in serverless.yml entsprechend.
- rate: AWS Lambda - Cron-Format für geplantes Ereignis
und beschrieben in "UTC"
- instanceId: Beschreibt die instanceId der Zielinstanz
- Der Zeitplan kann vertikal erhöht werden, um mehrere Instanzen zu unterstützen. (Basierend darauf wird instanceId nicht in der Umgebungsvariablen angegeben.)
serverless.yml
- schedule:
rate: cron(30 11 * * ? *)
input:
goal: stop
instanceId: i-XXXXXXXXXXXXXXXXX
- schedule:
rate: cron(0 23 * * ? *)
input:
goal: start
instanceId: i-XXXXXXXXXXXXXXXXX
- Klicken Sie mit der rechten Maustaste auf das Projekt-> Ausführen als-> Maven-Installation, um es zu erstellen.
- Operation-ec2-instance.1.0.0.jar wird unter target erstellt.
Deploy
- Wie im Beispiel ist der folgende Befehl ein Schuss.
$ 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
- Führen Sie
test
von der Konsole mit dem folgenden Json aus oder warten Sie, bis die eingestellte Zeit erreicht ist, und stellen Sie sicher, dass kein Problem vorliegt.
{
"goal": "stop",
"instanceId": "i-XXXXXXXXXXXXXXXXX"
}
Zusammenfassung
- Nun, es ist eine Niederlage. Ich konnte Eile erkennen.
- Es ist wirklich schön für App Stores, STS zu vervollständigen.