Melhores práticas para padrões de EventBridge eventos da Amazon - Amazon EventBridge

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á.

Melhores práticas para padrões de EventBridge eventos da Amazon

Abaixo estão algumas das práticas recomendadas a serem consideradas ao definir padrões de eventos em suas regras de barramento de eventos.

Evite escrever loops infinitos

Em EventBridge, é possível criar regras que levam a loops infinitos, onde uma regra é acionada repetidamente. Por exemplo, uma regra pode detectar que ACLs foram alteradas em um bucket do S3 e acionar o software para alterá-las para o estado desejado. Se a regra não for escrita com cuidado, a alteração subsequente na ACLs acionará a regra novamente, criando um loop infinito.

Para evitar esses problemas, escreva os padrões de eventos para que suas regras sejam o mais precisas possível, para que correspondam apenas aos eventos que você realmente deseja enviar ao destino. No exemplo acima, seria criado um padrão de evento para corresponder aos eventos para que as ações acionadas não disparassem novamente a mesma regra. Por exemplo, crie um padrão de evento em sua regra que corresponda aos eventos somente se ACLs eles estiverem em um estado ruim, em vez de após qualquer alteração. Para obter mais informações, consulte Torne os padrões de eventos os mais precisos possível e Defina seus padrões de eventos para considerar as atualizações da origem de eventos.

Um loop infinito pode rapidamente causar cobranças acima do esperado. Isto também pode levar ao controle de utilização e atraso na entrega do evento. É possível monitorar o limite superior de suas taxas de invocação para receber avisos sobre picos inesperados no volume.

Use o orçamento para alertar você quando as cobranças excederem o limite especificado. Para obter mais informações, consulte Gerenciamento de seus custos com orçamentos.

Torne os padrões de eventos os mais precisos possível

Quanto mais preciso for o padrão de eventos, maior será a probabilidade dele corresponder somente aos eventos que você realmente deseja e evitar correspondências inesperadas quando novos eventos forem adicionados a uma origem de eventos ou eventos existentes forem atualizados para incluir novas propriedades.

Os padrões de eventos podem incluir filtros que correspondem a:

  • Metadados do evento sobre o evento, como source, detail-type, account ou region.

  • Dados do evento, ou seja, os campos dentro do objeto detail.

  • Conteúdo do evento ou os valores reais dos campos dentro do objeto detail.

A maioria dos padrões é simples, como especificar somente filtros source e detail-type. No entanto, EventBridge os padrões incluem a flexibilidade de filtrar qualquer chave ou valor do evento. Além disso, é possível aplicar filtros de conteúdo, como filtros prefix e suffix, para melhorar a precisão de seus padrões. Para ter mais informações, consulte Usando operadores de comparação nos padrões de EventBridge eventos da Amazon.

Especifique a origem do evento e o tipo de detalhe como filtros

É possível reduzir a geração de loops infinitos e a correspondência de eventos indesejados tornando seus padrões de eventos mais precisos usando os campos de metadados source e detail-type.

Quando precisar combinar valores específicos em dois ou mais campos, use o operador de comparação $or, em vez de listar todos os valores possíveis em uma única matriz de valores.

Para eventos que são entregues por meio de AWS CloudTrail, recomendamos que você use o eventName campo como filtro.

O exemplo de padrão de evento a seguir corresponde a CreateQueue ou SetQueueAttributes do serviço Amazon Simple Queue Service CreateKey ou a DisableKeyRotation eventos do AWS Key Management Service serviço.

{ "detail-type": ["AWS API Call via CloudTrail"], "$or": [{ "source": [ "aws.sqs" ], "detail": { "eventName": [ "CreateQueue", "SetQueueAttributes" ] } }, { "source": [ "aws.kms" ], "detail": { "eventName": [ "CreateKey", "DisableKeyRotation" ] } } ] }

Especifique conta e região como filtros

Incluir os campos account e region em seu padrão de eventos ajuda a limitar a correspondência de eventos entre contas ou regiões.

Especifique filtros de conteúdo

A filtragem baseada em conteúdo pode ajudar a melhorar a precisão do padrão de eventos ao mesmo tempo em que mantém a duração do padrão de eventos no mínimo. Por exemplo, a correspondência com base em um intervalo numérico pode ser útil em vez de listar todos os valores numéricos possíveis.

Para ter mais informações, consulte Usando operadores de comparação nos padrões de EventBridge eventos da Amazon.

Defina seus padrões de eventos para considerar as atualizações da origem de eventos

Ao criar padrões de eventos, é necessário levar em consideração que os esquemas e domínios de eventos podem evoluir e se expandir com o tempo. Aqui, novamente, tornar seus padrões de eventos o mais precisos possível ajuda a limitar correspondências inesperadas se a origem do evento mudar ou se expandir.

Por exemplo, suponha que você esteja comparando eventos de um novo microsserviço que publica eventos relacionados a pagamentos. Inicialmente, o serviço usa o domínio acme.payments e publica um único evento, Payment accepted:

{ "detail-type": "Payment accepted", "source": "acme.payments", "detail": { "type": "credit", "amount": "100", "date": "2023-06-10", "currency": "USD" } } }

Nesse momento, é possível criar um padrão de evento simples que corresponda aos eventos aceitos por pagamento:

{ “source” : “acme.payments” }

No entanto, suponha que o serviço introduza posteriormente um novo evento para pagamentos rejeitados:

{ "detail-type": "Payment rejected", "source": "acme.payments", "detail": { } }

Neste caso, o padrão de evento simples que você criou agora corresponderá aos eventos Payment accepted e Payment rejected. EventBridge direciona os dois tipos de eventos para o destino especificado para processamento, possivelmente introduzindo falhas de processamento e custos adicionais de processamento.

Para definir o escopo do seu padrão de eventos somente Payment accepted para eventos, é preciso especificar tanto source como detail-type, no mínimo:

{ "detail-type": "Payment accepted", "source": "acme.payments" } }

Também é possível especificar conta e região em seu padrão de eventos, para limitar ainda mais quando eventos entre contas ou regiões correspondem a essa regra.

{ "account": "012345678910", "source": "acme.payments", "region": "AWS-Region", "detail-type": "Payment accepted" }

Validar padrões de eventos

Para garantir que as regras correspondam aos eventos desejados, é altamente recomendável que você valide seus padrões de eventos. Você pode validar seus padrões de eventos usando o EventBridge console ouAPI: