[PYTHON] Stellen Sie die Lambda-Funktion ein und lassen Sie sie mit S3-Ereignissen arbeiten!

Was ist Lambda?

Als einer der von AWS bereitgestellten Dienste kann ein Dienst ohne Serververwaltung ausgeführt werden.

Wenn Sie beispielsweise Lambda nicht verwenden, wird der Prozess erst ausgeführt, nachdem Sie einen Server mit EC2 erstellt, die zur Ausführung des Prozesses erforderliche Middleware und Sprache installiert und die Umgebung festgelegt haben.

Lambda ermöglicht jedoch die Ausführung nur durch Schreiben eines Prozesses, ohne einen solchen Server bereitzustellen.

Dieser Wille ★ Sie müssen den Server nicht selbst verwalten und warten ★ Da Ihnen nur die Zeit in Rechnung gestellt wird, in der die Verarbeitung ausgeführt wird, können Sie die Kosten je nach Häufigkeit der Verarbeitung erheblich senken ★ Es ist sehr praktisch für die AWS-Hauptarchitektur, da es leicht mit anderen AWS-Diensten verknüpft werden kann. Es gibt einen Verdienst.

Was ist ein Auslöser?

Es ist notwendig, einen Trigger zu setzen, um den geschriebenen Prozess auszuführen. Es kann mit allen AWS-Diensten verknüpft werden und wird normalerweise ausgeführt, wenn in CloudWatch ein Alarm auftritt, wenn Daten im Kinesis-Datenstrom vorhanden sind oder wenn eine Datei in S3 abgelegt wird.

Mit anderen Worten, Lambda ist ein Dienst, der funktioniert, wenn Sie nur ** auszuführende Bedingungen ** und ** auszuführende Prozesse ** schreiben.

Ich möchte es tatsächlich einstellen!

Schreiben wir nun einen Prozess zum Hochladen der Datei auf s3 und bestätigen, dass sie hochgeladen wurde.

1. Melden Sie sich bei der AWS-Konsole an und klicken Sie auf dem Lambda-Bildschirm auf "Funktion erstellen".

Lambda stellt die Funktion für jede Region ein. Es gibt kein Problem mit S3, aber wenn Sie eine Verbindung zu Diensten herstellen, die von anderen Regionen betroffen sind, wählen Sie dieselbe Region aus. image.png

2. Wählen Sie "Aus 1 erstellen" und stellen Sie "Funktionsname", "Laufzeit" und "Ausführungsrolle" ein.

Dieses Mal werden wir Python 3.7 verwenden. Die Rolle sollte "Neue Rolle mit grundlegenden Lambda-Berechtigungen erstellen" lauten. Es ist kein Problem, vorhandene Rollen zu verwenden. In diesem Fall muss Lambda über die Berechtigung verfügen, Protokollgruppen für Triggerbedingungsdienste und Protokollausgabe in CloudWatch zu schreiben.

