[PYTHON] Ich habe versucht, die Kosten zu senken, indem ich EC2 in einer Charge mit AWS Lambda gestartet / gestoppt habe

Da es eine große Anzahl von EC2-Instanzen gibt, die ich normalerweise für Entwicklung und Test verwende, verwende ich cron, um den Start und Stopp von Instanzen zu planen und sie zu möglichst geringen Kosten zu verwenden. Ich habe AWS Lambda überhaupt nicht berührt, daher dachte ich, es sei eine gute Gelegenheit, von der Cron-Charge zu migrieren. Deshalb habe ich einige Änderungen für AWS Lambda vorgenommen, damit ich sie offenlegen kann.

Was du tun kannst

** "Ich möchte die für die Entwicklung usw. verwendete Instanz nur während der Geschäftszeiten starten" **, ** "Ich möchte sie regelmäßig nur an einem bestimmten Tag starten" **. Um die Instanz festzulegen, fügen Sie einfach das in die Einstellungsdatei geschriebene Tag in das Tag der Instanz ein und löschen Sie das Tag, um es freizugeben.

Vorbereitung

Da die Bibliotheken boto und pytz erforderlich sind, installieren Sie sie auf derselben Ebene wie ec2_scheduler.py.

$ pip install boto -t path/to/ec2_scheduler/
$ pip install pytz -t path/to/ec2_scheduler/

Es ist geplant, dass nur Instanzen ausgeführt werden, die dieselben Tags wie Tag-Key und Tag-Wert in der Einstellungsdatei haben. Wenn Sie die Zeitplanausführung stoppen möchten, löschen Sie einfach das Tag.

Die Einstellungselemente sind wie folgt (Dateiname kann geändert werden)

schedule.cfg


[Develop]
region: ap-northeast-1 <=Region
type: daily <=Ausführungsart(Da es nur täglich gibt, ist es so wie es ist)
tag-key: AWS-Schedule <=Name des Instanz-Tags
tag-value: Dev-Weekday  <=Tag-Wert
start: 9:00  <=Anlaufen
stop: 19:00  <=Halt
skip: saturday, sunday <=Geben Sie den Tag an, der nach Tag übersprungen werden soll
timezone: Asia/Tokyo  <=Zeitzonenspezifikation

↓ Sie können mehrere Zeitpläne in der Einstellungsdatei festlegen
[TestServer]
region: ap-northeast-1
...
...

Bereiten Sie die Lambda-Funktion für die Ausführung vor

lambda_function.py


# -*- coding: utf-8 -*-

from ec2_scheduler import EC2Scheduler

def lambda_handler(event, context):
    access_id = 'AWS Access ID'
    secret_key = 'AWS geheimer Schlüssel'
    conf = 'schedule.cfg'

    schedule = EC2Scheduler(access_id=access_id, secret_key=secret_key, conf=conf)
    schedule.job()

Wenn Sie die Lambda-Funktion bereit haben, komprimieren Sie die vorbereitete Datei. (Im selben Verzeichnis ausführen)

cd path/to/ec2_scheduler
zip -r ec2_scheduler.zip .

AWS Lambda-Einstellungen

Erstellen Sie eine neue Lambda-Funktion in AWS Lambda in der AWS Management Console [Lambda] ** Wählen Sie [Lambda-Funktion erstellen] -> [Python2.7] -> [Lambda-Kanarienvogel] ** [Configure event sources] ** Wählen Sie [Ereignisquellentyp] -> [CloudWatch-Ereignisse - Zeitplan] ** ** Geben Sie gegebenenfalls einen Namen in [Regelname] ** ein ** Wählen Sie den Ausführungszeitplan mit [Zeitplanausdruck] aus ** [Configure function] Ein passender Name für ** [Name] ** [Runtime] -> [Python 2.7] ** Laden Sie die zuvor vorbereitete Zip-Datei mit [Lambda-Funktionscode] hoch -> [ZIP-Datei hochladen] ** Geben Sie den Handlernamen in ** [Handler \ *] ** ein (im Beispiel "lambda_function.lambda_handler"). [Role] -> [Basic execution role] ** [Erweiterte Einstellungen] ** Nehmen Sie die entsprechenden Einstellungen vor

