As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Atualizando, pausando e retomando um assinante
UpdateSubscribermuda um assinante no local. Um membro de nível superior que você omite mantém seu valor armazenado; um objeto de configuração que você fornece substitui o objeto armazenado por inteiro. Portanto, para alterar um filtro, passe o completo FilterConfiguration com cada filtro que você deseja manter. Para pausar um assinante, passe--state STOPPED; para retomar, passe --state RUNNING com a. --resume-position
O que você pode mudar
A solicitação a seguir substitui o inteiro do assinanteInvokeConfiguration, então ela nomeia a função e cada parâmetro de destino que o assinante deve manter. TargetArnnão faz parte da atualização; a meta de um assinante não pode mudar.
{ "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 %}" } } }
A tabela a seguir lista cada membro da solicitação e o que ela fornece.
| Solicitar membro | Efeito |
|---|---|
Description | Substitui a descrição. Um valor vazio ou em branco o limpa. |
State | Move o assinante entre RUNNING eSTOPPED; consulte Pausar e reiniciar |
ResumePosition | Onde a RUNNING transição STOPPED para é retomada |
InvokeConfiguration | Substitui a função de entrega e os parâmetros de destino. TargetArnpermanece como está. |
FilterConfiguration | Mantém, limpa ou substitui toda a configuração do filtro; consulte Atualizando filtros |
BatchConfiguration | Substitui toda a configuração de dosagem |
Transformer | Substitui todo o transformador. TypeDefina como RAW para remover um transformador de metadados ou JSOnata. |
RetryPolicy | Substitui toda a política de novas tentativas. Um membro omitido usa o padrão: 5 tentativas de nova tentativa, 300 segundos e, o único valor RetryStrategyALL, que repete todas as categorias de falha. |
OnFailureConfiguration | Substitui toda a configuração em caso de falha. Envie {} para remover o destino; sem destino, um evento é descartado quando suas novas tentativas se esgotam. |
LogConfiguration | Substitui toda a configuração de registro. Envie {} para restaurar os padrões Level OFF e IncludePayloadON_ERROR_ONLY, o que desativa o registro de entrega. |
Name,EventBusArn,,Type, StartingPositionPointInTimeConfiguration, e TargetArn identifique o assinante ou fixe seu ponto de partida e não pode ser alterado; as tags mudam por meio de TagResource e. UntagResource A resposta de atualização carrega a identidade, o estado, a posição inicial do assinante eLastModifiedTime; leia novamente a DescribeSubscriber configuração.
Uma atualização nunca move a posição do assinante no ônibus: ela não retrocede, pula ou reproduz. Para reenviar eventos anteriores em uma nova configuração, crie um novo assinante com uma posição inicial; consulte. Reproduzir eventos retidos para um assinante
Solução de problemas: uma atualização apagou as configurações que você não alterou
Uma atualização substitui cada objeto de configuração que você fornece como um todo; consulteO que você pode mudar.
- Sintomas
Depois de uma atualização, um filtro, uma configuração de registro, um limite de novas tentativas ou um período de retenção que você não tocou voltam ao padrão e nenhum erro foi retornado.
- Causa
Uma atualização deixa um membro de nível superior omitido inalterado, mas substitui um bloco inteiro fornecido. Uma atualização que passa
FilterConfiguration,LogConfiguration,RetryPolicy, ouStorageConfigurationpara alterar um campo limpa os outros campos do bloco. Uma fonte de eventos atualizada semPatternretornar sem nenhum padrão, o que a amplia para cada evento.- Solução
Leia o recurso, modifique o bloco inteiro, escreva o bloco inteiro de volta e leia-o novamente. A leitura é a única confirmação, pois as respostas de criação e atualização não ecoam em todos os 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'- Verificação
A segunda descrição mostra cada campo do bloco com os valores que você pretendia.
Atualizando filtros
Para substituir os filtros, passe uma Filters lista FilterConfiguration cuja lista contém todos os filtros que o assinante deve ter; EventBridge combina filtros para diferentes escopos com AND. Para remover todos os filtros, passe FilterConfiguration como{}.
| Solicitação | Resultado |
|---|---|
FilterConfigurationomitido | Os filtros armazenados permanecem |
FilterConfiguration é {} | Cada filtro armazenado é removido |
Filtersé uma lista não vazia | A lista é validada e substitui toda a configuração do filtro |
Filtersé uma lista vazia ou Language é fornecida sem Filters | InvalidInputException; um fornecido FilterConfiguration deve conter pelo menos um filtro |
As alterações de filtro são limitadas a 24 por assinante em 24 horas consecutivas. Somente uma alteração no conjunto de escopos e padrões conta; reenviar um idêntico FilterConfiguration não. A 25ª mudança falha comFILTER_CHANGE_LIMIT_EXCEEDED. Esse limite não é uma cota de serviço e não pode ser aumentado, portanto, um design que reescreve filtros continuamente deve, em vez disso, publicar o valor variável no evento e filtrá-lo uma vez.
Qual configuração um evento já correspondido usa
EventBridge associa um evento a um assinante e o entrega em horários diferentes, além de registrar qual versão dos filtros correspondeu a cada evento. Uma atualização que altera a correspondência dos filtros cria uma nova versão do filtro e EventBridge armazena os parâmetros do transformador e do alvo com ela. Um evento combinado antes da alteração com os parâmetros antigos do transformador e do alvo; um evento combinado depois de usar os novos. O mesmo acontece depois que um assinante para e retoma.
| Atualização do filtro | Cria uma nova versão do filtro |
|---|---|
| Alterando um padrão | Sim |
| Alterando quais escopos têm um filtro | Sim |
| Adicionando o primeiro filtro | Sim |
| Limpando todos os filtros | Sim, quando os filtros foram armazenados |
| Reordenando filtros equivalentes | Não |
Apenas mudando Language | Não |
Portanto, quando um filtro e um transformador ou parâmetro de destino formarem um comportamento, altere-os na mesma solicitação. A solicitação a seguir emparelha um novo DATA filtro com o transformador escrito para ele, para que nenhum evento seja entregue com um par incompatível.
{ "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} %}" } } }
Uma atualização que altera somente o transformador ou os parâmetros de destino não cria nenhuma versão do filtro. Depois de se propagar, a nova configuração se aplica aos eventos que ainda estão aguardando a entrega e às tentativas de repetição posteriores. A função de entrega, a política de nova tentativa, o destino em caso de falha, a configuração de lote e registro sempre usam os valores propagados mais recentes, seja qual for a versão correspondente ao evento. Como EventBridge pode avaliar os parâmetros do transformador e do alvo novamente para uma nova tentativa, uma função JSoNata dependente do tempo ou não determinística, como a que $now() pode produzir um resultado diferente em cada tentativa; não presuma que uma solicitação repetida tenha bytes idênticos.
UpdateSubscriberarmazena a alteração antes que ela retorne e os componentes de entrega a coletam após um atraso de propagação, durante o qual os eventos ainda podem usar a configuração anterior. DescribeSubscriberconfirma o que está armazenado, não que todos os componentes tenham sido trocados. Depois de uma atualização, publique um evento de teste e verifique a carga útil de destino antes de confiar no novo comportamento.
Somente um assinante criado ou excluído é executado por vez em um ônibus, em todas as contas que o usam; uma chamada simultânea falha com. ConcurrentModificationException Tente novamente.
Pausar e reiniciar
Um assinante entrega somente enquanto State estáRUNNING. Configure STOPPED para pausar; os eventos continuam se acumulando no ônibus, limitados pela retenção. Quando você volta paraRUNNING, ResumePosition decide o que acontece com a lista de pendências.
-
LAST_PROCESSED, o padrão: continue de onde a entrega foi interrompida, para que cada evento publicado enquanto o assinante estava parado seja entregue, primeiro o mais antigo. -
LATEST: ignore a lista de pendências e entregue somente os eventos publicados a partir de agora. Um assinante que está reprisando não pode usá-lo: um replay aberto ainda está se atualizando e um replay limitado nunca chega aos eventos ao vivo.
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é aceito somente na chamada que move o estado de STOPPED paraRUNNING. Nessa chamada, EventBridge primeiro torna o endpoint de entrega do assinante detectável novamente; se essa etapa falhar, a chamada retornaráInternalException, nada será salvo e o assinante permaneceráSTOPPED, então repita a solicitação. Um assinante que o proprietário do ônibus revogou não entrega em nenhum dos estados; veja. Revogar um assinante ou uma fonte de eventos
Erros que uma atualização pode retornar
EventBridge valida a configuração atualizada em relação ao tipo de destino armazenado do assinante, portanto, um SqsParameters bloqueio em um assinante cujo destino é uma função do Lambda é rejeitado.
| Condição | Erro |
|---|---|
| O assinante não existe | ResourceNotFoundException |
| O assinante foi revogado | InvalidStateException |
| A solicitação tem mais de um bloco de parâmetros de destino | InvalidInputException |
| Os parâmetros de destino não correspondem ao tipo de alvo armazenado | InvalidInputException |
| O transformador não é suportado pelo alvo | InvalidInputException |
| Uma expressão JSOnata é inválida | InvalidInputException |
| O valor do lote está fora dos limites do alvo | InvalidInputException |