Warum ruft meine Amazon S3-Ereignisbenachrichtigung meine Lambda-Funktion nicht auf?

Lesedauer: 4 Minute
0

Ich habe eine Amazon Simple Storage Service (Amazon S3) -Ereignisbenachrichtigung konfiguriert, um meine AWS Lambda-Funktion aufzurufen. Die Funktion wird jedoch nicht aufgerufen, wenn das Amazon S3-Ereignis eintritt.

Lösung

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.

Vergewissern Sie sich, dass Ihr Amazon S3-Ereignistyp korrekt konfiguriert ist

Wenn Sie eine Amazon S3-Ereignisbenachrichtigung konfigurieren, müssen Sie angeben, welche unterstützten Amazon S3-Ereignistypen Amazon S3 veranlassen, die Benachrichtigung zu senden. Wenn ein Ereignistyp, den Sie nicht angegeben haben, in Ihrem Amazon S3-Bucket auftritt, sendet Amazon S3 die Benachrichtigung nicht.

Eine Amazon S3-Ereignisbenachrichtigung ist beispielsweise so konfiguriert, dass Lambda mit dem Ereignis s3:objectCreated:Put aufgerufen wird. Wenn Sie eine große Datei hochladen, wird die Datei mithilfe des mehrteiligen Uploads hochgeladen. Das Ereignis s3:objectCreated:CompleteMultipartUpload muss zusammen mit dem Ereignis s3:objectCreated:Put ausgewählt werden. Sie können auch den Ereignistyp s3:ObjectCreated:* verwenden, um Benachrichtigungen für jede API anzufordern, die zum Erstellen eines Objekts verwendet wurde.

Vergewissern Sie sich, dass Ihre Objektschlüsselnamenfilter den hochgeladenen Dateinamen enthalten

Wenn Ihre Eventbenachrichtigungen so konfiguriert sind, dass sie die Filterung nach Objektschlüsselnamen verwenden, werden Benachrichtigungen nur für Objekte mit bestimmten Präfixen oder Suffixen veröffentlicht. Ein Platzhalterzeichen („*“) kann in Filtern nicht als Präfix oder Suffix verwendet werden, um ein beliebiges Zeichen darzustellen. Stellen Sie sicher, dass der in der Ereignisbenachrichtigung angegebene Präfix- oder Suffixfilter den Namen des hochgeladenen Objektschlüssels enthält.

Vergewissern Sie sich, dass Ihre Filter für Objektschlüsselnamen im URL-kodierten (prozentualen) Format vorliegen

Wenn Ihre Eventbenachrichtigungen so konfiguriert sind, dass sie die Filterung nach Objektschlüsselnamen verwenden, werden Benachrichtigungen nur für Objekte mit bestimmten Präfixen oder Suffixen veröffentlicht.

Wenn Sie eines der folgenden Sonderzeichen in Ihren Präfixen oder Suffixen verwenden, müssen Sie es im URL-kodierten (prozentualen) Format eingeben:

  • Klammer („( )“)
  • ASCII-Zeichenbereiche 00—1F, Hexadezimalzahl (0–31 Dezimalzahl) und 7F (127 Dezimalzahl)
  • Dollar („$“)
  • Ampersand („&“)
  • Plus-Zeichen („+“)
  • Komma („,“)
  • Doppelpunkt („:“)
  • Semikolon („;“)
  • Gleichheitszeichen („=“)
  • Fragezeichen („?“)
  • Am Schild („@“)
  • Leerzeichen (“ „)

Um beispielsweise den Wert eines Präfixes als „test=abc/“ zu definieren, geben Sie „test%3Dabc/“ als Wert ein.

Hinweis: Ein Platzhalterzeichen („*“) kann in Filtern nicht als Präfix oder Suffix verwendet werden, um ein beliebiges Zeichen darzustellen.

Weitere Informationen finden Sie unter Richtlinien zur Benennung von Objektschlüsseln.

Vergewissern Sie sich, dass die AWS-Richtlinie für Identity and Access Management (IAM) Ihrer Lambda-Funktion über die erforderlichen Berechtigungen verfügt

Überprüfen Sie die ressourcenbasierte Richtlinie Ihrer Lambda-Funktion, um sicherzustellen, dass Ihr Amazon S3-Bucket die Funktion aufrufen kann. Wenn dies nicht der Fall ist, fügen Sie die erforderlichen Berechtigungen hinzu, indem Sie den Anweisungen unter Funktionszugriff auf AWS-Services gewähren folgen.

Weitere Informationen finden Sie unter AWS Lambda-Berechtigungen.

Hinweis: Wenn Sie über die Amazon S3-Konsole eine neue Ereignisbenachrichtigung hinzufügen, werden die erforderlichen Berechtigungen automatisch zur Richtlinie Ihrer Funktion hinzugefügt. Wenn Sie die Aktion put-bucket-notification-configuration in der AWS-CLI verwenden, um eine Ereignisbenachrichtigung hinzuzufügen, wird die Richtlinie Ihrer Funktion nicht automatisch aktualisiert.

Vergewissern Sie sich, dass Ihre Lambda-Funktion so konfiguriert ist, dass sie gleichzeitige Aufrufe von Amazon S3-Ereignisbenachrichtigungen verarbeitet

Ihre Lambda-Funktion muss so konfiguriert sein, dass sie gleichzeitige Aufrufe von Amazon S3-Ereignisbenachrichtigungen verarbeitet. Wenn Aufrufanforderungen schneller ankommen, als Ihre Funktion skalieren kann, oder wenn Ihre Funktion maximale Parallelität erreicht, drosselt Lambda die Anfragen.

Weitere Informationen finden Sie unter Asynchroner Aufruf und Lambda-Funktionsskalierung.


Ähnliche Informationen

Wie behebe ich Probleme beim Aufrufen einer Lambda-Funktion mit einer Amazon S3-Ereignisbenachrichtigung mithilfe von Systems Manager Automation?

Verwenden von AWS Lambda mit Amazon S3-Ereignissen

Anleitung: Konfiguration eines Buckets für Benachrichtigungen (SNS-Thema oder SQS-Warteschlange)

Tutorial: Verwenden eines Amazon S3-Triggers zum Aufrufen einer Lambda-Funktion

Warum erhalte ich die Fehlermeldung „Die folgenden Zielkonfigurationen konnten nicht überprüft werden“, wenn ich eine Amazon S3-Ereignisbenachrichtigung erstelle, um meine Lambda-Funktion aufzurufen?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr