Rufen Sie eine Lambda-Funktion mit Amazon S3 S3-Batch-Ereignissen auf - AWS Lambda

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Rufen Sie eine Lambda-Funktion mit Amazon S3 S3-Batch-Ereignissen auf

Sie können Amazon-S3-Batchvorgänge verwenden, um eine Lambda-Funktion für einen großen Satz von Amazon-S3-Objekten aufzurufen. Amazon S3 verfolgt den Fortschritt von Batchvorgängen, sendet Benachrichtigungen und speichert einen Abschlussbericht, der den Status jeder Aktion anzeigt.

Zum Ausführen eines Batchvorgangs erstellen Sie einen Amazon-S3-Batchvorgangsauftrag. Wenn Sie den Auftrag erstellen, stellen Sie ein Manifest (die Liste der Objekte) bereit und konfigurieren die Aktion für diese Objekte.

Wenn der Batchauftrag gestartet wird, ruft Amazon S3 die Lambda-Funktion synchron für jedes Objekt im Manifest auf. Der Ereignis-Parameter enthält die Namen des Buckets und des Objekts.

Das folgende Beispiel zeigt das Ereignis, das Amazon S3 an die Lambda-Funktion für ein Objekt mit dem Namen customerImage1.jpg im Bucket amzn-s3-demo-bucket sendet.

Beispiel Batch-Anforderungsereignis für Amazon S3
{ "invocationSchemaVersion": "1.0", "invocationId": "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo", "job": { "id": "f3cc4f60-61f6-4a2b-8a21-d07600c373ce" }, "tasks": [ { "taskId": "dGFza2lkZ29lc2hlcmUK", "s3Key": "customerImage1.jpg", "s3VersionId": "1", "s3BucketArn": "arn:aws:s3:::amzn-s3-demo-bucket" } ] }

Ihre Lambda-Funktion muss ein JSON Objekt mit den Feldern zurückgeben, wie im folgenden Beispiel gezeigt. Sie können den Parameter invocationId und taskId aus dem Ereignisparameter kopieren. Sie können eine Zeichenfolge in resultString zurückgeben. Amazon S3 speichert die resultString-Werte im Abschlussbericht.

Beispiel Batch-Anforderungantwort für Amazon S3
{ "invocationSchemaVersion": "1.0", "treatMissingKeysAs" : "PermanentFailure", "invocationId" : "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo", "results": [ { "taskId": "dGFza2lkZ29lc2hlcmUK", "resultCode": "Succeeded", "resultString": "[\"Alice\", \"Bob\"]" } ] }

Aufrufen von Lambda-Funktionen aus Amazon-S3-Batchvorägngen

Sie können die Lambda-Funktion mit einer unqualifizierten oder qualifizierten Funktion aufrufen. ARN Wenn Sie dieselbe Funktionsversion für den gesamten Stapelauftrag verwenden möchten, konfigurieren Sie beim Erstellen des Auftrags eine bestimmte Funktionsversion im Parameter FunctionARN. Wenn Sie einen Alias oder den LATEST $-Qualifier konfigurieren, ruft der Batch-Job sofort die neue Version der Funktion auf, wenn der Alias oder $ während der Jobausführung aktualisiert LATEST wird.

Beachten Sie, dass Sie eine vorhandene ereignisbasierte Amazon-S3-Funktion nicht für Batchvorgänge verwenden können. Dies liegt daran, dass der Amazon S3 S3-Batchvorgang einen anderen Ereignisparameter an die Lambda-Funktion übergibt und eine Rückmeldung mit einer bestimmten JSON Struktur erwartet.

Stellen Sie in der ressourcenbasierten Richtlinie, die Sie für den Amazon-S3-Batchauftrag erstellen, sicher, dass Sie die Berechtigung für den Auftrag zum Aufrufen der Lambda-Funktion festlegen.

Legen Sie in der Ausführungsrolle für die Funktion eine Vertrauensrichtlinie fest, damit Amazon S3 die Rolle übernimmt, wenn die Funktion ausgeführt wird.

Wenn Ihre Funktion Amazon S3 S3-Ressourcen verwaltet, müssen Sie der Ausführungsrolle Amazon S3 S3-Berechtigungen hinzufügen. AWS SDK

Wenn der Auftrag ausgeführt wird, startet Amazon S3 mehrere Funktionsinstances, um die Amazon-S3-Objekte bis zur Parallelitätsgrenze der Funktion parallel zu verarbeiten. Amazon S3 begrenzt den anfänglichen Hochlauf von Instances, um Überkosten für kleinere Aufträge zu vermeiden.

Wenn die Lambda-Funktion den Antwortcode TemporaryFailure zurückgibt, wiederholt Amazon S3 den Vorgang.

Weitere Informationen zu Amazon-S3-Stapelvorgängen finden Sie unter Durchführen von Stapelvorgängen im Amazon-S3-Entwicklerhandbuch.

Ein Beispiel für die Verwendung einer Lambda-Funktion in Amazon-S3-Stapelvorgängen finden Sie unter Aufrufen einer Lambda-Funktion von Amazon-S3-Stapelvorgängen im Amazon-S3-Entwicklerhandbuch.