Configuración de la cola de cartas muertas de una programación en Scheduler EventBridge - EventBridge Planificador

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de la cola de cartas muertas de una programación en Scheduler EventBridge

Amazon EventBridge Scheduler admite colas de letra muerta () DLQ mediante Amazon Simple Queue Service. Cuando un programa no puede invocar su destino, EventBridge Scheduler envía una JSON carga útil que contiene los detalles de la invocación y cualquier respuesta recibida del destino a una cola SQS estándar de Amazon que especifique.

En el siguiente tema, se hace referencia a este hecho como letra muerta. JSON Un evento de mensajes fallidos le permite solucionar problemas relacionados con su programación o sus destinos. Si configuras una política de reintentos para tu programación, el EventBridge Scheduler entrega el caso sin efecto, agotando el número máximo de reintentos que hayas establecido.

En los siguientes temas se describe cómo puede configurar una SQS cola de Amazon según su horario, configurar los permisos que EventBridge Scheduler necesita para entregar mensajes a Amazon y recibir SQS eventos de letra muerta de. DLQ DLQ

Crear una SQS cola en Amazon

Antes de configurar una DLQ para tu horario, debes crear una SQS cola de Amazon estándar. Para obtener instrucciones sobre cómo crear una cola con la SQS consola de Amazon, consulte Creación de una SQS cola de Amazon en la Guía para desarrolladores de Amazon Simple Queue Service.

nota

EventBridge El programador no admite el uso de una FIFO cola como la de su horario. DLQ

Usa el siguiente AWS CLI comando para crear una cola estándar.

$ aws sqs create-queue --queue-name queue-name

Si se realiza correctamente, verá QueueURL en el resultado.

{
    "QueueUrl": "https://sqs.us-west-2.amazonaws.com/123456789012/scheduler-dlq-test"
}

Después de crear la cola, anote la cola. ARN La necesitarás ARN cuando especifiques una DLQ para tu EventBridge horario de Scheduler. Puedes encontrar tu cola ARN en la SQS consola de Amazon o mediante el get-queue-attributes AWS CLI comando.

$ aws sqs get-queue-attributes --queue-url your-dlq-url --attribute-names QueueArn

Si tiene éxito, verá la cola ARN en la salida.

{
    "Attributes": {
        "QueueArn": "arn:aws:sqs:us-west-2:123456789012:scheduler-dlq-test"
    }
}

En la siguiente sección, añadirás los permisos necesarios a tu función de ejecución de la programación para permitir que EventBridge Scheduler entregue eventos sin fecha a Amazon. SQS

Configurar permisos de rol de ejecución

Para permitir que EventBridge Scheduler entregue eventos de letra muerta a AmazonSQS, tu función de ejecución de horarios necesita la siguiente política de permisos. Para obtener más información sobre cómo adjuntar una nueva política de permisos a su rol de ejecución programado, consulte Configuración del rol de ejecución.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sqs:SendMessage" ], "Effect": "Allow", "Resource": "*" } ] }
nota

Es posible que tu función de ejecución programada ya tenga los permisos necesarios adjuntos si utilizas EventBridge Scheduler para invocar un objetivo de Amazon SQSAPI.

En la siguiente sección, utilizarás la consola del EventBridge programador y especificarás una DLQ para tu programación.

Especificar una política de cola de mensajes fallidos

Para especificar unaDLQ, usa la consola del EventBridge Scheduler o la AWS CLI para actualizar una programación existente o crear una nueva.

Console
Para especificar un DLQ mediante la consola
  1. Inicie sesión en y AWS Management Console, a continuación, seleccione el siguiente enlace para abrir la sección EventBridge Programador de la EventBridge consola: inicio https://console.aws.amazon.com/scheduler/

  2. En la consola del EventBridge Scheduler, cree un nuevo horario o elija uno existente de la lista de horarios para editarlo.

  3. En la página de configuración, para Dead-letter queue (DLQ), realice una de las siguientes acciones:

    • Selecciona Selecciona una SQS cola de Amazon en mi AWS cuenta como una yDLQ, a continuación, elige la cola ARN para ti DLQ en la lista desplegable.

    • Elige Especificar una SQS cola de Amazon en otras AWS cuentas como y, a continuaciónDLQ, introduce la cola ARN para tu. DLQ Si eliges una cola en otra AWS cuenta, la consola del EventBridge Scheduler no podrá mostrar la cola ARNs en una lista desplegable.

  4. Revise sus selecciones y, a continuación, seleccione Crear programación o Guardar programación para terminar de configurar una. DLQ

  5. (Opcional) Para ver los DLQ detalles de una programación, elige el nombre de la lista y, a continuación, selecciona la pestaña Lista de espera en letra muerta en la página de detalles de la programación.

