

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 una cola de mensajes fallidos de Amazon SNS para una suscripción
<a name="sns-configure-dead-letter-queue"></a>

Una cola de mensajes fallidos es una cola de Amazon SQS a la que una suscripción de Amazon SNS puede enviar mensajes que no se pueden entregar de manera correcta a los suscriptores. Los mensajes que no se pueden entregar debido a errores del cliente o errores del servidor se mantienen en la cola de mensajes fallidos para su posterior análisis o reprocesamiento. Para obtener más información, consulte [Colas de mensajes fallidos de Amazon SNS](sns-dead-letter-queues.md) y [Reintento de entrega de mensajes de Amazon SNS](sns-message-delivery-retries.md).

En esta página, se muestra cómo puede utilizar el Consola de administración de AWS, un AWS SDK AWS CLI, y CloudFormation para configurar una cola de cartas muertas para una suscripción a Amazon SNS.

**nota**  
En un [tema FIFO](sns-fifo-topics.md), puede usar una cola FIFO de Amazon SQS como una cola de mensajes fallidos para la suscripción de Amazon SNS. Las suscripciones a temas FIFO utilizan colas FIFO y las suscripciones a temas estándar utilizan colas estándar.

## Requisitos previos
<a name="dead-letter-queue-prerequisites"></a>

Antes de configurar una cola de mensajes fallidos, complete los siguientes requisitos previos:

1. [Cree un tema de Amazon SNS](sns-create-topic.md) llamado `MyTopic`.

1. [Cree una cola de Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html) llamada `MyEndpoint` con el fin de utilizarla como punto de enlace para la suscripción de Amazon SNS.

1. (Omitir para CloudFormation) [Suscriba la cola al tema](sns-sqs-as-subscriber.md).

1. [Cree otra cola de Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html) llamada `MyDeadLetterQueue` con el fin de utilizarla como cola de mensajes fallidos para la suscripción de Amazon SNS.

1. Para conceder a la entidad principal de Amazon SNS acceso a la acción de la API de Amazon SQS, establezca la siguiente política de cola para `MyDeadLetterQueue`.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "sns.amazonaws.com"
         },
         "Action": "SQS:SendMessage",
         "Resource": "arn:aws:sqs:{{us-east-2}}:{{123456789012}}:{{MyDeadLetterQueue}}",
         "Condition": {
           "ArnEquals": {
             "aws:SourceArn": "arn:aws:sns:{{us-east-2}}:{{123456789012}}:{{MyTopic}}"
           }
         }
       }
     ]
   }
   ```

------

## Para configurar una cola de espera para una suscripción a Amazon SNS mediante el Consola de administración de AWS
<a name="configure-dead-letter-queue-aws-console"></a>

Asegúrese de completar los [requisitos previos](#dead-letter-queue-prerequisites) antes de comenzar con este tutorial.

1. Inicie sesión en la [consola de Amazon SQS](https://console.aws.amazon.com/sqs/).

1. [Cree una cola de Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html) o utilice una cola existente, y anote su ARN en la pestaña **Detalles** de la cola; por ejemplo:

   ```
   arn:aws:sqs:{{us-east-2}}:{{123456789012}}:{{MyDeadLetterQueue}}
   ```

1. Inicie sesión en la [consola de Amazon SNS](https://console.aws.amazon.com/sns/home).

1. En el panel de navegación, seleccione **Subscriptions (Suscripciones)**.

1. En la página **Subscriptions (Suscripciones)**, seleccione una suscripción existente y haga clic en **Edit (Editar)**.

1. En la {{1234a567-bc89-012d-3e45-6fg7h890123i}} página de **edición**, amplíe la sección **Política de Redrive (cola de cartas sin respuesta)** y, a continuación, haga lo siguiente:

   1. Elija **Enabled (Habilitado)**.

   1. Especifique el ARN de una cola de Amazon SQS.

1. Seleccione **Save changes (Guardar cambios)**.

   Su suscripción está configurada para usar una cola de mensajes fallidos.

## Para configurar una cola de espera para una suscripción a Amazon SNS mediante un SDK AWS
<a name="configure-dead-letter-queue-aws-sdk"></a>

Asegúrese de completar los [requisitos previos](#dead-letter-queue-prerequisites) antes de ejecutar este ejemplo.

Para usar un AWS SDK, debe configurarlo con sus credenciales. Para obtener más información, consulte [Los archivos de configuración y credenciales compartidos](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html) en la *Guía de referencia de herramientas AWS SDKs y herramientas*.

En el siguiente ejemplo de código, se muestra cómo utilizar `SetSubscriptionAttributesRedrivePolicy`.

------
#### [ Java ]

**SDK para Java 1.x**  
 Hay más información al respecto GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/java/example_code/sns#code-examples). 

```
// Specify the ARN of the Amazon SNS subscription.
String subscriptionArn =
    "arn:aws:sns:us-east-2:123456789012:MyEndpoint:1234a567-bc89-012d-3e45-6fg7h890123i";

