View a markdown version of this page

Einen Abonnenten aktualisieren, pausieren und wieder aufnehmen - Amazon EventBridge

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.

Einen Abonnenten aktualisieren, pausieren und wieder aufnehmen

UpdateSubscriberändert einen Abonnenten an Ort und Stelle. Ein Element der obersten Ebene, das Sie weglassen, behält seinen gespeicherten Wert bei. Ein von Ihnen bereitgestelltes Konfigurationsobjekt ersetzt das gesamte gespeicherte Objekt. Um also einen Filter zu ändern, übergeben Sie den vollständigen Wert FilterConfiguration mit jedem Filter, den Sie behalten möchten. Um einen Abonnenten anzuhalten, bestehen Sie--state STOPPED; um fortzufahren, bestehen Sie --state RUNNING mit einem. --resume-position

Was kannst du ändern

Die folgende Anfrage ersetzt den gesamten AbonnentenInvokeConfiguration, benennt also die Rolle und alle Zielparameter, die der Abonnent beibehalten muss. TargetArnist nicht Teil des Updates; das Ziel eines Abonnenten kann sich nicht ändern.

{ "SubscriberArn": "arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890", "InvokeConfiguration": { "RoleArn": "arn:aws:iam::111122223333:role/NewSubscriberTargetRole", "SqsParameters": { "MessageGroupId": "{% $events.Data.customerId %}" } } }

In der folgenden Tabelle sind die einzelnen Mitglieder der Anfrage aufgeführt und die Funktionen, die sie bereitstellen, aufgeführt.

Mitglied anfragenAuswirkung
DescriptionErsetzt die Beschreibung. Ein leerer oder leerer Wert löscht ihn.
StateVerschiebt den Abonnenten zwischen RUNNING undSTOPPED; siehe Anhalten und Fortsetzen
ResumePositionWo der RUNNING Übergang von A STOPPED nach B wieder aufgenommen wird
InvokeConfigurationErsetzt die Bereitstellungsrolle und die Zielparameter. TargetArnbleibt wie es ist.
FilterConfigurationBehält, löscht oder ersetzt die gesamte Filterkonfiguration; siehe Filter aktualisieren
BatchConfigurationErsetzt die gesamte Batching-Konfiguration
TransformerErsetzt den gesamten Transformator. Auf setzenType, RAW um einen Metadaten- oder JSONATA-Transformator zu entfernen.
RetryPolicyErsetzt die gesamte Wiederholungsrichtlinie. Ein ausgelassenes Element nimmt seine Standardeinstellung an: 5 Wiederholungsversuche, 300 Sekunden, und der einzige Wert RetryStrategyALL, bei dem jede Fehlerkategorie erneut versucht wird.
OnFailureConfigurationErsetzt die gesamte Konfiguration bei einem Ausfall. Senden{}, um das Ziel zu entfernen; ohne Ziel wird ein Ereignis verworfen, wenn die Wiederholungsversuche ausgeschöpft sind.
LogConfigurationErsetzt die gesamte Protokollierungskonfiguration. Senden{}, um die Standardwerte wiederherzustellen, Level OFF und IncludePayloadON_ERROR_ONLY, wodurch die Protokollierung der Zustellung deaktiviert wird.

Name,EventBusArn,, Type StartingPositionPointInTimeConfiguration, und TargetArn identifiziert den Abonnenten oder legt seinen Startpunkt fest; er kann nicht geändert werden; die Tags ändern sich durch TagResource undUntagResource. Die Aktualisierungsantwort enthält die Identität, den Status und die Startposition des Abonnenten undLastModifiedTime; lesen Sie die Konfiguration mitDescribeSubscriber.

Ein Update bewegt niemals die Position des Abonnenten im Bus: Es wird weder zurückgespult, übersprungen noch einmal abgespielt. Um vergangene Ereignisse unter einer neuen Konfiguration erneut zu übertragen, erstellen Sie stattdessen einen neuen Abonnenten mit einer Startposition; siehe. Wiedergeben von gespeicherten Ereignissen für einen Abonnenten

Problembehandlung: Durch ein Update wurden Einstellungen gelöscht, die Sie nicht geändert haben

Ein Update ersetzt jedes von Ihnen bereitgestellte Konfigurationsobjekt als Ganzes; sieheWas kannst du ändern.

Symptom

Nach einer Aktualisierung ist ein Filter, eine Protokolleinstellung, ein Wiederholungslimit oder ein Aufbewahrungszeitraum, den Sie nicht geändert haben, wieder auf die Standardwerte zurückgesetzt, und es wurde kein Fehler zurückgegeben.