AWS CLI
Para actualizar un horario existente mediante el AWS CLI
  • Use el comando update-schedule para actualizar su agenda. Especifica la SQS cola de Amazon que creaste anteriormente como. DLQ Especifique la IAM función ARN a la que ha asociado los SQS permisos de Amazon necesarios como función de ejecución. Reemplace todos los demás valores de marcador de posición con su información.

    $ aws scheduler update-schedule --name existing-schedule \ --schedule-expression 'rate(5 minutes)' \ --target '{"DeadLetterConfig": {"Arn": "DLQ_ARN"}, "RoleArn": "ROLE_ARN", "Arn":"QUEUE_ARN", "Input": "Hello world!" }' \ --flexible-time-window '{ "Mode": "OFF"}'
Para crear un nuevo cronograma DLQ utilizando el AWS CLI
  • Para crear una programación, use el comando create-schedule. Sustituya el texto de todos los valores marcadores de posición por sus propios valores.

    $ aws scheduler create-schedule --name new-schedule \ --schedule-expression 'rate(5 minutes)' \ --target '{"DeadLetterConfig": {"Arn": "DLQ_ARN"}, "RoleArn": "ROLE_ARN", "Arn":"QUEUE_ARN", "Input": "Hello world!" }' \ --flexible-time-window '{ "Mode": "OFF"}'

En la siguiente sección, utilizarás el AWS CLI para recibir un evento con letra muerta del. DLQ

Recuperar el evento de mensajes fallidos

Utilice el receive-messagecomando, tal y como se muestra a continuación, para recuperar un evento de letra muerta del. DLQ Puede establecer el número de mensajes que se van a recuperar mediante el atributo --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

Si la operación se realiza correctamente, verá un resultado similar al siguiente.

{
    "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"
                }
            }
        }
    ]
}

Tenga en cuenta los siguientes atributos en caso de en evento de mensajes fallidos para ayudarle a identificar y solucionar los posibles motivos por los que la innovación del destino ha fallado.

  • ERROR_CODE— Contiene el código de error que EventBridge Scheduler recibe del servicio del objetivo. API En el ejemplo anterior, el código de error devuelto por Amazon SQS esAWS.SimpleQueueService.NonExistentQueue. Si el programa no puede invocar un objetivo debido a un problema con el EventBridge Scheduler, en su lugar verás el siguiente código de error:. AWS.Scheduler.InternalServerError

  • ERROR_MESSAGE— Contiene el mensaje de error que EventBridge Scheduler recibe del servicio del objetivo. API En el ejemplo anterior, el mensaje de error devuelto por Amazon SQS esThe specified queue does not exist for this wsdl version. Si la programación falla debido a un problema con EventBridge Scheduler, en su lugar verás el siguiente mensaje de error:Unexpected error occurred while processing the request.

  • TARGET_ARN— El ARN del objetivo que invoca su horario, en el siguiente ARN formato de servicio:. arn:aws:scheduler:::aws-sdk:service:apiAction

  • EXHAUSTED_RETRY_CONDITION— Indica por qué el evento se envió alDLQ. Este atributo estará presente si el error del objetivo API es un error que se puede volver a intentar y no un error permanente. El atributo puede contener los valores MaximumRetryAttempts si el EventBridge programador los envió DLQ después de superar el número máximo de reintentos que configuraste para la programación o MaximumEventAgeInSeconds si el evento tiene una antigüedad superior a la edad máxima que configuraste en la programación y sigue sin entregarse.

En el ejemplo anterior, podemos determinar, basándonos en el código de error y el mensaje de error, que la cola de destino que especificamos para la programación no existe.