Solução de problemas do Amazon EventBridge Scheduler - EventBridge Agendador

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 do Amazon EventBridge Scheduler

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

Minha agenda falha com erros de destino.

As falhas de invocação do Target são um dos problemas mais comuns com EventBridge o Scheduler. Essas falhas podem ocorrer por diversos motivos:

Causas comuns:

  • Parâmetros de destino ausentes ou incorretos.

  • Problemas de conectividade de rede.

  • Controle de utilização de API.

  • Configuração de destino incorreta.

Etapas de solução de problemas

  1. Configurar uma fila de mensagens não entregues (DLQ)

    • Uma DLQ ajuda você a capturar e analisar invocações com falha.

    • As invocações com falha são enviadas para a DLQ com mensagens de erro detalhadas.

    • Para configurar uma DLQ, adicione-a à sua configuração de agendamento:

    { "DeadLetterConfig": { "Arn": "arn:aws:sqs:region:account-id:MyDLQ" } }

    Observação: se sua DLQ estiver criptografada com uma chave KMS, certifique-se de que a política de chaves permita que o EventBridge Scheduler a use:

    { "Sid": "Allow EventBridge Scheduler to use the key", "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
  2. Verificar parâmetros da API

    • Garanta que todos os parâmetros necessários para as chamadas da API de destino estejam presentes e formatados corretamente.

    • Confira se os valores dos parâmetros estão dentro dos intervalos permitidos.

    • Verifique se o endpoint da API está acessível por meio da sua VPC, caso esteja utilizando endpoints da VPC.

  3. Analisar a configuração da rede

    • Se as chamadas falharem devido a problemas transitórios de rede, implemente uma lógica de repetição.

    • Exemplo de política de repetição:

    { "RetryPolicy": { "MaximumRetryAttempts": 3, "MaximumEventAgeInSeconds": 3600 } }
  4. Conferir configurações específicas do destino

    • Para destinos com modelos (como tarefas do ECS), forneça substituições por meio do parâmetro Target.Input da API de criação de agendamento.

    • Verifique se o serviço desejado é compatível e está configurado corretamente.

Problemas com permissões de perfil de execução de agendamento

Problemas com permissões de perfil do IAM são uma causa comum de falhas na execução de agendamentos. Veja como solucionar e resolver esses problemas:

Causas comuns

  • Faltam as permissões necessárias para o serviço de destino

  • Configuração de perfil incorreta no agendamento

  • Falta de relação de confiança com o serviço EventBridge Scheduler

  • Permissões insuficientes para acessar recursos criptografados

Sintomas

  • TargetErrorCountMétrica aumentada em CloudWatch

  • Os agendamentos não são executados sem problemas aparentes na configuração do agendamento

Etapas de solução de problemas

  1. Monitore CloudWatch métricas

    • Verifique a TargetErrorCount métrica CloudWatch.

  2. Use a fila de mensagens não entregues (DLQ) para confirmar problemas de permissão

    • Configure uma DLQ para seu agendamento.

    • Se houver problemas de permissão com seu destino e a DLQ estiver configurada corretamente, você verá as invocações com falha na DLQ com mensagens de erro relacionadas a permissões.

    • Se a DLQ permanecer vazia apesar das falhas de execução mostradas nas CloudWatch métricas, isso provavelmente indica um problema de permissão que impede o EventBridge Scheduler de gravar na própria DLQ.

    nota

    Certifique-se de que a própria DLQ tenha as permissões corretas. Se estiver criptografado, certifique-se de que o EventBridge Agendador tenha permissão para usar a chave KMS.

  3. Verificar relação de confiança

    • Certifique-se de que sua função do IAM tenha a relação de confiança correta com o EventBridge Scheduler:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
  4. Verificar permissões de função de execução de agendamento

    • O perfil de execução do agendamento requer permissões específicas para invocar diferentes tipos de destino.

    • Exemplos de permissões a serem incluídos na política de perfil de execução do seu agendamento:

    // For Lambda function targets - add to schedule execution role { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" }] } // For SQS queue targets - add to schedule execution role { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": "arn:aws:sqs:region:account-id:queue-name" }] }
  5. Verificar se o acesso ao recurso está criptografado

    • Se o seu destino utiliza recursos criptografados (por exemplo, filas SQS criptografadas com KMS), certifique-se de que seu perfil tenha permissões para usar a chave do KMS:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:account-id:key/key-id" } ] }
  6. Verificar configuração do ARN do perfil

    • Verifique se o ARN da função na sua configuração de agendamento está correto.

    • Verifique se a função existe na mesma Conta da AWS região da sua agenda.

Noções básicas e gerenciamento de Service Quotas

Se você estiver enfrentando problemas ao criar agendas ou ver invocações limitadas, talvez esteja atingindo os limites da cota de serviço. EventBridge O Scheduler tem cotas para o número de agendamentos, grupos de agendamentos e taxas de invocação, que podem variar de acordo com a região.

Identificar problemas de cota

Para determinar se você está atingindo os limites da cota:

  1. Monitore CloudWatch métricas

    • Verifique a métrica InvocationThrottleCount. Um aumento nessa métrica indica que você está excedendo seu limite de taxa de invocação.

    • Analise a métrica InvocationAttemptCount para entender seu uso atual.

  2. Preste atenção a mensagens de erro específicas

    • Ao criar ou modificar agendamentos, um LimitExceededException indica que você atingiu o número máximo de agendamentos ou grupos de agendamentos.

    • Chamadas de API que exibem erros de controle de utilização sugerem que você está excedendo a cota de solicitações da API.

Solucionar problemas de cota

Se você constatar que está atingindo os limites de cota:

  1. Analise e otimize seus agendamentos atuais. Pense em consolidar agendamentos semelhantes ou remover os que não são utilizados.

  2. Para controle de utilização da API, implemente a repetição com um intervalo de espera em suas chamadas de API.

  3. Se precisar de cotas maiores, solicite um aumento por meio do console de Service Quotas. Selecione EventBridge Agendador, escolha a cota que você precisa aumentar e envie uma solicitação com a justificativa da sua empresa.

Problemas de padrão de agendamento e tempo de gatilho

Às vezes, os usuários encontram problemas em que os agendamentos não são acionados no tempo esperado. Isso geralmente ocorre devido a mal-entendidos sobre padrões de agendamento, mudanças no horário de verão ou janelas de tempo flexíveis.

Causas comuns

  • Interpretação incorreta das expressões cron.

  • Comportamento inesperado durante mudanças de horário de verão.

  • Confusão sobre janelas de tempo flexíveis.

  • Incompreensão das expressões rate.

Etapas de solução de problemas

  1. Verificar expressões cron

    • Garanta que sua expressão cron esteja formatada corretamente.

    • Observe que você não pode especificar ambos day-of-month e day-of-week campos simultaneamente em uma expressão cron.

  2. Considerações sobre o fuso horário

    • Selecione o fuso horário de sua preferência ao criar o agendamento.

    • Entenda como o horário de verão afeta sua rotina, pois esse ajuste é baseado no UTC.

    Exemplo do impacto do horário de verão: se você configurar um agendamento para ser executado às 7h GMT:

    • Durante o inverno: o horário de funcionamento é às 7h AM GMT (já que GMT = UTC).

    • Durante o verão: o horário de funcionamento continua sendo às 7h AM UTC, que agora corresponde às 6h AM GMT/BST

    Se você precisa que o agendamento seja executado no mesmo horário local durante todo o ano, selecione o fuso horário apropriado ao criar o agendamento e verifique como o horário de verão pode afetar esse fuso horário.

  3. Noções básicas sobre janelas de tempo flexíveis

    • Janelas de tempo flexíveis permitem que o EventBridge Scheduler otimize as invocações.

    • O agendamento talvez não seja acionado exatamente no início do período.

    • Monitore os horários reais de invocação para entender o comportamento.

  4. Revisar expressões cron e rate

    • Verifique se as expressões rate estão formatadas corretamente (por exemplo, rate(5 minutes), rate(1 hour)).

    • Tanto para expressões rate quanto para expressões cron, esteja ciente de que as invocações do agendamento não são limitadas ao segundo 0 de um minuto.

    • Os agendamentos podem ser acionados dentro do minuto especificado, mas não necessariamente no início exato do minuto.

    Por exemplo:

    • Um agendamento com rate(1 hour) pode começar às 14:00:45, 15:00:32, 16:00:18 etc.

    • Um agendamento cron definido para 0 * * * ? * (a cada hora) pode ser executado às 14:00:15 PM, 15:00:07 PM, 16:00:52 PM etc.

  5. Monitore CloudWatch métricas

    • Use a métrica InvocationAttemptCount para verificar se seu agendamento está sendo acionado.

    • Confira TargetErrorCount se as invocações estão falhando.

    • Se você configurou uma fila de mensagens não entregues, monitore InvocationsSentToDeadLetterCount para rastrear invocações com falha.

Criação de padrões de agendamento e expressões cron

Os usuários geralmente encontram problemas ao criar padrões de agendamento, principalmente com expressões cron. Conheça alguns problemas comuns e como resolvê-los:

Problemas comuns

  • Sintaxe cron incorreta

  • Tentativa de usar recursos cron não compatíveis

  • Confusão sobre quais campos podem ser usados ​​em conjunto

Etapas de solução de problemas

  1. Revisar a sintaxe da expressão cron

    • Certifique-se de que sua expressão cron siga o formato correto: Minutes Hours Day-of-month Month Day-of-week Year.

    • Lembre-se de que o EventBridge Scheduler usa o padrão cron com um campo adicional de Ano.

  2. Compreender as limitações

    • Você não pode especificar os day-of-week campos day-of-month e simultaneamente, conforme discutido aqui.

    • As expressões cron que levam a taxas mais rápidas do que 1 minuto não têm suporte.

  3. Usar o atributo de pré-visualização do agendamento

    • Ao criar ou editar um cronograma, o EventBridge Scheduler fornece uma prévia dos próximos 10 tempos de execução.

    • Use esta pré-visualização para verificar se o seu agendamento será executado nos horários pretendidos.

    • Se a pré-visualização não corresponder às suas expectativas, revise e ajuste sua expressão cron.

Meu destino está sendo acionado?

Para confirmar se o seu destino está sendo acionado:

  1. Verifique CloudWatch as métricas:

    • InvocationAttemptCount mostra o número de tentativas de invocação.

    • TargetErrorCount indica se alguma invocação falhou.

    • TargetErrorThrottledCount mostra se a sua conexão está com controle de utilização.

    • InvocationDroppedCount indica se alguma invocação foi descartada.

  2. Configure uma fila de mensagens não entregues (DLQ) para capturar e analisar quaisquer invocações com falha.

Destinos modelados versus destinos universais

Se você receber um erro como "Solicitação inválida fornecida: [serviço] não é um serviço compatível para o destino", você pode estar tentando usar um serviço não compatível como destino de modelo.

Para resolver esse problema:

  1. Verifique se o serviço desejado é compatível como um destino com modelo.

  2. Caso não seja compatível, utilize um destino universal e configure-o para fazer a chamada de API apropriada para o seu serviço.

Agendar atualizações acionando invocações inesperadas

Ao fazer uma alteração em um agendamento, as invocações talvez não reflitam imediatamente o agendamento atualizado. Permita um curto período para que as alterações entrem em vigor. Por exemplo, se você atualizar um agendamento próximo ao horário de acionamento original, poderá ver uma invocação baseada na configuração original do agendamento.

Desabilitar ou habilitar agendamentos únicos

Ao reativar um agendamento único após o horário originalmente agendado ter passado, o agendamento poderá invocar imediatamente seu destino. Isso pode ocorrer mesmo que o agendamento tenha sido desativado antes do horário de execução original.

Por exemplo:

  • Hora atual: 13:15 UTC

  • Agendamento único criado para: 13:30 UTC

  • O agendamento será desabilitado antes das 13:30 UTC

  • O agendamento será reativado às 14:00 UTC.

  • Resultado: o destino pode ser invocado imediatamente após a reativação.