Ursache

Bei einer Aktualisierung bleibt ein ausgelassenes Element der obersten Ebene unverändert, ersetzt aber einen angegebenen Block als Ganzes. Bei einer AktualisierungFilterConfiguration, bei der ein Feld LogConfigurationRetryPolicy,, oder StorageConfiguration geändert wird, werden die anderen Felder des Blocks gelöscht. Eine Ereignisquelle, die ohne ihr aktualisiert wird, Pattern kommt ohne Muster zurück, wodurch sie auf jedes Ereignis erweitert wird.

Lösung

Lesen Sie die Ressource, ändern Sie den gesamten Block, schreiben Sie den gesamten Block zurück und lesen Sie ihn dann erneut. Das Zurücklesen ist die einzige Bestätigung, da bei den Antworten zum Erstellen und Aktualisieren nicht jedes Feld wiedergegeben wird.

aws eventsv2 describe-subscriber --subscriber-arn "$SUBSCRIBER_ARN" --query 'LogConfiguration' aws eventsv2 update-subscriber --subscriber-arn "$SUBSCRIBER_ARN" \ --log-configuration '{ "Level": "INFO", "IncludePayload": "FULL" }' aws eventsv2 describe-subscriber --subscriber-arn "$SUBSCRIBER_ARN" --query 'LogConfiguration'
Verifizierung

Die zweite Beschreibung zeigt jedes Feld des Blocks mit den von Ihnen beabsichtigten Werten.

Filter aktualisieren

Um die Filter zu ersetzen, übergeben Sie eine, FilterConfiguration deren Filters Liste alle Filter enthält, die der Abonnent haben sollte; EventBridge kombiniert Filter für verschiedene Bereiche mit UND. Um alle Filter zu entfernen, übergeben Sie FilterConfiguration als{}.

AnforderungErgebnis
FilterConfigurationweggelassenDie gespeicherten Filter bleiben
FilterConfiguration ist {}Jeder gespeicherte Filter wird entfernt
Filtersist eine nicht leere ListeDie Liste ist validiert und ersetzt die gesamte Filterkonfiguration
Filtersist eine leere Liste oder Language wird ohne angegeben FiltersInvalidInputException; eine angegebene FilterConfiguration Datei muss mindestens einen Filter enthalten

Die Anzahl der Filterwechsel ist auf 24 pro Abonnent innerhalb von 24 Stunden begrenzt. Nur eine Änderung an der Gruppe von Bereichen und Mustern zählt, ein erneutes Einreichen eines identischen Musters FilterConfiguration nicht. Die 25. Änderung schlägt fehl mit. FILTER_CHANGE_LIMIT_EXCEEDED Dieses Limit ist kein Service-Kontingent und kann nicht erhöht werden. Daher sollte ein Design, das Filter kontinuierlich neu schreibt, stattdessen den variierenden Wert im Event veröffentlichen und einmal danach filtern.

Welche Konfiguration verwendet ein bereits zugeordnetes Ereignis

EventBridge ordnet ein Ereignis einem Abonnenten zu und liefert es zu unterschiedlichen Zeiten aus. Außerdem wird aufgezeichnet, welche Version der Filter dem jeweiligen Ereignis entsprach. Ein Update, das die Übereinstimmung der Filter ändert, erstellt eine neue Filterversion und EventBridge speichert den Transformator und die Zielparameter zusammen. Ein Ereignis, das vor der Änderung abgeglichen wurde, wird mit dem alten Transformator und den Zielparametern übertragen; ein Ereignis, das abgeglichen wurde, nachdem es die neuen verwendet hat. Das Gleiche gilt, nachdem ein Abonnent die Sitzung beendet und wieder aufgenommen hat.

Filter aktualisierenErstellt eine neue Filterversion
Ein Muster ändernJa
Ändern, welche Bereiche einen Filter habenJa
Den ersten Filter hinzufügenJa
Alle Filter löschenJa, als Filter gespeichert wurden
Gleichwertige Filter neu anordnenNein
Nur ändern LanguageNein

Wenn also ein Filter und ein Transformator oder ein Zielparameter ein Verhalten bilden, ändern Sie sie in derselben Anfrage. Die folgende Anforderung verbindet einen neuen DATA Filter mit dem dafür geschriebenen Transformator, sodass kein Ereignis mit einem nicht übereinstimmenden Paar ausgeliefert wird.

{ "SubscriberArn": "arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890", "FilterConfiguration": { "Filters": [ { "Scope": "DATA", "Pattern": "{\"type\":[\"priority\"]}" } ] }, "Transformer": { "Type": "JSONATA", "JsonataConfiguration": { "Expression": "{% {\"version\": 2, \"event\": $events.Data} %}" } } }

