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á.
Configurando a fila de mensagens mortas de uma agenda no Scheduler EventBridge
O Amazon EventBridge Scheduler suporta filas de mensagens mortas () DLQ usando o Amazon Simple Queue Service. Quando um EventBridge agendamento falha em invocar sua meta, o Scheduler entrega uma JSON carga contendo detalhes da invocação e qualquer resposta recebida do destino para uma fila padrão da Amazon SQS que você especificar.
O tópico a seguir se refere a isso JSON como um evento sem saída. Um evento de mensagens não entregues permite que você solucione problemas com seu agendamento ou metas. Se você configurar uma política de repetição para sua agenda, o EventBridge Scheduler entregará o evento de carta morta que ele tem, esgotando o número máximo de novas tentativas que você definiu.
Os tópicos a seguir descrevem como você pode configurar uma SQS fila da Amazon DLQ para sua agenda, configurar as permissões que o EventBridge Agendador precisa para entregar mensagens para a Amazon SQS e receber eventos indiretos do. DLQ
Tópicos
Crie uma SQS fila da Amazon
Antes de configurar uma DLQ para sua programação, você deve criar uma SQS fila padrão da Amazon. Para obter instruções sobre como criar uma fila usando o SQS console da Amazon, consulte Criação de uma SQS fila da Amazon no Guia do desenvolvedor do Amazon Simple Queue Service.
nota
EventBridge O Scheduler não suporta o uso de uma FIFO fila como sua agenda. DLQ
Use o AWS CLI comando a seguir para criar uma fila padrão.
$
aws sqs create-queue --queue-name
queue-name
Se o for bem-sucedido, você verá QueueURL
no resultado.
{
"QueueUrl": "https://sqs.us-west-2.amazonaws.com/123456789012/scheduler-dlq-test"
}
Depois de criar a fila, anote a filaARN. Você precisará do ARN quando especificar um DLQ para sua EventBridge programação do Scheduler. Você pode encontrar sua fila ARN no SQS console da Amazon ou usando o get-queue-attributes
$
aws sqs get-queue-attributes --queue-url
your-dlq-url
--attribute-names QueueArn
Se for bem-sucedido, você verá a fila ARN na saída.
{ "Attributes": { "QueueArn": "arn:aws:sqs:us-west-2:123456789012:scheduler-dlq-test" } }
Na próxima seção, você adicionará as permissões necessárias à sua função de execução do cronograma para permitir que o EventBridge Scheduler entregue eventos sem saída para a Amazon. SQS
Configure as permissões da função de execução
Para permitir que o EventBridge Scheduler entregue eventos com data limite para a AmazonSQS, sua função de execução do cronograma precisa da seguinte política de permissão. Para obter mais informações sobre como anexar uma nova política de permissão à sua função de execução do agendamento, consulte Configurando a função de execução.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sqs:SendMessage" ], "Effect": "Allow", "Resource": "*" } ] }
nota
Sua função de execução do cronograma pode já ter as permissões necessárias anexadas se você usar o EventBridge Scheduler para invocar um alvo da Amazon SQSAPI.
Na próxima seção, você usará o console do EventBridge Scheduler e especificará um DLQ para sua agenda.
Especificar uma fila de mensagens não entregues
Para especificar umDLQ, use o console do EventBridge Scheduler ou o AWS CLI para atualizar um agendamento existente ou criar um novo.
Na próxima seção, você usará o AWS CLI para receber um evento de carta morta do. DLQ
Recuperar o evento de mensagens não entregues
Use o receive-message
--max-number-of-messages
.
$
aws sqs receive-message --queue-url
your-dlq-url
--attribute-names All --message-attribute-names All --max-number-of-messages 1
Se for bem-sucedido, você verá uma saída semelhante à seguinte:
{ "Messages": [ { "MessageId": "2aeg3510-fe3a-4f5a-ab6a-6906560eaf7e", "ReceiptHandle": "AQEBkNKTdOMrWgHKPoITRBwrPoK3eCSZIcZwVqCY0BZ+FfTcORFpopJbtCqj36VbBTlHreM8+qM/m5jcwqSlAlGmIJO/hYmMgn/+dwIty9izE7HnpvRhhEyHxbeTZ5V05RbeasYaBdNyi9WLcnAHviDh6MebLXXNWoFyYNsxdwJuG0f/w3htX6r3dxpXvvFNPGoQb8ihY37+u0gtsbuIwhLtUSmE8rbldEEwiUfi3IJ1zEZpUS77n/k1GWrMrnYg0Gx/BuaLzOrFi2F738XI/Hnh45uv3ca6OYwS1ojPQ1LtX2URg1haV5884FYlaRvY8jRlpCZabTkYRTZKSXG5KNgYZnHpmsspii6JNkjitYVFKPo0H91w5zkHlSx3REAuWk7m3r7PmOMvTNPMhctbD3CkTw==", "MD5OfBody": "07adc3fc889d6107d8bb8fda42fe0573", "Body": "{\"MessageBody\":\"Hello, world!",\"QueueUrl\":\"https://sqs.us-west-2.amazonaws.com/123456789012/does-not-exist\"}", "Attributes": { "SenderId": "AROA2DZE3W4CTL5ZR7EIN:ff00212d8c453aaaae644bc6846d4723", "ApproximateFirstReceiveTimestamp": "1652499058144", "ApproximateReceiveCount": "2", "SentTimestamp": "1652490733042" }, "MD5OfMessageAttributes": "f72c1d78100860e00403d849831d4895", "MessageAttributes": { "ERROR_CODE": { "StringValue": "AWS.SimpleQueueService.NonExistentQueue", "DataType": "String" }, "ERROR_MESSAGE": { "StringValue": "The specified queue does not exist for this wsdl version.", "DataType": "String" }, "EXECUTION_ID": { "StringValue": "ad06616e51cdf74a", "DataType": "String" }, "EXHAUSTED_RETRY_CONDITION": { "StringValue": "MaximumEventAgeInSeconds", "DataType": "String" } "IS_PAYLOAD_TRUNCATED": { "StringValue": "false", "DataType": "String" }, "RETRY_ATTEMPTS": { "StringValue": "0", "DataType": "String" }, "SCHEDULED_TIME": { "StringValue": "2022-05-14T01:12:00Z", "DataType": "String" }, "SCHEDULE_ARN": { "StringValue": "arn:aws:scheduler:us-west-2:123456789012:schedule/DLQ-test", "DataType": "String" }, "TARGET_ARN": { "StringValue": "arn:aws:scheduler:::aws-sdk:sqs:sendMessage", "DataType": "String" } } } ] }
Observe os atributos a seguir no evento de mensagens não entregues para ajudá-lo a identificar e solucionar possíveis motivos pelos quais a inovação do destino falhou.
-
ERROR_CODE
— Contém o código de erro que o EventBridge Scheduler recebe do serviço API do alvo. No exemplo anterior, o código de erro retornado pela Amazon SQS éAWS.SimpleQueueService.NonExistentQueue
. Se o agendamento falhar em invocar um alvo devido a um problema com o EventBridge Scheduler, você verá o seguinte código de erro em vez disso:.AWS.Scheduler.InternalServerError
-
ERROR_MESSAGE
— Contém a mensagem de erro que o EventBridge Scheduler recebe do serviço API do alvo. No exemplo anterior, a mensagem de erro retornada pela Amazon SQS éThe specified queue does not exist for this wsdl version
. Se o agendamento falhar devido a um problema com o EventBridge Scheduler, você verá a seguinte mensagem de erro em vez disso:Unexpected error occurred while processing the request
. -
TARGET_ARN
— O ARN alvo que sua agenda invoca, no seguinte ARN formato de serviço:.arn:aws:scheduler:::aws-sdk:
service
:apiAction
-
EXHAUSTED_RETRY_CONDITION
— Indica por que o evento foi entregue aoDLQ. Esse atributo estará presente se o erro do destino API for um erro que pode ser repetido e não permanente. O atributo pode conter os valoresMaximumRetryAttempts
se o EventBridge Agendador o tiver enviado para o DLQ após exceder o máximo de tentativas configurado para o agendamento ouMaximumEventAgeInSeconds
se o evento for maior que a idade máxima que você configurou no agendamento e ainda não está sendo entregue.
No exemplo anterior, podemos determinar, com base no código de erro e na mensagem de erro, que a fila de destino que especificamos para o agendamento não existe.