

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

# Solução de problemas da Amazon EventBridge
<a name="eb-troubleshooting"></a>

Você pode usar os tópicos desta seção para solucionar EventBridge problemas da Amazon.

**dica**  
Para verificar se seus padrões de eventos correspondem aos eventos esperados, você pode usar o EventBridge Sandbox para testar padrões de eventos em relação a eventos de amostra. Para obter mais informações, consulte [Testando padrões de eventos usando o EventBridge Sandbox](eb-event-pattern-sandbox.md).

**Topics**
+ [Minha regra foi executada, mas minha função do Lambda não foi invocada](#eb-lam-function-not-invoked)
+ [Acabei de criar/modificar uma regra, mas ela não corresponde a um evento de teste](#eb-rule-does-not-match)
+ [Minha regra não foi executada no momento em que eu especifiquei no `ScheduleExpression`](#eb-rule-did-not-trigger)
+ [Minha regra não foi acionada no momento que eu esperava](#eb-rule-did-not-trigger-on-time)
+ [Minha regra corresponde às chamadas de API de serviço AWS global, mas não foi executada](#eb-rule-did-not-trigger-iam)
+ [O perfil do IAM associado à minha regra está sendo ignorado quando a regra é executada](#eb-iam-role-ignored)
+ [Minha regra tem um padrão de evento que deveria corresponder a um recurso, mas nenhum evento corresponde](#eb-events-do-not-match-rule)
+ [A entrega do meu evento no destino sofreu um atraso](#eb-delayed-event-delivery)
+ [Alguns eventos nunca foram entregues em meu destino](#eb-never-delivered-to-target)
+ [Minha regra foi executada mais de uma vez em resposta a um evento](#eb-rule-triggered-more-than-once)
+ [Como evitar loops infinitos](#eb-prevent-infinite-loops)
+ [Os eventos não são entregues na fila de destino do Amazon SQS](#eb-sqs-encrypted)
+ [Minha regra é executada, mas eu não vejo nenhuma mensagem publicada no meu tópico do Amazon SNS](#eb-no-messages-published-sns)
+ [Meu tópico do Amazon SNS ainda tem permissões para, EventBridge mesmo depois de eu excluir a regra associada ao tópico do Amazon SNS](#eb-sns-permissions-persist)
+ [Com quais chaves de condição do IAM posso usar EventBridge?](#eb-supported-access-policies)
+ [Como posso saber quando EventBridge as regras foram violadas?](#eb-create-alarm-broken-event-rules)

## Minha regra foi executada, mas minha função do Lambda não foi invocada
<a name="eb-lam-function-not-invoked"></a>

Um dos motivos pelos quais sua função do Lambda pode não ser executada é se não tiver as permissões corretas. 

**Para verificar as permissões da função do Lambda**

1. Usando o AWS CLI, execute o seguinte comando com sua função e sua AWS região:

   ```
   aws lambda get-policy --function-name {{MyFunction}} --region {{us-east-1}}
   ```

   Você verá a saída a seguir.

------
#### [ JSON ]

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
   "Condition": {
   "ArnLike": {
   "AWS:SourceArn": "arn:aws:events:{{us-east-1}}:{{123456789012}}:rule/{{rule-name}}"
   }
   },
   "Action": "lambda:InvokeFunction",
   "Resource": "arn:aws:lambda:{{us-east-1}}:{{123456789012}}:function:{{function-name}}",
   "Effect": "Allow",
   "Principal": {
   "Service": "events.amazonaws.com"
   },
   "Sid": "MyId"
   }
   ],
   "Id": "default"
   }
   ```

------

1. Se vir a seguinte mensagem:

   ```
   A client error (ResourceNotFoundException) occurred when calling the GetPolicy operation: The resource you requested does not exist.
   ```

   Ou se vir a saída, mas não conseguir localizar events.amazonaws.com como uma entidade confiável na política, execute o seguinte comando:

   ```
   aws lambda add-permission \
   --function-name {{MyFunction}} \
   --statement-id {{MyId}} \
   --action 'lambda:InvokeFunction' \
   --principal events.amazonaws.com \
   --source-arn arn:aws:events:us-east-1:{{123456789012}}:rule/{{MyRule}}
   ```

1. Se a saída tiver um `SourceAccount` campo, será preciso removê-lo. Uma `SourceAccount` configuração EventBridge impede a possibilidade de invocar a função.

**nota**  
Se a política estiver incorreta, você poderá editar a [regra](eb-rules.md) no EventBridge console removendo-a e adicionando-a novamente à regra. Em seguida, o EventBridge console define as permissões corretas no [destino](eb-targets.md).  
Se estiver usando uma versão ou um alias específico do Lambda, deverá incluir o parâmetro `--qualifier` nos comandos `aws lambda get-policy` e `aws lambda add-permission`, conforme mostrado no segunite comando   

```
aws lambda add-permission \
--function-name {{MyFunction}} \
--statement-id {{MyId}} \
--action 'lambda:InvokeFunction' \
--principal events.amazonaws.com \
--source-arn arn:aws:events:us-east-1:{{123456789012}}:rule/{{MyRule}}
--qualifier {{alias or version}}
```

## Acabei de criar/modificar uma regra, mas ela não corresponde a um evento de teste
<a name="eb-rule-does-not-match"></a>

Quando fizer uma alteração em uma [regra](eb-rules.md) ou em seus [destinos](eb-targets.md), os futuros [eventos](eb-events.md) poderão não começar imediatamente ou parar a correspondência com regras novas ou atualizadas. Permita um curto período para que as alterações entrem em vigor. 

Se os eventos ainda não coincidirem após um curto período de tempo `TriggeredRules``Invocations`, verifique as CloudWatch métricas e `FailedInvocations` sua regra. Para obter mais informações sobre essas métricas, consulte [Monitoramento da Amazon EventBridge](eb-monitoring.md).

Se a regra se destina a corresponder a um evento de um AWS serviço, faça o seguinte:
+ Use a ação `TestEventPattern` para testar o padrão de evento se sua regra corresponder a um evento de teste. Para obter mais informações, consulte [TestEventPattern](https://docs.aws.amazon.com/AmazonCloudWatchEvents/latest/APIReference/API_TestEventPattern.html)a *Amazon EventBridge API Reference*.
+ Use o **Sandbox** no [EventBridge console](https://console.aws.amazon.com/events).

## Minha regra não foi executada no momento em que eu especifiquei no `ScheduleExpression`
<a name="eb-rule-did-not-trigger"></a>

Verifique se definiu o agendamento para a [regra](eb-rules.md) ser acionada no fuso horário UTC. Se a `ScheduleExpression` estiver correta, siga as etapas em [Acabei de criar/modificar uma regra, mas ela não corresponde a um evento de teste](#eb-rule-does-not-match).

## Minha regra não foi acionada no momento que eu esperava
<a name="eb-rule-did-not-trigger-on-time"></a>

EventBridge executa [as regras](eb-rules.md) dentro de um minuto da hora de início que você definiu. A contagem regressiva para execução começa assim que você cria a regra.

**nota**  
As regras programadas têm um tipo de entrega `guaranteed`, o que significa que os eventos serão acionados para cada horário esperado pelo menos uma vez.

É possível usar uma expressão cron para invocar [destinos](eb-targets.md) em um horário especificado. Para criar uma regra que seja executada a cada quatro horas no 0º minuto, faça o seguinte:
+ No EventBridge console, você usa a expressão `0 0/4 * * ? *` cron.
+ Usando o AWS CLI, você usa a expressão`cron(0 0/4 * * ? *)`.

Por exemplo, para criar uma regra chamada `TestRule` que é executada a cada 4 horas usando o AWS CLI, use o comando a seguir.

```
aws events put-rule --name {{TestRule}} --schedule-expression 'cron(0 0/4 * * ? *)'
```

Para executar uma regra a cada cinco minutos, use a seguinte expressão cron.

```
aws events put-rule --name {{TestRule}} --schedule-expression 'cron(0/5 * * * ? *)'
```

A melhor resolução para uma EventBridge regra que usa uma expressão cron é de um minuto. Sua regra programada é acionada dentro desse minuto, mas não no 0º segundo preciso.

Como EventBridge os serviços de destino são distribuídos, pode haver um atraso de vários segundos entre o momento em que a regra programada é executada e o momento em que o serviço de destino executa a ação no recurso de destino.

## Minha regra corresponde às chamadas de API de serviço AWS global, mas não foi executada
<a name="eb-rule-did-not-trigger-iam"></a>

AWS serviços globais, como IAM e Amazon Route 53, só estão disponíveis na região Leste dos EUA (Norte da Virgínia), portanto, eventos de chamadas de AWS API de serviços globais só estão disponíveis nessa região. Para obter mais informações, consulte [Eventos de AWS serviços](eb-events.md#eb-service-event).

## O perfil do IAM associado à minha regra está sendo ignorado quando a regra é executada
<a name="eb-iam-role-ignored"></a>

EventBridge usa apenas funções do IAM para [regras](eb-rules.md) que enviam [eventos para streams](eb-events.md) do Kinesis. Para regras que chamem funções do Lambda e tópicos do Amazon SNS, é preciso conceder [permissões baseadas em recursos](eb-use-resource-based.md).

Certifique-se de que seus AWS STS endpoints regionais estejam habilitados, para que EventBridge possa usá-los ao assumir a função do IAM que você forneceu. Para obter mais informações, consulte [Ativação e desativação AWS STS em uma AWS região no Guia](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) do usuário do *IAM*.

## Minha regra tem um padrão de evento que deveria corresponder a um recurso, mas nenhum evento corresponde
<a name="eb-events-do-not-match-rule"></a>

[A maioria dos serviços AWS trata dois pontos (:) ou barra (/) como o mesmo caractere em Amazon Resource Names (ARNs)., mas EventBridge usa uma correspondência exata nos [padrões e regras de eventos](eb-event-patterns.md).](eb-rules.md) Certifique-se de usar os caracteres de ARN corretos ao criar padrões de evento para que eles correspondam à sintaxe do ARN no [evento](eb-events.md) para corresponder.

Alguns eventos, como eventos de chamada de AWS API de CloudTrail, não têm nada no campo de recursos.

## A entrega do meu evento no destino sofreu um atraso
<a name="eb-delayed-event-delivery"></a>

EventBridge tenta entregar um [evento](eb-events.md) a um [alvo](eb-targets.md) por até 24 horas, exceto em cenários em que seu recurso alvo é restrito. A primeira tentativa é feita assim que o evento chega no stream de eventos. Se o serviço de destino estiver com problemas, reagenda EventBridge automaticamente outra entrega. Se já passaram 24 horas desde a chegada do evento, para EventBridge de tentar entregar o evento e publica a `FailedInvocations` métrica em CloudWatch. É recomendada a configuração de uma DLQ para armazenar eventos que não puderam ser entregues com êxito a um destino. Para obter mais informações, consulte [Usando filas de cartas mortas para processar eventos não entregues em EventBridge](eb-rule-dlq.md).

## Alguns eventos nunca foram entregues em meu destino
<a name="eb-never-delivered-to-target"></a>

Se o [alvo](eb-targets.md) de uma EventBridge [regra](eb-rules.md) for restrito por um período prolongado, EventBridge talvez não tente novamente a entrega. Por exemplo, se o destino não estiver provisionado para lidar com o tráfego de [eventos](eb-events.md) de entrada e o serviço de destino estiver limitando as solicitações feitas em seu nome, talvez não tente EventBridge fazer a entrega novamente EventBridge .

## Minha regra foi executada mais de uma vez em resposta a um evento
<a name="eb-rule-triggered-more-than-once"></a>

Em casos raros, a mesma [regra](eb-rules.md) pode ser acionada mais de uma vez para um único [evento](eb-events.md) ou horário programado, ou o mesmo [destino](eb-targets.md) pode ser invocado mais de uma vez para uma determinada regra acionada. 

## Como evitar loops infinitos
<a name="eb-prevent-infinite-loops"></a>

Em EventBridge, é possível criar uma [regra](eb-rules.md) que leva a loops infinitos, onde a regra é executada repetidamente. Se tiver uma regra que cause um loop infinito, reescreva-a para que as ações realizadas pela regra não correspondam à mesma regra. 

Por exemplo, uma regra que detecta alterações em um bucket do Amazon S3 e, em seguida, executa um software para alterá-las para um novo estado causa um loop infinito. ACLs Uma maneira de resolver isso é reescrever a regra para que ela corresponda apenas aos ACLs que estão em um estado ruim. 

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](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/budgets-managing-costs.html).

## Os eventos não são entregues na fila de destino do Amazon SQS
<a name="eb-sqs-encrypted"></a>

Se sua fila do Amazon SQS estiver criptografada, deverá criar uma chave KMS gerenciada pelo cliente e incluir a seguinte seção de permissão na sua política de chave do KMS. Para obter mais informações, consulte [Configurando AWS KMS permissões](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html#sqs-what-permissions-for-sse).

```
{
  "Sid": "Allow EventBridge to use the key",
  "Effect": "Allow",
  "Principal": {
    "Service": "events.amazonaws.com"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Resource": "*"
}
```

## Minha regra é executada, mas eu não vejo nenhuma mensagem publicada no meu tópico do Amazon SNS
<a name="eb-no-messages-published-sns"></a>

**Cenário 1**

É preciso de permissão para que as mensagens sejam publicadas em seu tópico do Amazon SNS. Use o comando a seguir usando o AWS CLI, substituindo us-east-1 pela sua região e usando o ARN do tópico.

```
aws sns get-topic-attributes --region {{us-east-1}} --topic-arn "arn:aws:sns:{{us-east-1}}:{{123456789012}}:MyTopic"
```

Para ter a permissão correta, seus atributos de política são semelhantes aos seguintes.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "__default_policy_ID",
    "Statement": [
    {
    "Sid": "__default_statement_ID",
    "Effect": "Allow",
    "Principal": {
    "AWS": "*"
    },
    "Action": [
    "SNS:Subscribe",
    "SNS:ListSubscriptionsByTopic",
    "SNS:DeleteTopic",
    "SNS:GetTopicAttributes",
    "SNS:Publish",
    "SNS:RemovePermission",
    "SNS:AddPermission",
    "SNS:SetTopicAttributes"
    ],
    "Resource": "arn:aws:sns:us-east-1:123456789012:{{MyTopic}}",
    "Condition": {
    "StringEquals": {
    "AWS:SourceOwner": "123456789012"
    }
    }
    },
    {
    "Sid": "Allow_Publish_Events",
    "Effect": "Allow",
    "Principal": {
    "Service": "events.amazonaws.com"
    },
    "Action": "sns:Publish",
    "Resource": "arn:aws:sns:us-east-1:123456789012:{{MyTopic}}"
    }
    ]
    }
```

------

Se não vê `events.amazonaws.com` com permissão de `Publish` em sua política, primeiro copie a política atual e adicione a seguinte declaração à lista de declarações.

```
{\"Sid\":\"Allow_Publish_Events\",
\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},
\"Action\":\"sns:Publish\",
\"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}
```

Em seguida, defina os atributos do tópico usando o comando AWS CLI, use o seguinte comando.

```
aws sns set-topic-attributes --region {{us-east-1}} --topic-arn "arn:aws:sns:us-east-1:{{123456789012}}:MyTopic" --attribute-name Policy --attribute-value {{NEW_POLICY_STRING}}
```

**nota**  
Se a política estiver incorreta, você também poderá editar a [regra](eb-rules.md) no EventBridge console removendo-a e adicionando-a novamente à regra. EventBridge define as permissões corretas no [alvo](eb-targets.md).

**Cenário 2**

Se seu tópico do SNS estiver criptografado, deverá incluir a seção a seguir em sua política de chave do KMS.

```
{
  "Sid": "Allow EventBridge to use the key",
  "Effect": "Allow",
  "Principal": {
    "Service": "events.amazonaws.com"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Resource": "*"
}
```

## Meu tópico do Amazon SNS ainda tem permissões para, EventBridge mesmo depois de eu excluir a regra associada ao tópico do Amazon SNS
<a name="eb-sns-permissions-persist"></a>

Quando você cria uma [regra](eb-rules.md) com o Amazon SNS como [alvo](eb-targets.md), EventBridge adiciona permissão ao seu tópico do Amazon SNS em seu nome. Se você excluir a regra logo após criá-la, EventBridge talvez não remova a permissão do seu tópico do Amazon SNS. Se isso acontecer, será possível remover a permissão do tópico ao usar o comando `aws sns set-topic-attributes`. Para obter informações sobre permissões baseadas em recursos para enviar eventos, consulte [Usando políticas baseadas em recursos para a Amazon EventBridge](eb-use-resource-based.md).

## Com quais chaves de condição do IAM posso usar EventBridge?
<a name="eb-supported-access-policies"></a>

EventBridge suporta as chaves de condição AWS-wide (consulte [IAM e chaves de contexto de AWS STS condição](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html) no *Guia do usuário do IAM*), além das chaves listadas em[Usando as condições da política do IAM na Amazon EventBridge](eb-use-conditions.md).

## Como posso saber quando EventBridge as regras foram violadas?
<a name="eb-create-alarm-broken-event-rules"></a>

Você pode usar o alarme a seguir para notificá-lo quando suas EventBridge [regras](eb-rules.md) forem violadas.

**Para criar um alarme para alertar quando as regras são violadas**

1. Abra o CloudWatch console em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Escolha **Criar Alarm**. No painel **CloudWatch Métricas por categoria**, escolha **Métricas de eventos**.

1. Na lista de métricas, selecione **FailedInvocations**.

1. Acima do gráfico, escolha **Estatística**, **Soma**.

1. Para **Período**, selecione um valor, por exemplo, **5 minutos**. Escolha **Próximo**.

1. Em **Limite de alarme**, em **Nome**, digite um nome exclusivo para o alarme, por exemplo **myFailedRules**. Em **Descrição**, digite uma descrição do alarme, por exemplo, **Regras não estão entregando eventos para destinos**.

1. Para **is**, escolha **>=** and **1**. Para **for**, digite **10**.

1. Em **Actions** (Ações), em **Whenever this alarm** (Sempre que este alarme), escolha **State is ALARM** (Estado é ALARME).

1. Em **Send notification to** (Enviar notificação para), selecione um tópico existente do Amazon SNS ou crie outro. Para criar um novo tópico do , selecione **Nova lista**. Digite um nome para o novo tópico do Amazon SNS, por exemplo:. **myFailedRules** 

1. Para **E-mail**, digite uma lista de endereços de e-mail separados por vírgulas a serem notificados quando o alarme mudar para o estado **ALARME**.

1. Escolha **Criar Alarm**.