Bei einem Update, das nur den Transformator oder die Zielparameter ändert, wird keine Filterversion erstellt. Sobald die neue Konfiguration weitergegeben wird, gilt sie für Ereignisse, die noch auf ihre Übertragung warten, sowie für spätere Wiederholungsversuche. Die Konfiguration für die Übermittlungsrolle, die Wiederholungsrichtlinie, das Ziel bei einem Ausfall, das Batching und die Protokollierung verwenden immer die neuesten übermittelten Werte, unabhängig davon, welche Version dem Ereignis entsprach. Da bei einem erneuten Versuch die Transformator- und Zielparameter erneut ausgewertet werden EventBridge können, kann eine zeitabhängige oder nichtdeterministische JSONATA-Funktion bei jedem Versuch zu einem anderen Ergebnis führen. Gehen $now() Sie nicht davon aus, dass eine wiederholte Anforderung identische Byte enthält.

UpdateSubscriberspeichert die Änderung, bevor sie zurückkehrt, und die Bereitstellungskomponenten nehmen sie nach einer Übertragungsverzögerung auf, während der Ereignisse immer noch die vorherige Konfiguration verwenden können. DescribeSubscriberbestätigt, was gespeichert ist, nicht, dass jede Komponente gewechselt hat. Veröffentlichen Sie nach einem Update ein Testevent und überprüfen Sie die Zielnutzlast, bevor Sie sich auf das neue Verhalten verlassen.

Auf einem Bus kann jeweils nur ein Abonnent Läufe erstellen oder löschen, und zwar für jedes Konto, das ihn verwendet. Ein gleichzeitiger Anruf schlägt fehl. ConcurrentModificationException Versuchen Sie es erneut.

Anhalten und Fortsetzen

Ein Abonnent liefert nur, solange State es soweit istRUNNING. Stellen Sie den Vorgang STOPPED auf Pause ein. Auf dem Bus sammeln sich weiterhin Ereignisse an, die durch die Aufbewahrung begrenzt sind. Wenn Sie es wieder auf setzenRUNNING, ResumePosition entscheidet, was mit dem Backlog passiert.

  • LAST_PROCESSED, die Standardeinstellung: Fahren Sie an der Stelle fort, an der die Zustellung beendet wurde, sodass jedes Ereignis, das veröffentlicht wurde, während der Abonnent gestoppt wurde, zugestellt wird, das älteste zuerst.

  • LATEST: überspringe den Backlog und übermittle nur Ereignisse, die ab jetzt veröffentlicht werden. Ein Abonnent, der wiederholt spielt, kann es nicht verwenden: Eine Wiederholung ohne Ende holt immer noch auf, und eine begrenzte Wiederholung erreicht niemals Live-Events.

aws eventsv2 update-subscriber \ --subscriber-arn arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890 \ --state STOPPED aws eventsv2 update-subscriber \ --subscriber-arn arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890 \ --state RUNNING \ --resume-position LAST_PROCESSED

ResumePositionwird nur bei dem Anruf akzeptiert, bei dem der Status von bis geändert wird. STOPPED RUNNING Bei diesem Anruf wird EventBridge zuerst der Übermittlungsendpunkt des Abonnenten wieder auffindbar. Schlägt dieser Schritt fehl, kehrt der Anruf zurückInternalException, nichts wird gespeichert und der Abonnent bleibtSTOPPED, also versuchen Sie die Anfrage erneut. Ein Abonnent, dem der Busbesitzer den Empfang entzogen hat, kann in keinem der Bundesstaaten eine Zustellung durchführen; siehe. Einen Abonnenten oder eine Ereignisquelle sperren

Fehler, die ein Update zurückgeben kann

EventBridge validiert die aktualisierte Konfiguration anhand des gespeicherten Zieltyps des Abonnenten, sodass ein SqsParameters Block für einen Abonnenten, dessen Ziel eine Lambda-Funktion ist, abgelehnt wird.

BedingungFehler
Der Abonnent existiert nichtResourceNotFoundException
Der Abonnent wurde gesperrtInvalidStateException
Die Anfrage hat mehr als einen ZielparameterblockInvalidInputException
Die Zielparameter stimmen nicht mit dem gespeicherten Zieltyp übereinInvalidInputException
Der Transformator wird für das Ziel nicht unterstütztInvalidInputException
Ein JSONata-Ausdruck ist ungültigInvalidInputException
Ein Batching-Wert liegt außerhalb der Grenzen des ZielsInvalidInputException