Wie behebe ich Probleme, wenn meine Amazon S3-Ereignisbenachrichtigungen meine Lambda-Funktion nicht aufrufen?
Ich habe Amazon Simple Storage Service (Amazon S3)-Ereignisbenachrichtigungen konfiguriert, um meine AWS Lambda-Funktion aufzurufen. Die Funktion wird jedoch nicht aufgerufen, wenn das Amazon S3-Ereignis eintritt.
Behebung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Überprüfen, ob der Amazon S3-Ereignistyp korrekt konfiguriert ist
Wenn du S3-Ereignisbenachrichtigungen konfigurierst, musst du jeden Ereignistyp angeben, der Amazon S3 veranlasst, die Benachrichtigung zu senden. Wenn ein Ereignistyp, den du nicht angegeben hast, in deinem Amazon-S3-Bucket auftritt, sendet Amazon S3 die Benachrichtigung nicht.
Du konfigurierst beispielsweise eine Ereignisbenachrichtigung, um Lambda mit dem Ereignistyp s3:ObjectCreated:Put aufzurufen. Wenn du eine große Datei hochlädst, verwendet Amazon S3 automatisch den mehrteiligen Upload-Prozess, um die Datei in den Bucket hochzuladen. Um die Lambda-Funktion für diesen Upload aufzurufen, musst du auch den Ereignistyp s3:ObjectCreated:CompleteMultipartUpload konfigurieren. Oder verwende den Ereignistyp s3:ObjectCreated:*, um Benachrichtigungen für jede API anzufordern, die Amazon S3 zur Erstellung eines Objekts verwendet.
Sich vergewissern, dass die Objektschlüsselnamenfilter den hochgeladenen Dateinamen enthalten
Wenn deine S3-Ereignisbenachrichtigungen die Filterung von Objektschlüsselnamen verwenden, veröffentlicht Amazon S3 Benachrichtigungen nur für Objekte mit bestimmten Präfixen oder Suffixen. Stelle sicher, dass der in der Ereignisbenachrichtigung angegebene Präfix- oder Suffixfilter den Namen des hochgeladenen Objektschlüssels enthält.
Hinweis: Du kannst ein Platzhalterzeichen (*) in Filtern nicht als Präfix oder Suffix verwenden, um ein beliebiges Zeichen darzustellen
Für die Filterung von Objektschlüsselnamen müssen bestimmte Sonderzeichen in den Präfixen oder Suffixen URL-codiert (prozentcodiert) sein. Um beispielsweise den Wert eines Präfixes als test=abc/ zu definieren, gib den URL-kodierten Wert test%3Dabc/ ein.
Weitere Informationen zur Behandlung von Sonderzeichen in Objektschlüsselnamen findest du unter Richtlinien zur Benennung von Objektschlüsseln.
Überprüfen, ob die ressourcenbasierte IAM-Richtlinie der Lambda-Funktion über die erforderlichen Berechtigungen verfügt, damit Amazon S3 die Funktion aufrufen kann
Überprüfe die ressourcenbasierte AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagament)-Richtlinie deiner Lambda-Funktion, um sicherzustellen, dass die Richtlinie es dem Bucket erlaubt, die Funktion aufzurufen. Wenn der Bucket die Funktion nicht aufrufen kann, füge die erforderliche Richtlinie hinzu.
Beispiel für eine Richtlinie:
{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "lambda-allow-s3-my-function", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" }, "ArnLike": { "AWS:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket" } } } ] }
Weitere Informationen findest du unter Verwaltung von Berechtigungen in AWS Lambda.
Hinweis: Wenn du die Amazon S3-Konsole verwendest, um eine neue Ereignisbenachrichtigung hinzuzufügen, fügt Amazon S3 automatisch die erforderlichen Berechtigungen zur ressourcenbasierten Richtlinie der Funktion hinzu. Wenn du jedoch den AWS-CLI-Befehl put-bucket-notification-configuration verwendest, um eine Ereignisbenachrichtigung hinzuzufügen, wird die Richtlinie der Funktion nicht automatisch aktualisiert.
Sich vergewissern, dass die Lambda-Funktion so konfiguriert ist, dass sie gleichzeitige Aufrufe von S3-Ereignisbenachrichtigungen verarbeitet
Du musst die Lambda-Funktion so konfigurieren, dass sie gleichzeitige Aufrufe von S3-Ereignisbenachrichtigungen verarbeitet. Wenn Aufrufanforderungen schneller ankommen, als die Funktion skalieren kann, oder wenn die Funktion maximale Parallelität erreicht, drosselt Lambda die Anforderungen.
Weitere Informationen findest du unter Asynchrones Aufrufen einer Lambda-Funktion.
Ähnliche Informationen
Amazon S3-Ereignisbenachrichtigungen mit Lambda verarbeiten
Tutorial: Verwenden eines Amazon S3-Triggers zum Aufrufen einer Lambda-Funktion
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor einem Jahr