"Laufzeit" bezeichnet die Sprache der Verarbeitung. Ab dem 02.05.2020 können folgende Sprachen ausgewählt werden. ・ Java 11/8 ・ .NET Core2.1 (C # / PowerShell) ・ GO 1.x. · Weil. js 12. x / 10. x ・ Python 3.8 / 3.7 / 3.6 / 2.7

3. Stellen Sie die Ausführungsbedingungen mit "Trigger hinzufügen" ein.

Dieses Mal führen wir es aus, wenn ein Objekt in s3 erstellt wird. Wenn das Triggermedium auf s3 eingestellt ist, gibt es die folgenden fünf Elemente. ·Eimer -Event-Typ (wenn die Datei PUT ist ..., wenn die Datei gelöscht wird ... usw.) -Prefix (Verzeichnispfad nach Bucket, Dateiname usw.) ・ Suffix (Dateiname, Erweiterung usw.)

4. Stellen Sie den Funktionscode ein

Standardmäßig wird der Prozess in einer Datei namens lambda_function.py beschrieben.

import json

def lambda_handler(event, context):
    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

lambda_handler ist eine Funktion, die automatisch ausgeführt wird, wenn die in Lambda festgelegte Triggerbedingung erfüllt ist. Bearbeiten Sie nach # TODO implement und schreiben Sie den Prozess, den Sie ausführen möchten.

Dieses Mal werde ich versuchen, den Pfad und den Dateinamen anzuzeigen, in dem die Datei in s3 abgelegt wurde.

import json

def lambda_handler(event, context):
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
 print (Bucket + '+ Key +' wurde im Bucket erstellt! ')

Das als Argument an lambda_handler übergebene event enthält die Ereignisinformationen, die es ausgelöst haben, als Array. Das Obige ruft den Bucket-Namen und den Dateipfad ab und zeigt ihn an.

5. Ausführung / Bestätigung

Die Funktion selbst kann ausgeführt werden, indem die Datei in den vom Trigger angegebenen Pfad gestellt wird. Darüber hinaus ist es möglich, die Lambda-Funktion auf Pseudo-Weise auszuführen, indem der Wert, der "Ereignis" aus dem "Test" in der Abbildung unten eingibt, im JSON-Format eingestellt wird. tempsnip.png

Darüber hinaus können Sie die Zielfunktion aus der CloudWatch-Protokollgruppe auswählen und von dort aus das Funktionsausführungsprotokoll überprüfen. tempsnip.png

Ich konnte bestätigen, dass die Lambda-Funktion korrekt ausgeführt wurde! !! tempsnip.png

Am Ende

Lambda verwendet die AWS-Umgebung. Wenn Sie eine einfache Verarbeitung durchführen möchten, wird dies in Bezug auf Kosten und Verwaltung dringend empfohlen. Ich war ein wenig besorgt, weil es keinen Platz gibt, um eine Erklärung zu schreiben, was die Funktion tut. Lassen Sie uns daher den leicht verständlichen Funktionsnamen und die Kommentare in diesem Prozess gründlich beschreiben und ein angenehmes Lambda-Leben führen! !!

Recommended Posts

Stellen Sie die Lambda-Funktion ein und lassen Sie sie mit S3-Ereignissen arbeiten!
Verknüpfen Sie Python Enum mit einer Funktion, um es aufrufbar zu machen
Schritte zum Einrichten von Pipenv, Erstellen einer CRUD-App mit Flask und Containerisieren mit Docker
Richten Sie mit Docker einen Samba-Server ein
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
[AWS lambda] Stellen Sie mit lambda verschiedene Bibliotheken bereit (generieren Sie eine Zip-Datei mit einem Kennwort und laden Sie sie auf s3 hoch) @ Python
Einführung und Verwendung der Python-Flasche ・ Versuchen Sie, einen einfachen Webserver mit Anmeldefunktion einzurichten
Richten Sie einen einfachen HTTPS-Server mit Asyncio ein
Richten Sie einen lokalen Server mit Go-File-Upload ein.
[Piyopiyokai # 1] Spielen wir mit Lambda: Erstellen einer Lambda-Funktion
Richten Sie einen lokalen Server mit Go-File-Download ein.
Beachten Sie, dass ich süchtig danach war, TensowFlow einzurichten
Richten Sie mit Sublime Text 2 eine Python-Entwicklungsumgebung ein
[Vagrant] Richten Sie einen einfachen API-Server mit Python ein
Richten Sie eine Python-Entwicklungsumgebung mit Visual Studio Code ein
Richten Sie einen Webserver mit CentOS7 + Anaconda + Django + Apache ein
Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen
Erstellen Sie ein Bereitstellungsskript mit Stoff und Küche und verwenden Sie es erneut
Verarbeiten Sie die mit Redshift entladene gzip-Datei mit Python of Lambda, gzipen Sie sie erneut und laden Sie sie in S3 hoch
Erstellen einer Cognito-Benutzerliste in S3 mit SQS Stellen Sie mit SAM Warteschlangenverarbeitungsfunktionen und APIs für Lambda bereit
So legen Sie eine Verknüpfung fest, um in IBus zwischen voller und halber Breite zu wechseln
Verschieben Sie CloudWatch-Protokolle regelmäßig mit Lambda nach S3
Festlegen von CloudWatch-Ereignissen in der über Zappa bereitgestellten AWS Lambda-Funktion (WebAPI)
Erstellen Sie eine temporäre Datei mit Django als Zip und geben Sie sie zurück
[Python 3.8 ~] Wie man rekursive Funktionen mit Lambda-Ausdrücken intelligent definiert
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Ich habe einen Chat-Chat-Bot mit Tensor2Tensor erstellt und diesmal hat es funktioniert
Rufen Sie eine Liste der Kameraparameter ab, die mit cv2.VideoCapture festgelegt werden können, und machen Sie daraus einen Wörterbuchtyp
Laden Sie Daten mit einem Befehl und einer Aktualisierung auf s3 von aws hoch und löschen Sie die verwendeten Daten (unterwegs).