Wie behebe ich den Fehler „Configuration is ambiguously defined“, wenn ich versuche, eine Amazon S3-Ereignisbenachrichtigung zu erstellen, um meine Lambda-Funktion auszulösen?

Lesedauer: 4 Minute
0

Ich habe versucht, 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 „Configuration is ambiguously defined error“ tritt auf, wenn sich die Ereignisinformationen einer Benachrichtigung und ihr Präfix oder Suffix mit der Benachrichtigungskonfiguration eines S3-Buckets überschneiden.

Gehe wie folgt vor, um dieses Problem zu beheben:

  • Entferne das überlappende Ereignis und erstelle ein neues.
  • Erstelle eine S3-Ereignisbenachrichtigung für mehrere überlappende Ereignisse mit überlappenden Präfixen oder Suffixen.
  • Gestalte deine Architektur neu.

**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 findest du unter Konfigurieren von Ereignisbenachrichtigungen mithilfe der Filterung von Objektschlüsselnamen.

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 von AWS CLI verwendest.

Das überlappende Ereignis entfernen und ein neues erstellen

Verwende die Amazon S3-Konsole oder die AWS CLI, um überlappende Ereignisbenachrichtigungen zu löschen.

Hinweis: Wenn du einen Lambda-Funktionsauslöser löschst, wird die zugehörige S3-Ereignisbenachrichtigung nicht automatisch gelöscht. Du musst die Benachrichtigung auch in Amazon S3 löschen, bevor du einen neuen Trigger ohne Suffix-Einschränkungen erstellst.

Amazon S3-Konsole

Führe die folgenden Schritte aus:

  1. Öffne die Amazon S3-Konsole und wähle dann deinen Bucket aus.
  2. Wähle die Registerkarte Eigenschaften aus.
  3. Wähle unter Ereignisbenachrichtigungen die Ereignisbenachrichtigung aus, die mit der neuen, die du zu erstellen versucht hast, überlappt.
  4. Wähle Löschen aus.
  5. Wähle Ereignisbenachrichtigung erstellen aus.
  6. Wähle in der Dropdown-Liste der Lambda-Funktion deine Funktion und dann Änderungen speichern aus.

AWS CLI

Verwende die AWS CLI, um die JSON-Datei mit der Benachrichtigungskonfiguration in deinem S3-Bucket zu aktualisieren. Um eine Liste aller Ereignisbenachrichtigungen in deinem S3-Bucket abzurufen, führe den AWS-CLI-Befehl get-bucket-notification-configuration aus. Um alle S3-Ereignisbenachrichtigungen zu entfernen, führe den AWS-CLI-Befehl put-bucket-notification-configuration aus:

aws s3api put-bucket-notification-configuration --bucket=your-bucket-name --notification-configuration="{}"

Hinweis: Ersetze your-bucket-name durch deinen Bucket-Namen.

Nachdem du die überlappende Ereignisbenachrichtigung entfernt hast, kannst du den AWS-CLI-Befehl put-bucket-notification-configuration ausführen, um neue Benachrichtigungen hinzuzufügen.

Erstelle eine S3-Ereignisbenachrichtigung für mehrere überlappende Ereignisse mit überlappenden Präfixen oder Suffixen

Führe die folgenden Schritte aus:

  1. Öffne die Amazon S3-Konsole und wähle dann deinen Bucket aus.
  2. Wähle die Registerkarte Eigenschaften aus.
  3. Wähle unter Ereignisbenachrichtigung die Option Ereignisbenachrichtigung erstellen aus.
  4. Gib im Feld Ereignisname einen Namen für dein Ereignis ein, zum Beispiel your-event-name.
  5. Gib als Präfix ein Präfix ein, z. B. images/.
  6. Gib als Suffix ein Suffix ein, z. B. .jpg.
  7. Wähle für Ereignistypen die Option Alle Objekte erstellen Ereignisse aus.
  8. Wähle in der Dropdown-Liste der Lambda-Funktion deine Lambda-Funktion aus.
  9. Wähle Änderungen speichern aus.

Deine Architektur neugestalten

Wenn du deine S3-Ereignisbenachrichtigung nicht neu konfigurieren kannst, um Überlappungen zu vermeiden, gestalte deine Architektur neu, um dies zu umgehen.

Konfiguriere beispielsweise eine Ereignisbenachrichtigung, um eine Lambda-Funktion auszulösen, die andere Lambda-Funktionen basierend auf dem S3-Ereignis auslöst. Konfiguriere alternativ 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: Stelle sicher, dass das Thema oder die Warteschlange Ereignisse an mehrere abonnierte Lambda-Funktionen weiterleiten. Gestalte die abonnierten Funktionen mit Logik, um zu entscheiden, ob die Ereignisse, die die Funktionen empfangen, verarbeitet werden sollen. Weitere Informationen findest du unter Fanout S3-Ereignisbenachrichtigungen an mehrere Endpunkte.

Du kannst auch die Protokollierung von Amazon S3-Aktionen auf Objektebene in AWS CloudTrail aktivieren. Verwende dann eine Amazon EventBridge-Regel, um deine Lambda-Funktion auf der Grundlage des Amazon S3-Ereignismusters auszulösen. Weitere Informationen findest du unter Tutorial: Protokolliere Amazon S3-Operationen auf Objektebene mithilfe von EventBridge.

Für komplexere Architekturen und Prozesse verwendest du eine AWS Step Functions-Statusmaschine, um deinen Workflow zu gestalten und zu verwalten. Weitere Informationen findest du in den Anwendungsfällen von AWS Step Functions und in den Tutorials für Lern-Step-Functions.

Ähnliche Informationen

Warum erhalte ich die Fehlermeldung „Unable to validate the following destination configurations“, wenn ich Amazon S3-Ereignisbenachrichtigungen verwende?

Wie behebe ich Probleme, wenn meine Amazon S3-Ereignisbenachrichtigungen meine Lambda-Funktion nicht aufrufen?

Amazon S3-Ereignisbenachrichtigungen mit Lambda verarbeiten

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

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Monaten