

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Actualización, pausa y reanudación de un suscriptor
<a name="eb-custom-bus-update"></a>

`UpdateSubscriber`cambia la posición de un suscriptor. Un miembro de nivel superior que omitas conserva su valor almacenado; un objeto de configuración que proporciones reemplaza el objeto almacenado en su totalidad, así que para cambiar un filtro, pasa el completo `FilterConfiguration` a todos los filtros que quieras conservar. Para pausar un suscriptor, pase`--state STOPPED`; para reanudarlo, pase `--state RUNNING` con un. `--resume-position`

## Qué puedes cambiar
<a name="eb-custom-bus-update-properties"></a>

La siguiente solicitud reemplaza la totalidad del suscriptor`InvokeConfiguration`, por lo que nombra la función y todos los parámetros de destino que el suscriptor debe conservar. `TargetArn`no forma parte de la actualización; el objetivo de un suscriptor no puede cambiar.

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

En la siguiente tabla se muestra cada miembro de la solicitud y lo que hace al suministrarla.


| Miembro de la solicitud | Efecto | 
| --- | --- | 
| Description | Sustituye a la descripción. Un valor vacío o en blanco la borra. | 
| State | Mueve al suscriptor entre RUNNING ySTOPPED; consulte [Interrupción temporal y reanudación](#eb-custom-bus-update-pause) | 
| ResumePosition | Dónde se reanuda STOPPED la RUNNING transición a | 
| InvokeConfiguration | Sustituye la función de entrega y los parámetros de destino. TargetArnpermanece como está. | 
| FilterConfiguration | Mantiene, borra o reemplaza toda la configuración del filtro; consulte [Actualización de filtros](#eb-custom-bus-update-filters) | 
| BatchConfiguration | Sustituye toda la configuración de procesamiento por lotes | 
| Transformer | Sustituye todo el transformador. TypeRAWConfigúralo para eliminar un transformador JSonata o de metadatos. | 
| RetryPolicy | Sustituye a toda la política de reintentos. Un miembro omitido toma su valor predeterminado: 5 reintentos, 300 segundos y, el único valor RetryStrategyALL, que reintenta cada categoría de error. | 
| OnFailureConfiguration | Sustituye toda la configuración en caso de error. Se envía {} para eliminar el destino; sin destino, un evento se descarta cuando se agotan los reintentos. | 
| LogConfiguration | Sustituye toda la configuración de registro. Se envía {} para restaurar los valores predeterminados Level OFF y IncludePayloadON\_ERROR\_ONLY, lo que desactiva el registro de entrega. | 

`Name`,,`EventBusArn`,`Type`, `StartingPosition``PointInTimeConfiguration`, e `TargetArn` identifica al suscriptor o fija su punto de partida y no se pueden cambiar; las etiquetas cambian de un lado a otro`TagResource`. `UntagResource` La respuesta de actualización contiene la identidad, el estado, la posición inicial del suscriptor y `LastModifiedTime` con la que vuelve a leer la configuración`DescribeSubscriber`.

Una actualización nunca cambia la posición del suscriptor en el bus: no retrocede, omite ni se reproduce. Para volver a publicar eventos anteriores con una nueva configuración, en su lugar, cree un nuevo suscriptor con una posición inicial; consulte. [Reproducción de eventos retenidos para un suscriptor](eb-custom-bus-replay.md)

## Solución de problemas: una actualización borró la configuración que no cambiaste
<a name="eb-custom-bus-update-cleared"></a>

Una actualización reemplaza todos los objetos de configuración suministrados en su conjunto; consulte[Qué puedes cambiar](#eb-custom-bus-update-properties).

Síntoma  
Tras una actualización, un filtro, una configuración de registro, un límite de reintentos o un período de retención que no haya modificado vuelven a sus valores predeterminados y no se devuelve ningún error.

Causa  
Una actualización deja sin cambios a un miembro de nivel superior omitido, pero reemplaza por completo un bloque suministrado. Una actualización que aprueba `FilterConfiguration` o `StorageConfiguration` cambia un campo borra los demás campos del bloque. `LogConfiguration` `RetryPolicy` Una fuente de eventos actualizada sin su `Pattern` nombre regresa sin ningún patrón, lo que la amplía a todos los eventos.

Solución  
Lee el recurso, modifica todo el bloque, vuelve a escribir todo el bloque y, a continuación, vuelve a leerlo. La lectura retrospectiva es la única confirmación, porque las respuestas de creación y actualización no repiten todos los campos.  

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

Verificación  
La segunda descripción muestra todos los campos del bloque con los valores que querías.

## Actualización de filtros
<a name="eb-custom-bus-update-filters"></a>

Para reemplazar los filtros, pase a una `FilterConfiguration` `Filters` lista que contenga todos los filtros que debería tener el suscriptor; EventBridge combine filtros para diferentes ámbitos con AND. Para eliminar todos los filtros, pasa `FilterConfiguration` como`{}`.


| Solicitud | Resultado | 
| --- | --- | 
| FilterConfigurationomitido | Los filtros guardados permanecen | 
| FilterConfiguration es {} | Se eliminan todos los filtros almacenados | 
| Filterses una lista no vacía | La lista se valida y reemplaza toda la configuración del filtro | 
| Filterses una lista vacía o Language se proporciona sin ella Filters | InvalidInputException; un elemento suministrado FilterConfiguration debe contener al menos un filtro | 

Los cambios de filtro están limitados a 24 por suscriptor en 24 horas sucesivas. Solo cuenta un cambio en el conjunto de ámbitos y patrones; volver a enviar un conjunto idéntico `FilterConfiguration` no lo hace. El vigésimo quinto cambio falla con. `FILTER_CHANGE_LIMIT_EXCEEDED` Este límite no es una cuota de servicio y no se puede aumentar, por lo que un diseño que reescriba los filtros de forma continua debería publicar el valor variable en el evento y filtrarlo una vez.

## Qué configuración usa un evento ya coincidente
<a name="eb-custom-bus-update-inflight"></a>

EventBridge relaciona un evento con un suscriptor y lo entrega en diferentes momentos, y registra qué versión de los filtros coincide con cada evento. Una actualización que cambia la coincidencia de los filtros crea una nueva versión del filtro y EventBridge almacena en ella los parámetros del transformador y del objetivo. Un evento que coincidió antes del cambio con los parámetros antiguos del transformador y el objetivo; un evento que coincidió después de usar los nuevos. Lo mismo ocurre después de que un suscriptor se detiene y se reanuda.


| Actualización del filtro | Crea una nueva versión del filtro | 
| --- | --- | 
| Cambiar un patrón | Sí | 
| Cambiar los ámbitos que tienen un filtro | Sí | 
| Agregar el primer filtro | Sí | 
| Borrar todos los filtros | Sí, cuando se almacenaron los filtros | 
| Reordenar los filtros equivalentes | No | 
| Solo cambiando Language | No | 

Por lo tanto, cuando un filtro y un transformador o un parámetro objetivo formen un mismo comportamiento, cámbielos en la misma solicitud. La siguiente solicitud empareja un `DATA` filtro nuevo con el transformador escrito para él, de modo que no se entregue ningún evento con un par que no coincida.

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

Una actualización que cambia solo el transformador o los parámetros de destino no crea ninguna versión del filtro. Una vez que se propaga, la nueva configuración se aplica a los eventos que aún están esperando su entrega y a los reintentos posteriores. La función de entrega, la política de reintentos, el destino en caso de error, la configuración por lotes y la configuración de registro siempre toman los valores propagados más recientes, independientemente de la versión que coincida con el evento. Como es EventBridge posible volver a evaluar los parámetros del transformador y del objetivo para volver a intentarlo, una función JSonata no determinista o dependiente del tiempo `$now()` puede producir un resultado diferente en cada intento; no dé por sentado que una solicitud reintentada contiene bytes idénticos.

`UpdateSubscriber`almacena el cambio antes de que se devuelva y los componentes de entrega lo recogen tras un retraso de propagación, durante el cual los eventos pueden seguir utilizando la configuración anterior. `DescribeSubscriber`confirma lo que está almacenado, no que todos los componentes hayan cambiado. Tras una actualización, publica un evento de prueba y comprueba la carga útil de destino antes de confiar en el nuevo comportamiento.

Solo se ejecuta un suscriptor que crea o elimina a la vez en un bus, en cada cuenta que lo usa; las llamadas simultáneas fallan con. `ConcurrentModificationException` Vuelva a intentarlo.

## Interrupción temporal y reanudación
<a name="eb-custom-bus-update-pause"></a>

Un suscriptor solo entrega mientras `State` está`RUNNING`. Configúralo en pausa; los eventos se siguen acumulando en el autobús, limitados por la retención. `STOPPED` Cuando lo vuelves a configurar en`RUNNING`, `ResumePosition` decide qué pasa con el trabajo atrasado.
+ `LAST_PROCESSED`, el valor predeterminado: continuar desde donde se detuvo la entrega, de modo que se entreguen todos los eventos publicados mientras el suscriptor estaba interrumpido, primero los más antiguos.
+ `LATEST`: omite el trabajo atrasado y publica solo los eventos que se publiquen de ahora en adelante. Un suscriptor que esté reproduciendo no puede usarla: una repetición abierta sigue poniéndose al día y una reproducción limitada nunca llega a los eventos en directo.

```
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`solo se acepta en la llamada que cambia el estado de a. `STOPPED` `RUNNING` En esa llamada, EventBridge primero se vuelve a detectar el punto final de entrega del suscriptor; si ese paso falla, la llamada vuelve`InternalException`, no se guarda nada y el suscriptor se queda`STOPPED`, así que vuelve a intentar la solicitud. Un suscriptor que el propietario del autobús haya revocado no hace entregas en ninguno de los estados; consulte. [Revocación de un suscriptor o una fuente de eventos](eb-custom-bus-access-revoke.md)

## Errores que puede generar una actualización
<a name="eb-custom-bus-update-errors"></a>

EventBridge valida la configuración actualizada comparándola con el tipo de destino almacenado del suscriptor, por lo que se rechaza `SqsParameters` bloquear a un suscriptor cuyo objetivo sea una función de Lambda.


| Condición | Error | 
| --- | --- | 
| El suscriptor no existe | ResourceNotFoundException | 
| El suscriptor está revocado | InvalidStateException | 
| La solicitud tiene más de un bloque de parámetros de destino | InvalidInputException | 
| Los parámetros del objetivo no coinciden con el tipo de objetivo almacenado | InvalidInputException | 
| El transformador no es compatible con el objetivo | InvalidInputException | 
| Una expresión JSonata no es válida | InvalidInputException | 
| Un valor de procesamiento por lotes está fuera de los límites del objetivo | InvalidInputException | 