Der Rest sollte mit ** [Funktion erstellen] ** erstellt werden

Überprüfen Sie die Lambda-Funktion nach dem Erstellen mit Test. Der Test sollte erfolgreich sein. Sie müssen also nur das zuvor in ** [Ereignisquelle] ** festgelegte ScheduleEvent auf ** Status aktiviert ** setzen.

Recommended Posts

Ich habe versucht, die Kosten zu senken, indem ich EC2 in einer Charge mit AWS Lambda gestartet / gestoppt habe
Ich habe versucht, Twitter Scraper mit AWS Lambda zu verwenden, aber es hat nicht funktioniert.
Ich habe versucht, mit AWS Lambda einen AMI zu erhalten
Ich möchte Lambda mit Python auf Mac AWS!
Ich habe versucht, den Ipython-Cluster unter AWS auf das Minimum zu starten
xgboost (Python) in einer von AWS Lambda erstellten EC2 Spot-Instanzumgebung
Vorsichtsmaßnahmen beim Ausführen von Python unter EC2 über AWS Lambda (Befehl ausführen)
Ich habe versucht, schlechte Tweets regelmäßig mit der AWS Lambda + Twitter API zu löschen
Ich habe versucht, Zabbix Server über einen Ausführungsfehler der AWS Lambda-Funktion zu informieren
Ich habe einen Bot erstellt, um ihn auf Twitter zu posten, indem ich mit AWS Lambda eine dynamische Site im Internet abgekratzt habe (Fortsetzung).
Ich habe versucht, die Daten des Laptops durch Booten unter Ubuntu zu retten
Was ich durch die Bereitstellung von Django auf EC2 gefunden habe
Ich habe versucht, durch Schaben ein Bild zu bekommen
Ich habe versucht, AWS Lambda mit anderen Diensten zu verbinden
Ich habe versucht, Drachenkugeln nach Adalin zu klassifizieren
Ich wollte die Google-Tabelle mit AWS Lambda betreiben, also habe ich es versucht [Teil 2]
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
So konfigurieren Sie Layer auf Lambda mit AWS SAM
[AWS EC2] So installieren Sie Maven unter Amazon Linux 2
AWS Lambda unterstützt jetzt Python, also habe ich es versucht
Ich habe versucht, Scrapy auf Anaconda zu installieren und konnte es nicht
[Einführung in AWS] Ich habe versucht, mit der Sprach-Text-Konvertierung zu spielen ♪
Ich habe versucht, die Sprachen, die Anfänger von nun an lernen sollten, absichtlich zusammenzufassen
Ich habe versucht zu debuggen.
Ich habe AWS Iot ausprobiert
Gepostet als Anhang zu Slack auf AWS Lambda (Python)
[AWS] Ich habe versucht, EC2, RDS, Django zu verwenden. Umweltbau ab 1
Ich habe versucht, die Erkennung von Anomalien durch spärliches Strukturlernen zu implementieren
Ich habe versucht, mit "Syncthing" Dateien auf mehreren PCs zu synchronisieren
[Einführung in die Simulation] Ich habe versucht, durch Simulation einer Koronainfektion zu spielen ♬
[Django] Ich habe versucht, Zugriffsbeschränkungen durch Klassenvererbung zu implementieren.
[Einführung in Pandas] Ich habe versucht, die Austauschdaten durch Dateninterpolation zu erhöhen ♬
Ich habe versucht, MNIST nach GNN zu klassifizieren (mit PyTorch-Geometrie).
[AWS EC2] Einstellungen, die Sie unter Amazon Linux 2 vornehmen möchten
Erstellen einer Umgebung zum Ausführen von Python-Programmen unter AWS EC2
Ich habe versucht, Musik im Neural Network in Dur / Moll zu klassifizieren
Ich habe versucht, das Python-Skript unter Windows 10 von 2.7.11 auf 3.6.0 zu ändern
[Python] Ermöglicht den Import von pip3-Paketen in AWS Lambda
Beispielskript zur Überwachung des Lastdurchschnitts mit CloudWatch unter AWS EC2