Warum erhalte ich die Fehlermeldung „Konfiguration ist mehrdeutig definiert“, wenn ich eine Amazon S3-Ereignisbenachrichtigung zum Auslösen meiner Lambda-Funktion erstelle?
Ich versuche, eine Amazon Simple Storage Service (Amazon S3)-Bucket-Ereignisbenachrichtigung zu erstellen, um meine AWS Lambda-Funktion auszulösen, und habe eine Fehlermeldung erhalten.
Kurze Beschreibung
Der Fehler „Konfiguration ist mehrdeutig definiert“ tritt auf, wenn sich die Ereignisinformationen einer Benachrichtigung und ihr Präfix oder Suffix mit der Benachrichtigungskonfiguration eines S3-Buckets überschneiden.
Der Fehler kann auftreten, wenn Sie einen der folgenden Schritte ausführen:
- Erstellen Sie eine S3-Ereignisbenachrichtigung neu, die Sie kürzlich gelöscht haben.
- Erstellen von S3-Ereignisbenachrichtigungen für mehrere überlappende Ereignisse mithilfe überlappender Präfixe oder Suffixe.
**Hinweis:**Amazon S3-Ereignisbenachrichtigungskonfigurationen ermöglichen überlappende Ereignisse mit nicht überlappenden Präfixen oder Suffixen. Die Konfigurationen ermöglichen auch nicht überlappende Ereignisse mit überlappenden Präfixen oder Suffixen.
Weitere Informationen und Beispiele finden Sie unter Konfigurieren von Ereignisbenachrichtigungen mithilfe der Filterung von Objektschlüsselnamen.
Behebung
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.
Um die Benachrichtigungskonfiguration Ihres aktuellen S3-Buckets zu überprüfen, führen Sie einen der folgenden Schritte aus:
- Führen Sie den AWS-CLI-Befehl get-bucket-notification-configuration aus.
- Verwenden Sie der Amazon S3-Konsole. Weitere Informationen und Beispiele finden Sie unter Aktivieren und Konfigurieren von Ereignisbenachrichtigungen mithilfe der Amazon S3-Konsole.
Führen Sie dann einen der folgenden Schritte aus:
Entfernen Sie ein überlappendes Ereignis
Löschen Sie in der Amazon S3-Konsole eine vorhandene Ereignisbenachrichtigung, die sich mit der neuen, die Sie erstellen möchten, überschneidet.
**Hinweis:**Wenn Sie einen Lambda-Funktionsauslöser löschen, wird die zugehörige S3-Ereignisbenachrichtigung nicht automatisch gelöscht. Sie müssen die Benachrichtigung auch in Amazon S3 löschen, bevor Sie einen neuen Trigger ohne Suffix-Einschränkungen erstellen.
-oder-
Aktualisieren Sie die JSON-Datei der Benachrichtigungskonfiguration in Ihrem S3-Bucket mithilfe der AWS CLI. Um eine Liste aller in Ihrem S3-Bucket konfigurierten Ereignisbenachrichtigungen abzurufen, führen Sie den AWS-CLI-Befehl get-bucket-notification-configuration aus. Um alle S3-Ereignisbenachrichtigungen zu entfernen, führen Sie den AWS-CLI-Befehl put-bucket-notification-configuration ähnlich dem folgenden aus:
Hinweis: Ersetzen Sie den Bucket-Namen durch Ihren Bucket-Namen.
aws s3api put-bucket-notification-configuration --bucket=<bucket-name> --notification-configuration="{}"
Nachdem Sie die überlappende Ereignisbenachrichtigung entfernt haben, können Sie mithilfe der Amazon S3-Konsole oder des AWS-CLI-Befehls put-bucket-notification-configuration neue Benachrichtigungen hinzufügen.
Konfigurieren Sie die neue Benachrichtigung neu
Ändern Sie die Objektschlüsselbenennung für Ihren S3-Bucket-Namespace, um mehrere überlappende Ereignisse mit nicht überlappenden Präfixen zuzulassen.
Um beispielsweise anzugeben, dass überlappende Ereignisobjekte, wie beispielsweise hochgeladene Bilder, je nach Bilddateityp (Suffix) einen anderen S3-Bucket-Ordner (Präfix) verwenden:
- S3: //mybucket/uploadedJPEG
- S3: //mybucket/uploadedGIF
Redesign für Ihren Anwendungsfall
Wenn Sie Ihre S3-Ereignisbenachrichtigung nicht neu konfigurieren können, um Überschneidungen zu vermeiden, versuchen Sie, Ihre Architektur neu zu gestalten, um dies zu umgehen.
Zum Beispiel:
- Konfigurieren Sie eine Ereignisbenachrichtigung, um eine Routing-Lambda-Funktion auszulösen, die andere Lambda-Funktionen basierend auf dem S3-Ereignis auslöst.
- Konfigurieren Sie eine Ereignisbenachrichtigung, um Ereignisse in einem Amazon Simple Notification Service (Amazon SNS) -Thema oder einer Amazon Simple Queue Service (Amazon SQS) -Warteschlange zu veröffentlichen.
Hinweis: Stellen Sie sicher, dass das Thema oder die Warteschlange Ereignisse an mehrere abonnierte Lambda-Funktionen weiterleiten. Entwerfen Sie die abonnierten Funktionen mit Logik, um zu entscheiden, ob die empfangenen Ereignisse verarbeitet werden sollen. Weitere Informationen finden Sie unter Fanout S3-Ereignisbenachrichtigungen an mehrere Endpunkte. - Aktivieren Sie die Protokollierung von Amazon S3-Aktionen auf Objektebene in AWS CloudTrail. Verwenden Sie eine Amazon CloudWatch Events-Regel, um Ihre Lambda-Funktion auf der Grundlage des Amazon S3-Ereignismusters auszulösen. Weitere Informationen finden Sie im Leitung: Protokollieren Sie Amazon S3-Operationen auf Objektebene mithilfe von CloudWatch Events.
Tipp: Für komplexere Architekturen und Prozesse verwenden Sie eine AWS Step Functions-Zustandsmaschine, um Ihren Workflow zu entwerfen und zu verwalten. Weitere Informationen finden Sie in den Anwendungsfällen von AWS Step Functions und in den Tutorials für Schrittfunktionen.
Verwandte Informationen
Warum ruft meine Amazon-S3-Ereignisbenachrichtigung meine Lambda-Funktion nicht auf?
Verwendung von AWS Lambda mit Amazon S3
Anleitung: Verwendung eines Amazon S3 Triggers zum Aufrufen einer Lambda-Funktion
Ähnliche Videos
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren