

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.

# Envío de mensajes de Amazon SNS a una cola de Amazon SQS de otra cuenta
<a name="sns-send-message-to-sqs-cross-account"></a>

Este documento describe cómo publicar una notificación en un tema de Amazon SNS con una o varias suscripciones a colas de Amazon SQS de otra cuenta. Configure el tema y las colas igual que lo haría si estuviesen en la misma cuenta (consulte [Distribución ramificada de notificaciones de Amazon SNS a colas de Amazon SQS para su procesamiento asíncrono](sns-sqs-as-subscriber.md)). La principal diferencia radica en cómo controla la confirmación de suscripción y eso depende de cómo suscribe la cola al tema.

Es recomendable seguir los pasos a los que se hace referencia en la sección [El propietario de la cola crea la suscripción](#SendMessageToSQS.cross.account.queueowner) cuando sea posible, porque la confirmación es automática cuando el propietario de la cola crea la suscripción.

**nota**  
Si la cola de Amazon SQS tiene un gran volumen de mensajes, recomendamos que el propietario de la cola cree la suscripción.

## El propietario de la cola crea la suscripción
<a name="SendMessageToSQS.cross.account.queueowner"></a>

La cuenta que creó la cola de Amazon SQS es el propietario de la cola. Cuando el propietario de la cola crea una suscripción, esta no necesita una confirmación. La cola comienza a recibir notificaciones desde el tema tan pronto como la acción `Subscribe` se completa. Para dejar que el propietario de la cola se suscriba al tema del propietario del tema, el propietario del tema debe conceder un permiso de cuenta al propietario de la cola para llamar a la acción `Subscribe` en el tema.

### Paso 1: Para establecer la política del tema mediante el Consola de administración de AWS
<a name="sns-tutorial-set-topic-policy"></a>

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

1. En el panel de navegación, elija **Temas**.

1. Seleccione un tema y, a continuación, seleccione **Edit (Editar)**.

1. En la *MyTopic* página de **edición**, expanda la sección Política de **acceso**.

1. Escriba la siguiente política:

   ```
   {
      "Statement": [
         {
            "Effect": "Allow",
            "Principal": {
               "AWS": "111122223333"
            },
            "Action": "sns:Subscribe",
            "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic"
         }
      ]
   }
   ```

   Esta política concede permiso a la cuenta `111122223333` para llamar a `sns:Subscribe` en `MyTopic` en la cuenta `123456789012`.

   Un usuario con las credenciales de la cuenta `111122223333` puede suscribirse a `MyTopic`. Este permiso permite al ID de la cuenta delegar el permiso a su rol o usuario de IAM. Solo la cuenta raíz o los usuarios administradores podrán llamar a `sns:Subscribe`. El IAM también user/role debe `sns:subscribe` permitir que su cola se suscriba.

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

   Un usuario con las credenciales de la cuenta `111122223333` puede suscribirse a ella. MyTopic

### Paso 2: Para añadir una suscripción a Amazon SQS Queue a un tema de otro mediante el Cuenta de AWS Consola de administración de AWS
<a name="sns-tutorial-add-sqs-subscription-to-sns-topic-another-account"></a>

Antes de empezar, asegúrese de que dispone del tema y ARNs de la cola y de que ha [dado permiso al tema para enviar mensajes a la](subscribe-sqs-queue-to-sns-topic.md#SendMessageToSQS.sqs.permissions) cola.

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

1. En el panel de navegación, elija **Queues** (Colas).

1.  En la lista de colas, elija la **cola** para suscribirse al tema de Amazon SNS.

1. Elija **Subscribe to Amazon SNS topic** (Suscribirse al tema de Amazon SNS).

1. Desde **Specify an Amazon SNS topic available for this queue menu (Especificar un tema de Amazon SNS disponible para este menú de cola)**, elija el **Amazon SNS topic (Tema de Amazon SNS)‎** ‎para la cola.

1. Elija **Enter Amazon SNS topic ARN (Ingresar ‎ARN de tema de Amazon SNS)‎** y, a continuación, ingrese el **Amazon Resource Name (ARN) (Nombre de recurso de Amazon [ARN])** del tema.

1. Seleccione **Save**.
**nota**  
Para poder comunicarse con el servicio, la cola debe tener permisos para Amazon SNS.
Puesto que usted es el propietario de la cola, no tiene que confirmar la suscripción.

## Un usuario que no es el propietario de la cola crea una suscripción
<a name="SendMessageToSQS.cross.account.notqueueowner"></a>

Cualquier usuario que crea una suscripción y no es el propietario de la cola tiene que confirmar la suscripción.

Cuando utiliza la acción `Subscribe`, Amazon SNS envía una confirmación de suscripción a la cola. La suscripción aparece en la consola de Amazon SNS, con su ID de suscripción establecido en **Confirmación pendiente**.

Para confirmar la suscripción, un usuario con permiso para leer los mensajes de la cola debe recuperar la URL de confirmación de la suscripción y el propietario de la suscripción debe confirmar la suscripción mediante la URL de confirmación de la suscripción. Hasta que no se confirme la suscripción, no se enviarán a la cola las notificaciones publicadas en el tema. Para confirmar la suscripción, puede utilizar la consola de Amazon SQS o la acción `[ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryReceiveMessage.html)`.

**nota**  
Antes de suscribir un punto de enlace al tema, asegúrese de que la cola pueda recibir mensajes desde el tema mediante la configuración del permiso `sqs:SendMessage` para la cola. Para obtener más información, consulte [Paso 2: conceder permiso al tema de Amazon SNS y enviar mensajes a la cola de Amazon SQS](subscribe-sqs-queue-to-sns-topic.md#SendMessageToSQS.sqs.permissions).

### Paso 1: Para añadir una suscripción a Amazon SQS Queue a un tema de otro mediante el Cuenta de AWS Consola de administración de AWS
<a name="sns-tutorial-add-sqs-subscription-to-sns-topic-another-account"></a>

Antes de empezar, asegúrese de tener el tema y la cola y de haber [dado permiso al tema ARNs para enviar mensajes a la](subscribe-sqs-queue-to-sns-topic.md#SendMessageToSQS.sqs.permissions) cola.

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)**, elija **Create subscription (Crear suscripción)**.

1.  En la página **Crear suscripción**, en la sección **Detalles**, haga lo siguiente:

   1. En **Topic ARN (ARN del tema)**, introduzca el ARN del tema.

   1. En **Protocolo**, elija **Amazon SQS**.

   1. En **Endpoint (Punto de enlace)**, introduzca el ARN de la cola.

   1. Seleccione **Crear subscripción**.
**nota**  
Para poder comunicarse con el servicio, la cola debe tener permisos para Amazon SNS.

A continuación se muestra una declaración de política de ejemplo que permite al tema de Amazon SNS enviar un mensaje a la cola de Amazon SQS.

```
{
   "Sid": "Stmt1234",
   "Effect": "Allow",
   "Principal": "*",
   "Action": "sqs:SendMessage",
   "Resource": "arn:aws:sqs:us-west-2:111111111111:QueueName",
   "Condition": {
      "ArnEquals": {
         "aws:SourceArn": "arn:aws:sns:us-west-2:555555555555:TopicName"
      }
   }
}
```

### Paso 2: Para confirmar una suscripción mediante el Consola de administración de AWS
<a name="sns-tutorial-confirm-subscription-console"></a>

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

1. Seleccione la cola que tenga una suscripción pendiente con el tema.

1. Elija **Send and receive messages** (Enviar y recibir mensajes) y, a continuación, elija **Poll for messages** (Sondear en busca de mensajes).

   Se recibe un mensaje con la confirmación de la suscripción en la cola.

1. En la columna **Body (Cuerpo)** , realice las siguientes acciones:

   1. Seleccione **More Details (Más detalles)**.

   1. En el cuadro de diálogo **Message Details** (Detalles de mensajes), busque y anote el valor de **SubscribeURL**. Este es el enlace de suscripción (el ejemplo se muestra a continuación). Para obtener más información sobre la validación de tokens de API, consulte [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html) en la Referencia de la API de Amazon SNS.

      ```
      https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-2:123456789012:MyTopic&Token=2336412f37fb...
      ```

   1. Anote los valores del enlace de confirmación de la suscripción. La URL se debe pasar del propietario de la cola al propietario de la suscripción. El propietario de la suscripción debe ingresar la URL en la [Consola de Amazon SNS](https://console.aws.amazon.com/sns/v3/home).

1. Inicie sesión como **propietario de la suscripción** en la [Consola de Amazon SNS](https://console.aws.amazon.com/sns/v3/home) El propietario de la suscripción realiza la confirmación.

1. Elija el **tema** correspondiente.

1. Elija la **suscripción** correspondiente en la tabla de listas de suscripciones del tema. Se etiqueta como "Pendiente de confirmación".

1. Elija **Confirm subscription** (Confirmar suscripción).

1. Aparece un modal que solicita el enlace de confirmación de la suscripción. **Pegue** los valores del enlace de confirmación de la suscripción.

1. Seleccione **Confirm subscription** (Confirmar suscripción) en el modal.

   Se muestra una respuesta XML, por ejemplo:

   ```
   <ConfirmSubscriptionResponse>
      <ConfirmSubscriptionResult>
         <SubscriptionArn>arn:aws:sns:us-east-2:123456789012:MyTopic:1234a567-bc89-012d-3e45-6fg7h890123i</SubscriptionArn>
      </ConfirmSubscriptionResult>
      <ResponseMetadata>
         <RequestId>abcd1efg-23hi-jkl4-m5no-p67q8rstuvw9</RequestId>
      </ResponseMetadata>
   </ConfirmSubscriptionResponse>
   ```

   La cola suscrita está lista para recibir mensajes del tema.

1. (Opcional) Si ve la suscripción del tema en la consola de Amazon SNS, puede ver que el mensaje **Confirmación pendiente** se ha sustituido por el ARN de suscripción en la columna **ID de suscripción**.

## ¿Cómo obligo a una suscripción a requerir autenticación en las solicitudes de cancelación de suscripción?
<a name="sns-send-message-to-sqs-cross-account-AuthenticateOnUnsubscribe"></a>

El propietario de la suscripción debe configurar la marca `AuthenticateOnUnsubscribe` como true en la confirmación de la suscripción.
+ `AuthenticateOnUnsubscribe` se establece automáticamente en true cuando el propietario de la cola crea la suscripción.
+ `AuthenticateOnUnsubscribe` no se puede establecer en true cuando se navega por el enlace de confirmación de la suscripción sin autenticación.