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á.
PadrõesEventBridge de eventos da Amazon
Os padrões de eventos têm a mesma estrutura dos eventos aos quais correspondem. As regras usam padrões de eventos para selecionar eventos e enviá-los para destinos. Um padrão de evento corresponde a um evento ou não corresponde.
Importante
No EventBridge, é possível criar regras que resultam em loops infinitos, onde uma regra é disparada repetidamente. Por exemplo, uma regra pode detectar que as 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 gravada cuidadosamente, a alteração subsequente às ACLs disparará a regra novamente, criando um loop infinito.
Para evitar que isso aconteça, grave as regras de forma que as ações acionadas não disparem novamente a mesma regra. Por exemplo, a regra pode disparar somente se as ACLs forem considerados em um mau estado, em vez de após alguma alteração.
Um loop infinito pode rapidamente causar cobranças acima do esperado. Recomendamos que você use o orçamento, que alerta quando as cobranças excederem o limite especificado. Para obter mais informações, consulte Gerenciamento de seus custos com orçamentos.
O vídeo a seguir aborda os conceitos básicos dos padrões de eventos:
Tópicos
O evento a seguir mostra umAWS evento simples do Amazon EC2.
{
"version": "0",
"id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
"detail-type": "EC2 Instance State-change Notification",
"source": "aws.ec2",
"account": "111122223333",
"time": "2017-12-22T18:43:48Z",
"region": "us-west-1",
"resources": [
"arn:aws:ec2:us-west-1:123456789012:instance/i-1234567890abcdef0"
],
"detail": {
"instance-id": "i-1234567890abcdef0",
"state": "terminated"
}
}
O padrão de eventos a seguir processa todos osinstance-termination
eventos do Amazon EC2.
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {
"state": ["terminated"]
}
}
Criar padrões de eventos
Para criar um padrão de eventos, especifique os campos de um evento aos quais o padrão de eventos deve corresponder. Especifique somente os campos que você usa para correspondência. O exemplo anterior do padrão de eventos fornece valores apenas para três campos: os campos de nível superior"source"
e"detail-type"
, e o"state"
campo dentro do campo de"detail"
objeto. EventBridgeignora todos os outros campos do evento ao aplicar a regra.
Para que um padrão de eventos corresponda a um evento, o evento deve conter todos os nomes de campos listados no padrão de eventos. Os nomes dos campos também devem aparecer no evento com a mesma estrutura de aninhamento.
EventBridgeignora os campos do evento que não estão incluídos no padrão do evento. O efeito é que há um curinga “*”: “*” para campos que não aparecem no padrão do evento.
Os valores de correspondência nos padrões de eventos seguem regras JSON. Você pode incluir strings entre aspas (“), números e as palavras-chave true
, false
e null
.
Para strings,EventBridge usacharacter-by-character correspondência exata sem conversão de caixa alta/baixa ou normalização de cadeias de caracteres.
No caso de números,EventBridge usa representação de string. Por exemplo, 300, 300.0 e 3.0e2 não são considerados iguais.
Quando você grava padrões de eventos para corresponder eventos, pode usar aTestEventPattern
API ou o comando datest-event-pattern
CLI para garantir que o padrão corresponda aos eventos corretos. Para obter mais informações, consulte TestEventPattern.
Veja a seguir um resumo de todas as operações de comparação disponíveis noEventBridge.
nota
Atualmente, nem todos os operadores de comparação são suportados pelo EventBridgePipes.
Comparação | Exemplo | Sintaxe da regra | Suportado por tubos |
---|---|---|---|
Nulo |
UserID é null |
"UserID": [ null ] |
Sim |
Vazio |
LastNameestá vazio |
"LastName": [""] |
Sim |
Igual |
Name é “Alice” |
"Name": [ "Alice" ] |
Sim |
É igual a (ignorar maiúsculas e minúsculas) |
Name é “Alice” |
“Nome”: [{"equals-ignore-case“: “alice”}] |
Não |
E |
Location é “Nova York” e o Day é “Monday” (Segunda-feira) |
"Location": [ "New York" ], "Day": ["Monday"] |
Sim |
Ou |
PaymentTypeé “Crédito” ou “Débito” |
PaymentType“: [“Credit”, “Debit"] |
Sim |
Ou (vários campos) |
O local é “Nova York” ou o dia é “segunda-feira”. |
“$or”: [{{{{{{“Location”: [{{{{{{{{{{{{{{{{{{“Location”: [{{{{{{{{{{{{{{{{{{{{{ |
Não |
Not |
Weather é qualquer valor, exceto “Raining” (Chovendo) |
"Weather": [ { "anything-but": [ "Raining" ] } ] |
Sim |
Numeric (equals) (Numérico, igual) |
Price é 100 |
"Price": [ { "numeric": [ "=", 100 ] } ] |
Sim |
Numeric (range) (Numérico, intervalo) |
Price é superior a 10 e menor que ou igual a 20 |
"Price": [ { "numeric": [ ">", 10, "<=", 20 ] } ] |
Sim |
Existe |
ProductNameexiste |
ProductName“: [{“exists”: true}] |
Sim |
Não existe |
ProductNamenão existe |
ProductName“: [{“exists”: false}] |
Sim |
Começa com |
Region é nos EUA |
"Region": [ {"prefix": "us-" } ] |
Sim |
Termina com |
FileNametermina com uma extensão.png. |
“FileName“: [{“sufixo”: “.png”}] |
Não |
Valores de correspondência
Em um padrão de evento, o valor a ser correspondido está em uma matriz JSON, cercada por colchetes (“[”, “]”) para que você possa fornecer vários valores. Por exemplo, para combinar eventos do Amazon EC2 ouAWS Fargate, você pode usar o seguinte padrão, que corresponde a eventos em que o valor do"source"
campo é"aws.ec2"
ou"aws.fargate"
.
{
"source": ["aws.ec2", "aws.fargate"]
}
Exemplo de eventos e padrões de eventos
Você pode usar todos os tipos e valores de dados JSON para combinar eventos. Os seguintes exemplos mostram eventos e padrões de eventos que os correspondem.
Combinação de campos
Você pode combinar o valor de um campo. Considere o seguinte evento do Amazon EC2 Auto Scaling.
{
"version": "0",
"id": "3e3c153a-8339-4e30-8c35-687ebef853fe",
"detail-type": "EC2 Instance Launch Successful",
"source": "aws.autoscaling",
"account": "123456789012",
"time": "2015-11-11T21:31:47Z",
"region": "us-east-1",
"resources": [],
"detail": {
"eventVersion": "",
"responseElements": null
}
}
Para o evento anterior, você pode usar o"responseElements"
campo para combinar.
{
"source": ["aws.autoscaling"],
"detail-type": ["EC2 Instance Launch Successful"],
"detail": {
"responseElements": [null]
}
}
Correspondência de
Considere o seguinte evento do Amazon Macie, que está truncado.
{
"version": "0",
"id": "0948ba87-d3b8-c6d4-f2da-732a1example",
"detail-type": "Macie Finding",
"source": "aws.macie",
"account": "123456789012",
"time": "2021-04-29T23:12:15Z",
"region":"us-east-1",
"resources": [
],
"detail": {
"schemaVersion": "1.0",
"id": "64b917aa-3843-014c-91d8-937ffexample",
"accountId": "123456789012",
"partition": "aws",
"region": "us-east-1",
"type": "Policy:IAMUser/S3BucketEncryptionDisabled",
"title": "Encryption is disabled for the S3 bucket",
"description": "Encryption is disabled for the Amazon S3 bucket. The data in the bucket isn’t encrypted
using server-side encryption.",
"severity": {
"score": 1,
"description": "Low"
},
"createdAt": "2021-04-29T15:46:02Z",
"updatedAt": "2021-04-29T23:12:15Z",
"count": 2,
.
.
.
O padrão de evento a seguir corresponde a qualquer evento que tenha uma pontuação de gravidade de 1 e uma contagem de 2.
{
"source": ["aws.macie"],
"detail-type": ["Macie Finding"],
"detail": {
"severity": {
"score": [1]
},
"count":[2]
}
}