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
Você pode usar os tópicos desta seção para solucionar EventBridge problemas da Amazon.
Tópicos
- Minha regra foi executada, mas minha função do Lambda não foi invocada
- Acabei de criar/modificar uma regra, mas ela não corresponde a um evento de teste
- Minha regra não foi executada no momento em que eu especifiquei no ScheduleExpression
- Minha regra não foi acionada no momento que eu esperava
- Minha regra corresponde às API chamadas de serviço AWS globais, mas não foi executada
- A IAM função associada à minha regra está sendo ignorada quando a regra é executada
- Minha regra tem um padrão de evento que deveria corresponder a um recurso, mas nenhum evento corresponde
- A entrega do meu evento no destino sofreu um atraso
- Alguns eventos nunca foram entregues em meu destino
- Minha regra foi executada mais de uma vez em resposta a um evento
- Como evitar loops infinitos
- Meus eventos não são entregues na SQS fila de destino da Amazon
- Minha regra funciona, mas não vejo nenhuma mensagem publicada no meu SNS tópico da Amazon
- Meu SNS tópico da Amazon ainda tem permissões para, EventBridge mesmo depois de eu excluir a regra associada ao SNS tópico da Amazon
- Com quais chaves de IAM condição posso usar EventBridge?
- Como posso saber quando EventBridge as regras foram violadas?
Minha regra foi executada, mas minha função do Lambda não foi invocada
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
-
Usando o AWS CLI, execute o seguinte comando com sua função e sua AWS região:
aws lambda get-policy --function-name
MyFunction
--regionus-east-1
Você verá a saída a seguir.
{ "Policy": "{\"Version\":\"2012-10-17\", \"Statement\":[ {\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:us-east-1:123456789012:rule/MyRule\"}}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:MyFunction\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Sid\":\"MyId\"} ], \"Id\":\"default\"}" }
-
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-idMyId
\ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012
:rule/MyRule
-
Se a saída tiver um
SourceAccount
campo, será preciso removê-lo. UmaSourceAccount
configuração EventBridge impede a possibilidade de invocar a função.
nota
Se a política estiver incorreta, você poderá editar a regra no EventBridge console removendo-a e adicionando-a novamente à regra. Em seguida, o EventBridge console define as permissões corretas no destino.
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-idMyId
\ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012
:rule/MyRule
--qualifieralias or version
Acabei de criar/modificar uma regra, mas ela não corresponde a um evento de teste
Quando fizer uma alteração em uma regra ou em seus destinos, os futuros eventos 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.
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 TestEventPatternna EventBridge APIReferência da Amazon.Use o Sandbox no EventBridge console
.
Minha regra não foi executada no momento em que eu especifiquei no ScheduleExpression
Verifique se você definiu a programação da regra no fuso horário UTC +0. 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.
Minha regra não foi acionada no momento que eu esperava
EventBridge executa as regras 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 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 API chamadas de serviço AWS globais, mas não foi executada
AWS serviços globais; como, IAM e o Amazon Route 53, só estão disponíveis na região Leste dos EUA (Norte da Virgínia), portanto, eventos de AWS API chamadas de serviços globais só estão disponíveis nessa região. Para ter mais informações, consulte Eventos de AWS serviços na Amazon EventBridge.
A IAM função associada à minha regra está sendo ignorada quando a regra é executada
EventBridge usa apenas IAM funções para regras que enviam eventos para streams do Kinesis. Para regras que invocam funções do Lambda ou tópicos da SNS Amazon, você precisa fornecer permissões baseadas em recursos.
Certifique-se de que seus AWS STS endpoints regionais estejam habilitados, para que EventBridge possa usá-los ao assumir a IAM função que você forneceu. Para obter mais informações, consulte Ativação e desativação AWS STS em uma AWS região no Guia do IAM usuário.
Minha regra tem um padrão de evento que deveria corresponder a um recurso, mas nenhum evento corresponde
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. Certifique-se de usar os ARN caracteres corretos ao criar padrões de eventos para que eles correspondam à ARN sintaxe do evento correspondente.
Alguns eventos, como eventos de AWS API chamada de CloudTrail, não têm nada no campo de recursos.
A entrega do meu evento no destino sofreu um atraso
EventBridge tenta entregar um evento a um alvo 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. Recomendamos que você configure um DLQ para armazenar eventos que não puderam ser entregues com sucesso a um alvo. Para ter mais informações, consulte Usando filas de cartas mortas para processar eventos não entregues em EventBridge.
Alguns eventos nunca foram entregues em meu destino
Se o alvo de uma EventBridge regra 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 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
Em casos raros, a mesma regra pode ser acionada mais de uma vez para um único evento ou horário programado, ou o mesmo destino pode ser invocado mais de uma vez para uma determinada regra acionada.
Como evitar loops infinitos
Em EventBridge, é possível criar uma regra 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.
Meus eventos não são entregues na SQS fila de destino da Amazon
Se sua SQS fila da Amazon estiver criptografada, você deverá criar uma KMS chave gerenciada pelo cliente e incluir a seguinte seção de permissão em sua KMS política de chaves. Para obter mais informações, consulte Configurando AWS KMS permissões.
{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
Minha regra funciona, mas não vejo nenhuma mensagem publicada no meu SNS tópico da Amazon
Cenário 1
Você precisa de permissão para que as mensagens sejam publicadas em seu SNS tópico da Amazon. Use o comando a seguir usando o AWS CLI, substituindo us-east-1 por sua região e usando seu tópico. ARN
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.
"{\"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-valueNEW_POLICY_STRING
nota
Cenário 2
Se seu SNS tópico estiver criptografado, você deverá incluir a seção a seguir em sua política de KMS chaves.
{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
Meu SNS tópico da Amazon ainda tem permissões para, EventBridge mesmo depois de eu excluir a regra associada ao SNS tópico da Amazon
Quando você cria uma regra com a Amazon SNS como alvo, EventBridge adiciona permissão ao seu SNS tópico da Amazon em seu nome. Se você excluir a regra logo após criá-la, EventBridge talvez não remova a permissão do seu SNS tópico na Amazon. 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.
Com quais chaves de IAM condição posso usar EventBridge?
EventBridge suporta as chaves de condição AWS-wide (consulte IAMe AWS STS condicione as chaves de contexto no Guia IAM do Usuário), além das chaves listadas emUsando as condições IAM da política na Amazon EventBridge.
Como posso saber quando EventBridge as regras foram violadas?
Você pode usar o alarme a seguir para notificá-lo quando suas EventBridge regras forem violadas.
Para criar um alarme para alertar quando as regras são violadas
-
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. -
Escolha Create Alarm. No painel CloudWatch Métricas por categoria, escolha Métricas de eventos.
-
Na lista de métricas, selecione FailedInvocations.
-
Acima do gráfico, escolha Estatística, Soma.
-
Para Período, selecione um valor, por exemplo, 5 minutos. Escolha Próximo.
-
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.
-
Para is, escolha >= and 1. Para for, digite 10.
-
Em Ações, em Sempre que houver esse alarme, escolha Estado é ALARM.
-
Em Enviar notificação para, selecione um SNS tópico existente da Amazon ou crie um novo. Para criar um novo tópico do , selecione Nova lista. Digite um nome para o novo SNS tópico da Amazon, por exemplo: myFailedRules.
-
Em Lista de e-mail, digite uma lista separada por vírgulas de endereços de e-mail a serem notificados quando o alarme mudar para o ALARMestado.
-
Escolha Create Alarm.