Vorsichtsmaßnahmen beim Ausführen von Python unter EC2 über AWS Lambda (Befehl ausführen)

http://qiita.com/tf_qiita/items/90b4ec315d179b5d9b9c

Beachten Sie, dass das obige Problem behoben wurde.

Schritt 1: Geben Sie die Ausführungsversion an

Wenn Sie den EC2-Ausführungsbefehl von Lambda verwenden, führt der Ausführungsbefehl die im Anfangszustand der Instanz festgelegte Version aus, nicht die ausführbare Python-Datei **, die auf der Ziel-EC2-Instanz aktiviert ist. (Für Amazon Linux ist es derzeit 2.7.12)

Geben Sie daher beim Ausführen einer Version von Python, die sich vom Standard unterscheidet, die Ausführungsdatei mit dem vollständigen Pfad im in Lambda beschriebenen Ausführungsbefehl an (siehe unten). Im folgenden Beispiel wird die in pyenv erstellte Umgebung angegeben. Da Lambda als root ausgeführt wird, wird pyenv als root erstellt. Wenn Sie es jedoch direkt angeben und ausführen, sollten Sie einen Benutzer für die Ausführung erstellen.

lambda.py


ssm.send_command(
    InstanceIds = instances,
    DocumentName = "AWS-RunShellScript",
    Parameters = {
        "commands": [
            "/root/.pyenv/versions/anaconda3-4.4.0/bin/python /work/hoge.py", 
        ],
        "executionTimeout": ["3600"]
    },
)

Schritt 2: Bibliothekspfad hinzufügen

In Schritt 1 wird die erforderliche Version (Umgebung) ausgeführt, ohne den Pfad der auszuführenden Python zur Umgebungsvariablen hinzuzufügen, sodass die Bibliothek nicht so importiert werden kann, wie sie ist. Daher können Sie die Bibliothek laden, indem Sie den Pfad site-packages am Anfang des von Lambda aufgerufenen EC2-Seitenskripts hinzufügen. Im folgenden Beispiel wird "Site-Pakete" in der in Schritt 1 angegebenen Umgebung angegeben.

ec2.py


import sys
sys.path.append("/root/.pyenv/versions/anaconda3-4.4.0/lib/python3.6/site-packages/")

Impressionen

Von Anfang an nahm ich an, dass es sich um ein Problem auf dem Weg handelt, aber es dauerte einige Zeit, um die Ursache auf der Lambda-Seite und der EC2-Seite zu isolieren. Ist es auch einzigartig für verwaltete Dienste, z. B. die Verschwendung von Aufwand bei der Untersuchung, ob die Version als Funktion bereitgestellt wird? Es gab einen Fehler. Ähnliche Stolpersteine auf niedriger Ebene sind in Zukunft vorgesehen, aber in diesem Fall möchte ich mich an diese Erfahrung erinnern und zu den Grundlagen zurückkehren.

Recommended Posts

Vorsichtsmaßnahmen beim Ausführen von Python unter EC2 über AWS Lambda (Befehl ausführen)
So erstellen Sie AWS Lambda-Schichten, wenn Selen × Chrom auf AWS Lambda ausgeführt wird
[Version 2020] So installieren Sie Python3 auf EC2 von AWS
Das Modul kann nicht in Python auf EC2 importiert werden, das von AWS Lambda ausgeführt wird
Überprüfen Sie types_map, wenn Sie Mimetypen mit AWS Lambda (Python) verwenden.
Beachten Sie beim Initialisieren einer Liste in Python
Ich möchte Lambda mit Python auf Mac AWS!
Versuchen Sie, Schedule auszuführen, um Instanzen in AWS Lambda (Python) zu starten und zu stoppen.
Eine kleine Geschichte, die beim Schreiben von Twilio-Anwendungen mit Python auf AWS Lambda süchtig macht
Erstellen einer Umgebung zum Ausführen von Python-Programmen unter AWS EC2
[Python] Ermöglicht den Import von pip3-Paketen in AWS Lambda
[Lambda] [Python] Von Lambda auf Twitter posten!
Führen Sie Python planmäßig auf AWS Lambda aus
Aktualisieren Sie Mac Python von 2 auf 3
xgboost (Python) in einer von AWS Lambda erstellten EC2 Spot-Instanzumgebung
Hinweise zur Verwendung der Tab-Vervollständigung beim interaktiven Ausführen von Python unter Windows
Alles vom Erstellen einer Python-Umgebung bis zur Ausführung unter Windows
Ändern Sie die AWS EC2-Instanz von t2 in t3
Migrieren Sie Django-Anwendungen, die unter Python 2.7 ausgeführt werden, auf Python 3.5
Herstellen einer Verbindung von Python zu MySQL unter CentOS 6.4
Zugriff auf RDS von Lambda (Python)
[Python] Führen Sie Headless Chrome unter AWS Lambda aus
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
ImportError beim Versuch, das gcloud-Paket mit der AWS Lambda Python-Version zu verwenden
Dinge, auf die Sie beim Erstellen einer Python-Umgebung auf einem Mac achten sollten
Übergeben Sie beim Ausführen einer Python-Shell von Electron mehrere Argumente, um Python auszuführen.
So starten Sie Python (Flask) beim Start von EC2
Führen Sie regelmäßig Python-Programme auf AWS Lambda aus
Zu beachtende Punkte beim Wechsel von NAOqi OS 2.4.3 zu 2.5.5
Python-Entwicklung unter Ubuntu unter AWS EC2 (mit Jupyter Lab)
Hinweis zur Codierung bei LANG = C in Python
Python Hinweis: Wenn Sie einer Zeichenfolge einen Wert zuweisen
[AWS / Lambda] Laden einer externen Python-Bibliothek
Zusammenfassung des Studiums von Python zur Verwendung von AWS Lambda
Was ich beim Update von Python 2.6 auf 2.7 gemacht habe
Ich habe versucht, die Kosten zu senken, indem ich EC2 in einer Charge mit AWS Lambda gestartet / gestoppt habe
Erstellen Sie Einstellungen in Terraform, um Nachrichten von AWS Lambda Python3.8 an Slack zu senden
Ein Hinweis, dem ich beim Ausführen von Python mit Visual Studio Code verfallen war
Dinge, die Sie bei der Entwicklung von Crawlern in Python beachten sollten
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
# 2 Erstellen Sie eine Python-Umgebung mit einer EC2-Instanz von AWS (ubuntu18.04).
Terraform konfiguriert, um AWS Lambda von Amazon SQS aus zu starten
Einstellungen zum Generieren animierter GIFs aus Python auf dem Mac
Dinge, die Sie beim Kopieren von Python-Listen beachten sollten
Python - Hinweise beim Konvertieren vom Typ str in den Typ int
So konfigurieren Sie Layer auf Lambda mit AWS SAM
Vom Kauf eines Computers bis zur Ausführung eines Programms auf Python
Stellen Sie die Python 3-Funktion mit Serverless Framework unter AWS Lambda bereit
Unterstützung für Python 2.7-Laufzeit auf AWS Lambda (ab 2020.1)
Übergeben von Argumenten beim Aufrufen von Python-Skripten über Blender in der Befehlszeile
Beachten Sie, dass Python ein Daemon ist
Tweet von AWS Lambda
Ausführung von MINST in TensorFlow 2.0 und Visualisierung in TensorBoard (Version 2019)
Mercurial funktioniert nach der Migration von Python 2 auf Python 3 nicht mehr (Hinweis)
[AWS EC2] So installieren Sie Maven unter Amazon Linux 2
Dinge, die Sie bei der Verarbeitung von Zeichenfolgen in Python2 beachten sollten