View a markdown version of this page

Aggiornamento, sospensione e ripresa di un abbonato - Amazon EventBridge

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aggiornamento, sospensione e ripresa di un abbonato

UpdateSubscribermodifica la posizione di un abbonato. Un membro di primo livello che ometti mantiene il suo valore memorizzato; un oggetto di configurazione fornito sostituisce l'oggetto archiviato per intero, quindi per cambiare un filtro, passa il valore completo FilterConfiguration con tutti i filtri che desideri conservare. Per mettere in pausa un abbonato, passa--state STOPPED; per riprenderlo, passa con un. --state RUNNING --resume-position

Cosa puoi cambiare

La richiesta seguente sostituisce l'intera richiesta del sottoscrittoreInvokeConfiguration, quindi nomina il ruolo e tutti i parametri di destinazione che il sottoscrittore deve conservare. TargetArnnon fa parte dell'aggiornamento; il target di un abbonato non può cambiare.

{ "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 %}" } } }

La tabella seguente elenca ogni membro della richiesta e le relative operazioni di fornitura.

Membro della richiestaEffetto
DescriptionSostituisce la descrizione. Un valore vuoto o vuoto la cancella.
StateSposta il sottoscrittore tra RUNNING eSTOPPED; vedi Sospensione e ripristino
ResumePositionDove riprende STOPPED la RUNNING transizione da a
InvokeConfigurationSostituisce il ruolo di consegna e i parametri di destinazione. TargetArnrimane così com'è.
FilterConfigurationMantiene, cancella o sostituisce l'intera configurazione del filtro; vedi Aggiornamento dei filtri
BatchConfigurationSostituisce l'intera configurazione in batch
TransformerSostituisce l'intero trasformatore. Impostato su Type per RAW rimuovere un metadata o un trasformatore JSonata.
RetryPolicySostituisce l'intera politica sui nuovi tentativi. Un membro omesso assume il valore predefinito: 5 tentativi di nuovo tentativo, 300 secondi e, l'unico valore RetryStrategyALL, che riprova tutte le categorie di errori.
OnFailureConfigurationSostituisce l'intera configurazione in caso di errore. Invia {} per rimuovere la destinazione; senza destinazione, un evento viene eliminato quando i tentativi sono esauriti.
LogConfigurationSostituisce l'intera configurazione di registrazione. Invia {} per ripristinare le impostazioni predefinite e disattiva la Level OFF registrazione delle IncludePayload ON_ERROR_ONLY consegne.

Name,,EventBusArn, Type StartingPositionPointInTimeConfiguration, e TargetArn identifica l'abbonato o ne fissa il punto di partenza e non può essere modificato; i tag cambiano tramite e. TagResource UntagResource La risposta di aggiornamento riporta l'identità, lo stato, la posizione di partenza dell'abbonato eLastModifiedTime; rileggi la configurazione con. DescribeSubscriber

Un aggiornamento non sposta mai la posizione dell'abbonato sul bus: non viene riavvolto, saltato o riprodotto. Per restituire gli eventi passati con una nuova configurazione, crea invece un nuovo abbonato con una posizione di partenza; vedi. Riproduzione degli eventi conservati a un abbonato

Risoluzione dei problemi: un aggiornamento ha cancellato le impostazioni che non hai modificato

Un aggiornamento sostituisce ogni oggetto di configurazione fornito nel suo insieme; vedi. Cosa puoi cambiare

Caratteristiche

Dopo un aggiornamento, il filtro, l'impostazione del registro, il limite di tentativi o il periodo di conservazione che non hai toccato tornano ai valori predefiniti e non è stato restituito alcun errore.

Causa

Un aggiornamento lascia invariato un membro di primo livello omesso ma sostituisce l'intero blocco fornito. Un aggiornamento che supera FilterConfiguration o modifica un campo cancella StorageConfiguration gli altri campi del blocco. LogConfiguration RetryPolicy Una fonte di eventi aggiornata senza che Pattern venga restituita senza alcun modello, il che la estende a ogni evento.

Soluzione

Leggi la risorsa, modifica l'intero blocco, riscrivi l'intero blocco, quindi rileggilo. La lettura è l'unica conferma, perché le risposte di creazione e aggiornamento non fanno eco a tutti i campi.

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'
Verifica

La seconda descrizione mostra tutti i campi del blocco con i valori desiderati.

Aggiornamento dei filtri

Per sostituire i filtri, passa un campo FilterConfiguration il cui Filters elenco contiene tutti i filtri che l'abbonato dovrebbe avere; EventBridge combina i filtri per diversi ambiti con AND. Per rimuovere tutti i filtri, passa FilterConfiguration come. {}

RichiestaRisultato
FilterConfigurationomessoI filtri memorizzati rimangono
FilterConfiguration è {}Ogni filtro memorizzato viene rimosso
Filtersè una lista non vuotaL'elenco è convalidato e sostituisce l'intera configurazione del filtro
Filtersè una lista vuota o Language viene fornita senza FiltersInvalidInputException; una fornitura FilterConfiguration deve contenere almeno un filtro

