

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
<a name="eb-custom-bus-update"></a>

`UpdateSubscriber`modifica 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
<a name="eb-custom-bus-update-properties"></a>

La richiesta seguente sostituisce l'intera richiesta del sottoscrittore`InvokeConfiguration`, quindi nomina il ruolo e tutti i parametri di destinazione che il sottoscrittore deve conservare. `TargetArn`non 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 richiesta | Effetto | 
| --- | --- | 
| Description | Sostituisce la descrizione. Un valore vuoto o vuoto la cancella. | 
| State | Sposta il sottoscrittore tra RUNNING eSTOPPED; vedi [Sospensione e ripristino](#eb-custom-bus-update-pause) | 
| ResumePosition | Dove riprende STOPPED la RUNNING transizione da a | 
| InvokeConfiguration | Sostituisce il ruolo di consegna e i parametri di destinazione. TargetArnrimane così com'è. | 
| FilterConfiguration | Mantiene, cancella o sostituisce l'intera configurazione del filtro; vedi [Aggiornamento dei filtri](#eb-custom-bus-update-filters) | 
| BatchConfiguration | Sostituisce l'intera configurazione in batch | 
| Transformer | Sostituisce l'intero trasformatore. Impostato su Type per RAW rimuovere un metadata o un trasformatore JSonata. | 
| RetryPolicy | Sostituisce 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. | 
| OnFailureConfiguration | Sostituisce l'intera configurazione in caso di errore. Invia {} per rimuovere la destinazione; senza destinazione, un evento viene eliminato quando i tentativi sono esauriti. | 
| LogConfiguration | Sostituisce 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` `StartingPosition``PointInTimeConfiguration`, 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 e`LastModifiedTime`; 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](eb-custom-bus-replay.md)

## Risoluzione dei problemi: un aggiornamento ha cancellato le impostazioni che non hai modificato
<a name="eb-custom-bus-update-cleared"></a>

Un aggiornamento sostituisce ogni oggetto di configurazione fornito nel suo insieme; vedi. [Cosa puoi cambiare](#eb-custom-bus-update-properties)

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
<a name="eb-custom-bus-update-filters"></a>

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. `{}`


| Richiesta | Risultato | 
| --- | --- | 
| FilterConfigurationomesso | I filtri memorizzati rimangono | 
| FilterConfiguration è {} | Ogni filtro memorizzato viene rimosso | 
| Filtersè una lista non vuota | L'elenco è convalidato e sostituisce l'intera configurazione del filtro | 
| Filtersè una lista vuota o Language viene fornita senza Filters | InvalidInputException; 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
<a name="eb-custom-bus-update-inflight"></a>

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 filtro | Crea una nuova versione del filtro | 
| --- | --- | 
| Modificare un pattern | Sì | 
| Modificare gli ambiti dotati di un filtro | Sì | 
| Aggiungere il primo filtro | Sì | 
| Cancellazione di tutti i filtri | Sì, quando i filtri sono stati memorizzati | 
| Riordinare i filtri equivalenti | No | 
| Solo modifiche Language | No | 

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.

`UpdateSubscriber`memorizza 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. `DescribeSubscriber`conferma 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
<a name="eb-custom-bus-update-pause"></a>

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 su`RUNNING`, `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
```

`ResumePosition`viene 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 ritorna`InternalException`, non viene salvato nulla e l'abbonato rimane`STOPPED`, 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](eb-custom-bus-access-revoke.md)

## Errori che un aggiornamento può restituire
<a name="eb-custom-bus-update-errors"></a>

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.


| Condizione | Errore | 
| --- | --- | 
| L'abbonato non esiste | ResourceNotFoundException | 
| L'abbonato viene revocato | InvalidStateException | 
| La richiesta ha più di un blocco di parametri di destinazione | InvalidInputException | 
| I parametri di destinazione non corrispondono al tipo di destinazione memorizzato | InvalidInputException | 
| Il trasformatore non è supportato per il target | InvalidInputException | 
| Un'espressione JSonata non è valida | InvalidInputException | 
| Un valore di batch non rientra nei limiti del target | InvalidInputException | 