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
UpdateSubscribercambia 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
La siguiente solicitud reemplaza la totalidad del suscriptorInvokeConfiguration, por lo que nombra la función y todos los parámetros de destino que el suscriptor debe conservar. TargetArnno 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 |
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 |
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, StartingPositionPointInTimeConfiguration, e TargetArn identifica al suscriptor o fija su punto de partida y no se pueden cambiar; las etiquetas cambian de un lado a otroTagResource. 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ónDescribeSubscriber.
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
Solución de problemas: una actualización borró la configuración que no cambiaste
Una actualización reemplaza todos los objetos de configuración suministrados en su conjunto; consulteQué puedes cambiar.
- 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
FilterConfigurationoStorageConfigurationcambia un campo borra los demás campos del bloque.LogConfigurationRetryPolicyUna fuente de eventos actualizada sin suPatternnombre 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
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
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.
UpdateSubscriberalmacena 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. DescribeSubscriberconfirma 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
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 enRUNNING, 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
ResumePositionsolo 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 vuelveInternalException, no se guarda nada y el suscriptor se quedaSTOPPED, 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
Errores que puede generar una actualización
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 |