Ich denke, es gibt einige Anforderungen, die Python Script regelmäßig auf AWS ausführen möchten. Es kann realisiert werden, indem EC2 eingerichtet und mit cron ausgeführt wird. Hier werde ich jedoch einen Einblick geben, wie es mithilfe der AWS Data Pipeline realisiert werden kann.
Beachten Sie jedoch, dass der Ausführungszyklus als Einschränkung der Datenpipeline nur auf 15 Minuten oder mehr festgelegt werden kann und nicht jede Minute ausgeführt werden kann.
Es ist auch möglich, die Lambda-Funktion in [Data Pipeline] regelmäßig auszuführen. ](Http://qiita.com/taka4sato/items/e98690742d0092dd8779) Wenn das Skript Node.js oder Java ist, ist es meiner Meinung nach einfacher, dies auf diese Weise zu tun.
Der Fluss der einzustellenden Elemente ist wie folgt. Es wird davon ausgegangen, dass das Python-Skript selbst bereits fertiggestellt wurde.
Erstellen Sie einen S3-Bucket, um das Python-Skript zu platzieren. Natürlich kann der vorhandene Eimer verwendet werden. Gehen Sie zu AWS Console → S3 und führen Sie die folgenden Schritte aus, um einen S3-Bucket zu erstellen.
Führen Sie die folgenden Schritte aus, um Python Script in S3 Bucket hochzuladen.
datapipeline_test.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import datetime
print 'Script run at ' + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
Gehen Sie zu AWS Console → Datenpipeline und erstellen Sie eine Datenpipeline, indem Sie die folgenden Schritte ausführen.
Test Pipeline
)sudo yum -y install python-devel gcc && sudo update-alternatives --set python /usr/bin/python2.7 && curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" && sudo python ./get-pip.py && pip install boto3 --user && aws s3 cp s3://datapipeline-python-test/datapipeline_test.py ./datapipeline_test.py && cat datapipeline_test.py && python ./datapipeline_test.py
Wählen Sie mit dieser Einstellung "Architekt bearbeiten", um einmal eine Datenpipeline zu erstellen. Nach der Erstellung werden zwei IAM-Rollen in der IAM-Rolle erstellt: "DataPipelineDefaultResourceRole" und "DataPipelineDefaultRole".
Da einige Berechtigungen unmittelbar nach dem Erstellen der IAM-Rolle nicht ausreichen, erteilen Sie S3 Zugriffsberechtigungen für "DataPipelineDefaultResourceRole" und "DataPipelineDefaultRole". Gehen Sie zu AWS Console → Identity & Access Management → Rollen und führen Sie die folgenden Schritte aus, um Berechtigungen zu erteilen.
Legen Sie die gleichen Berechtigungen für "DataPipelineDefaultRole" fest
Gehen Sie zu AWS Console → Datenpipeline und aktivieren Sie die soeben erstellte Datenpipeline.
Die periodische Ausführung der Datenpipeline ist jetzt aktiviert. Es läuft alle 15 Minuten, also warten wir eine Weile.
Gehen Sie zu AWS Console → Datenpipeline, wählen Sie "Test Pipeline", wählen Sie "Stdout" unter "CliActivity" → "Registerkarte" Versuche "und bestätigen Sie, dass die aktuelle Zeit von Python Script ausgegeben wird.
Ich habe nicht viel getan, aber ich werde den Inhalt des obigen ShellScript ergänzen.
sudo yum -y install python-devel gcc
Zusätzliche Middleware ist im Betriebssystem enthalten (vorausgesetzt, einige Python-Bibliotheken erfordern gcc usw.). Es kann gelöscht werden, wenn die Amazon Linux Standard Middleware ausreicht
sudo update-alternatives --set python /usr/bin/python2.7
Python 2.7 ist angegeben. Vermeiden Sie Standard-Python-Version kann Fehler in der Bibliothek verursachen
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" && sudo python ./get-pip.py
Pip ist enthalten. Es kann gelöscht werden, wenn die Standard-Python-Bibliothek ausreicht
pip install boto3 --user
Ich habe eine zusätzliche Python-Bibliothek mit pip eingefügt. Bei Verwendung von pip ist aufgrund der Berechtigung das Argument "--user" erforderlich. Wenn Sie mehrere Bibliotheken einfügen möchten, können Sie "pip install request boto3 numpy --user" usw. auflisten.
aws s3 cp s3://datapipeline-python-test/datapipeline_test.py ./datapipeline_test.py
Kopieren des Python-Skripts nach Local
cat datapipeline_test.py
Der Inhalt der von S3 heruntergeladenen Datei wird angezeigt und kann bei Bedarf gelöscht werden.
python ./datapipeline_test.py
Schließlich führe ich Python Script aus
Es ist auch möglich, Alarm-E-Mails mit der AWS SNS-Funktion zu überspringen, wenn Python Script fehlschlägt. Ich werde die Erklärung von AWS SNS selbst weglassen, aber ich werde die Einstellungen in der Datenpipeline kurz ergänzen.
Typ
bis SnsAlarm
Topic Arn
Es ist in Ordnung, wenn Sie einstellen. Es ist möglich, AWS SNS zum Zeitpunkt des Skriptfehlers oder -erfolgs auszulösen. Vergessen Sie nicht, die Rollenberechtigung zum Ausführen von Sns zu erteilen.
Wenn Python Script regelmäßig mit Data Pipeline ausgeführt werden kann, müssen Hosts nicht einzeln für die regelmäßige Ausführung gesichert oder verwaltet werden, und es werden verschiedene Fortschritte erzielt.
Recommended Posts