// Specify the ARN of the Amazon SQS queue to use as a dead-letter queue.
String redrivePolicy =
    "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue\"}";

// Set the specified Amazon SQS queue as a dead-letter queue
// of the specified Amazon SNS subscription by setting the RedrivePolicy attribute.
SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest()
    .withSubscriptionArn(subscriptionArn)
    .withAttributeName("RedrivePolicy")
    .withAttributeValue(redrivePolicy);
sns.setSubscriptionAttributes(request);
```

------

## Para configurar una cola de espera para una suscripción a Amazon SNS mediante el AWS CLI
<a name="configure-dead-letter-queue-aws-cli"></a>

Asegúrese de completar los [requisitos previos](#dead-letter-queue-prerequisites) antes de comenzar con este tutorial.

1. Instalar y configurar la AWS CLI. Para obtener más información, consulte la [Guía del usuario de *AWS Command Line Interface *](https://docs.aws.amazon.com/cli/latest/userguide/).

1. Use el siguiente comando.

   ```
   aws sns set-subscription-attributes \
   --subscription-arn arn:aws:sns:{{us-east-2}}:{{123456789012}}:{{MyEndpoint}}:{{1234a567-bc89-012d-3e45-6fg7h890123i}}
   --attribute-name RedrivePolicy
   --attribute-value "{\"deadLetterTargetArn\": \"arn:aws:sqs:{{us-east-2}}:{{123456789012}}:{{MyDeadLetterQueue}}\"}"
   ```

## Para configurar una cola de espera para una suscripción a Amazon SNS mediante CloudFormation
<a name="configure-dead-letter-queue-aws-cloudformation"></a>

Asegúrese de completar los [requisitos previos](#dead-letter-queue-prerequisites) antes de comenzar con este tutorial.

1. Copie el siguiente código JSON a un archivo denominado `MyDeadLetterQueue.json`.

   ```
   {
     "Resources": {
       "mySubscription": {
         "Type" : "AWS::SNS::Subscription",
         "Properties" : {
           "Protocol": "sqs",
           "Endpoint": "arn:aws:sqs:{{us-east-2}}:{{123456789012}}:{{MyEndpoint}}",
           "TopicArn": "arn:aws:sns:{{us-east-2}}:{{123456789012}}:{{MyTopic}}",
           "RedrivePolicy": {
             "deadLetterTargetArn":
               "arn:aws:sqs:{{us-east-2}}:{{123456789012}}:{{MyDeadLetterQueue}}"
           }
         }
       }
     }
   }
   ```

1. Inicie sesión en la [consola de CloudFormation](https://console.aws.amazon.com/cloudformation/).

1. En la página **Select Template (Seleccionar plantilla)**, elija **Upload a template to Amazon S3 (Cargar una plantilla en Amazon S3)**, seleccione el archivo `MyDeadLetterQueue.json` y haga clic en **Next (Siguiente)**. 

1. En la página **Specify Details (Especificar detalles)**, escriba `MyDeadLetterQueue` en **Stack Name (Nombre de pila)** y haga clic en **Next (Siguiente)**. 

1. En la página **Opciones**, seleccione **Siguiente**.

1. En la página **Review (Revisar)**, elija **Create (Crear)**.

   CloudFormation **comienza a crear la `MyDeadLetterQueue` pila y muestra el estado CREATE\_IN\_PROGRESS.** **Cuando se completa el proceso, muestra el estado CREATE\_COMPLETE. CloudFormation **