Le modifiche ai filtri sono limitate a 24 per abbonato in 24 ore consecutive. Conta solo una modifica all'insieme di ambiti e modelli; inviarne nuovamente uno identico no. FilterConfiguration La 25a modifica fallisce con. FILTER_CHANGE_LIMIT_EXCEEDED Questo limite non è una quota di servizio e non può essere aumentato, quindi un progetto che riscrive continuamente i filtri dovrebbe invece pubblicare il valore variabile nell'evento e filtrarlo una volta.

Quale configurazione utilizza un evento già abbinato

EventBridge abbina un evento a un abbonato e lo invia in momenti diversi e registra quale versione dei filtri corrisponde a ciascun evento. Un aggiornamento che modifica la corrispondenza dei filtri crea una nuova versione del filtro e EventBridge memorizza con essa i parametri del trasformatore e del target. Un evento confrontato prima della modifica con i vecchi parametri del trasformatore e di destinazione; un evento che corrisponde dopo l'utilizzo di quelli nuovi. Lo stesso vale dopo che un abbonato si interrompe e riprende.

Aggiornamento del filtroCrea una nuova versione del filtro
Modificare un patternSì
Modificare gli ambiti dotati di un filtroSì
Aggiungere il primo filtroSì
Cancellazione di tutti i filtriSì, quando i filtri sono stati memorizzati
Riordinare i filtri equivalentiNo
Solo modifiche LanguageNo

Quindi, quando un filtro e un trasformatore o un parametro di destinazione formano un comportamento, modificali nella stessa richiesta. La richiesta seguente associa un nuovo DATA filtro al trasformatore scritto per esso, quindi nessun evento viene consegnato con una coppia non corrispondente.

{ "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} %}" } } }

Un aggiornamento che modifica solo il trasformatore o i parametri di destinazione non crea alcuna versione del filtro. Una volta propagata, la nuova configurazione si applica agli eventi ancora in attesa di consegna e ai successivi tentativi di riprova. Il ruolo di consegna, la politica di ripetizione, la destinazione in caso di errore, il batch e la configurazione di registrazione assumono sempre gli ultimi valori propagati, indipendentemente dalla versione corrispondente all'evento. Poiché è in EventBridge grado di valutare nuovamente i parametri del trasformatore e di destinazione per un nuovo tentativo, una funzione JSonata dipendente dal tempo o non deterministica, ad esempio, $now() può produrre un risultato diverso a ogni tentativo; non date per scontato che una richiesta ritentata contenga byte identici.

UpdateSubscribermemorizza la modifica prima che venga restituita e i componenti di consegna la raccolgono dopo un ritardo di propagazione, durante il quale gli eventi possono ancora utilizzare la configurazione precedente. DescribeSubscriberconferma ciò che è memorizzato, non che tutti i componenti siano cambiati. Dopo un aggiornamento, pubblicate un evento di test e controllate il payload di destinazione prima di affidarvi al nuovo comportamento.

La creazione o l'eliminazione di un solo abbonato alla volta su un bus, su ogni account che lo utilizza; una chiamata simultanea ha esito negativo. ConcurrentModificationException Riprova.

Sospensione e ripristino

Un abbonato effettua la consegna solo finché lo è. State RUNNING Impostalo su pausa; gli eventi continuano ad accumularsi sul bus, limitati dalla ritenzione. STOPPED Quando lo imposti suRUNNING, ResumePosition decide cosa succede al backlog.

  • LAST_PROCESSED, impostazione predefinita: continua dal punto in cui è stata interrotta la consegna, in modo che ogni evento pubblicato mentre l'abbonato è stato interrotto venga recapitato, partendo dal più vecchio.

  • LATEST: salta il backlog e fornisci solo gli eventi pubblicati d'ora in poi. Un abbonato che sta riproducendo non può utilizzarlo: un replay a tempo indeterminato sta ancora recuperando terreno e un replay limitato non raggiunge mai gli eventi live.

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

ResumePositionviene accettata solo nella chiamata che sposta lo stato da a. STOPPED RUNNING Questa chiamata rende EventBridge innanzitutto nuovamente individuabile l'endpoint di consegna dell'abbonato; se questo passaggio ha esito negativo, la chiamata ritornaInternalException, non viene salvato nulla e l'abbonato rimaneSTOPPED, quindi riprova la richiesta. Un abbonato revocato dal proprietario dell'autobus non effettua consegne in nessuno dei due stati; vedi. Revoca di un abbonato o di una fonte di eventi

Errori che un aggiornamento può restituire

EventBridge convalida la configurazione aggiornata rispetto al tipo di destinazione memorizzato dell'abbonato, quindi un SqsParameters blocco su un abbonato il cui obiettivo è una funzione Lambda viene rifiutato.

CondizioneErrore
L'abbonato non esisteResourceNotFoundException
L'abbonato viene revocatoInvalidStateException
La richiesta ha più di un blocco di parametri di destinazioneInvalidInputException
I parametri di destinazione non corrispondono al tipo di destinazione memorizzatoInvalidInputException
Il trasformatore non è supportato per il targetInvalidInputException
Un'espressione JSonata non è validaInvalidInputException
Un valore di batch non rientra nei limiti del targetInvalidInputException