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 anfragen | Auswirkung |
|---|---|
Description | Ersetzt die Beschreibung. Ein leerer oder leerer Wert löscht ihn. |
State | Verschiebt den Abonnenten zwischen RUNNING undSTOPPED; siehe Anhalten und Fortsetzen |
ResumePosition | Wo der RUNNING Übergang von A STOPPED nach B wieder aufgenommen wird |
InvokeConfiguration | Ersetzt die Bereitstellungsrolle und die Zielparameter. TargetArnbleibt wie es ist. |
FilterConfiguration | Behält, löscht oder ersetzt die gesamte Filterkonfiguration; siehe Filter aktualisieren |
BatchConfiguration | Ersetzt die gesamte Batching-Konfiguration |
Transformer | Ersetzt den gesamten Transformator. Auf setzenType, RAW um einen Metadaten- oder JSONATA-Transformator zu entfernen. |
RetryPolicy | Ersetzt 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. |
OnFailureConfiguration | Ersetzt die gesamte Konfiguration bei einem Ausfall. Senden{}, um das Ziel zu entfernen; ohne Ziel wird ein Ereignis verworfen, wenn die Wiederholungsversuche ausgeschöpft sind. |
LogConfiguration | Ersetzt 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 Aktualisierung
FilterConfiguration, bei der ein FeldLogConfigurationRetryPolicy,, oderStorageConfigurationgeändert wird, werden die anderen Felder des Blocks gelöscht. Eine Ereignisquelle, die ohne ihr aktualisiert wird,Patternkommt 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{}.
| Anforderung | Ergebnis |
|---|---|
FilterConfigurationweggelassen | Die gespeicherten Filter bleiben |
FilterConfiguration ist {} | Jeder gespeicherte Filter wird entfernt |
Filtersist eine nicht leere Liste | Die Liste ist validiert und ersetzt die gesamte Filterkonfiguration |
Filtersist eine leere Liste oder Language wird ohne angegeben Filters | InvalidInputException; 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 aktualisieren | Erstellt eine neue Filterversion |
|---|---|
| Ein Muster ändern | Ja |
| Ändern, welche Bereiche einen Filter haben | Ja |
| Den ersten Filter hinzufügen | Ja |
| Alle Filter löschen | Ja, als Filter gespeichert wurden |
| Gleichwertige Filter neu anordnen | Nein |
Nur ändern Language | Nein |
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.
| Bedingung | Fehler |
|---|---|
| Der Abonnent existiert nicht | ResourceNotFoundException |
| Der Abonnent wurde gesperrt | InvalidStateException |
| Die Anfrage hat mehr als einen Zielparameterblock | InvalidInputException |
| Die Zielparameter stimmen nicht mit dem gespeicherten Zieltyp überein | InvalidInputException |
| Der Transformator wird für das Ziel nicht unterstützt | InvalidInputException |
| Ein JSONata-Ausdruck ist ungültig | InvalidInputException |
| Ein Batching-Wert liegt außerhalb der Grenzen des Ziels | InvalidInputException |