

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.

# Suscripción de una cola de Amazon SQS a un tema de Amazon SNS
<a name="subscribe-sqs-queue-to-sns-topic"></a>

Para habilitar un tema de Amazon SNS de modo que envíe mensajes a una cola de Amazon SQS, elija uno de estos procedimientos:
+ Utilice la [consola de Amazon SQS](https://console.aws.amazon.com/sqs/), lo que simplifica el proceso. Para obtener más información, consulte [Suscripción de una cola de Amazon SQS a un tema de Amazon SNS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-subscribe-queue-sns-topic.html) en la *Guía para desarrolladores de Amazon Simple Queue Service*.
+ Utilice los siguientes pasos: 

  1. [Obtenga el nombre de recurso de Amazon (ARN) de la cola a la que desea enviar mensajes y del tema al que desea suscribir la cola.](#SendMessageToSQS.arn)

  1. [Conceda el permiso `sqs:SendMessage` al tema de Amazon SNS para que pueda enviar mensajes a la cola.](#SendMessageToSQS.sqs.permissions)

  1. [Suscriba la cola al tema de Amazon SNS.](#SendMessageToSQS.subscribe)

  1. [Conceda a los usuarios de IAM o a Cuentas de AWS los permisos adecuados para publicar en el tema de Amazon SNS y leer los mensajes de la cola de Amazon SQS.](#SendMessageToSQS.iam.permissions)

  1. [Pruebe el procedimiento publicando un mensaje en el tema y leyendo el mensaje de la cola.](#SendMessageToSQS.test)

Si desea saber cómo configurar un tema para enviar mensajes a una cola que está en otra cuenta de AWS, consulte [Envío de mensajes de Amazon SNS a una cola de Amazon SQS de otra cuenta](sns-send-message-to-sqs-cross-account.md).

Para ver una CloudFormation plantilla que crea un tema que envía mensajes a dos colas, consulte[Automatice la mensajería de Amazon SNS a Amazon SQS con AWS CloudFormation](SendMessageToSQS.cloudformation.md).

## Paso 1: obtener el ARN de la cola y el del tema
<a name="SendMessageToSQS.arn"></a>

Cuando suscriba una cola a un tema, necesitará una copia del ARN de la cola. Del mismo modo, cuando conceda permiso para que el tema envíe mensajes a la cola, necesitará una copia del ARN del tema.

Para obtener el ARN de la cola, puede utilizar la consola Amazon SQS o la acción de la API. [GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryGetQueueAttributes.html)

**Para obtener el ARN de la cola de la consola de Amazon SQS, siga estos pasos:**

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

1. Seleccione la casilla de la cola cuyo ARN quiere obtener.

1. En la sección **Detalles**, copie el valor del ARN de forma que pueda utilizarlo para suscribirse al tema de Amazon SNS.

Para obtener el ARN del tema, puede utilizar la consola de Amazon SNS, el comando `[sns-get-topic-attributes](https://docs.aws.amazon.com/cli/latest/reference/sns/get-topic-attributes.html)` o la acción `[GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryGetQueueAttributes.html)` de la API.

**Para obtener el ARN del tema desde la consola de Amazon SNS, siga estos pasos:**

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 el tema cuyo ARN desea obtener.

1. En la sección **Detalles**, copie el valor **ARN** del tema de forma que pueda utilizarlo para conceder permiso al tema de Amazon SNS y enviar mensajes a la cola.

## Paso 2: conceder permiso al tema de Amazon SNS y enviar mensajes a la cola de Amazon SQS
<a name="SendMessageToSQS.sqs.permissions"></a>

Para que un tema de Amazon SNS pueda enviar mensajes a una cola, debe establecer una política en la cola que permita que el tema de Amazon SNS pueda ejecutar la acción `sqs:SendMessage`.

Antes de suscribir una cola a un tema, necesita un tema y una cola. Si aún no ha creado un tema o una cola, créelos ahora. Para obtener más información, consulte [Creación de un tema](sns-create-topic.md) y [Creación de una cola](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/step-create-queue.html) en la *Guía para desarrolladores de Amazon Simple Queue Service*. 

Para establecer una política en una cola, puede utilizar la consola Amazon SQS o la acción de [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QuerySetQueueAttributes.html)la API. Antes de comenzar, asegúrese de que dispone del ARN del tema al que desea conceder permiso para enviar mensajes a la cola. Si está suscrito a una cola para varios temas, la política debe contener un elemento `Statement` para cada tema.

**Para establecer una SendMessage política en una cola mediante la consola Amazon SQS**

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

1. Seleccione la casilla de la cola cuya política desea establecer, elija la pestaña **Política de acceso** y, a continuación, elija **Editar**.

1. En la sección **Política de acceso**, defina quién puede acceder a la cola.
   + Añada una condición que permita la acción para el tema.
   + Establezca `Principal` para que sea el servicio de Amazon SNS, como se muestra en el ejemplo siguiente. 
   + Utilice las claves de condición global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) o [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) para protegerse del escenario de [suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Para usar estas claves de condición, establezca el valor en el ARN de su tema. Si su cola está suscrita a varios temas, puede utilizar `aws:SourceAccount` en su lugar. 

   Por ejemplo, la siguiente política permite MyTopic enviar mensajes a MyQueue. 

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

## Paso 3: suscribir la cola al tema de Amazon SNS
<a name="SendMessageToSQS.subscribe"></a>

Para enviar mensajes a una cola a través de un tema, debe suscribir la cola al tema de Amazon SNS. La cola se especifica con el ARN. Para suscribirse a un tema, puede utilizar la consola de Amazon SNS, el comando `[sns-subscribe](https://docs.aws.amazon.com/cli/latest/reference/sns/subscribe.html)` de la CLI o la acción de API `[Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html)`. Antes de comenzar, asegúrese de que tiene el ARN de la cola que desea suscribir.

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. Elija un tema en la página **Temas**.

1. En la ***MyTopic*** página, en la página **Suscripciones**, selecciona **Crear** suscripción.

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

   1. Verifique el **ARN del tema**.

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

   1. En **Punto de conexión**, indique el ARN de una cola de Amazon SQS.

   1. Elija **Crear suscripción**.

   Cuando se confirme la suscripción, el campo **ID de suscripción** de la nueva suscripción mostrará su ID de suscripción. Si el propietario de la cola crea la suscripción, esta se confirmará de forma automática y se activará casi de inmediato.

   Normalmente, suscribirá su propia cola a su propio tema en su propia cuenta. Sin embargo, también puede suscribir una cola de otra cuenta a su tema. Si el usuario que crea la suscripción no es el propietario de la cola (por ejemplo, si un usuario de una cuenta A suscribe una cola de una cuenta B a un tema de la cuenta A), la suscripción deberá confirmarse. Para obtener más información sobre cómo suscribir una cola desde otra cuenta y confirmar la suscripción, consulte [Envío de mensajes de Amazon SNS a una cola de Amazon SQS de otra cuenta](sns-send-message-to-sqs-cross-account.md).

## Paso 4: conceder a los usuarios permisos para las acciones adecuadas del tema y la cola
<a name="SendMessageToSQS.iam.permissions"></a>

Debe usar AWS Identity and Access Management (IAM) para permitir que solo los usuarios adecuados publiquen en el tema de Amazon SNS y en los mensajes de la read/delete cola de Amazon SQS. Para obtener más información sobre el control de las acciones que pueden realizar los usuarios de IAM en los temas y las colas, consulte [Uso de políticas basadas en identidades con Amazon SNS](sns-using-identity-based-policies.md) e [Identity and Access Management en Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html) en la Guía para desarrolladores de Amazon Simple Queue Service.

Hay dos formas de controlar el acceso a un tema o una cola:
+ [Añada una política a un usuario o un grupo de IAM](#SendMessageToSQS.iam.permissions.user). La forma más sencilla de conceder a los usuarios permisos para temas o colas consiste en crear un grupo, añadir la política adecuada al grupo y, a continuación, añadir usuarios a dicho grupo. Es mucho más fácil añadir y eliminar usuarios de un grupo que mantener un seguimiento de las políticas que se han configurado para los distintos usuarios.
+ [Añada una política a un tema o una cola](#SendMessageToSQS.iam.permissions.resource). Si quiere conceder permisos sobre un tema o una cola a otra AWS cuenta, la única forma de hacerlo es añadiendo una política que tenga como principal la parte a la que Cuenta de AWS desea conceder permisos.

Debe utilizar el primer método para la mayoría de los casos (aplicar políticas a grupos y administrar los permisos de los usuarios añadiendo o eliminando los usuarios a los grupos). Si necesita conceder permisos a un usuario de otra cuenta, debe utilizar el segundo método.

### Cómo añadir una política a un usuario o un grupo de IAM
<a name="SendMessageToSQS.iam.permissions.user"></a>

Si ha añadido la siguiente política a un usuario o grupo de IAM, debería conceder a ese usuario o a los miembros de ese grupo permiso para realizar la `sns:Publish` acción sobre el tema MyTopic.

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

Si añadiera la siguiente política a un usuario o grupo de IAM, le daría permiso a ese usuario o a los miembros de ese grupo para realizar las `sqs:DeleteMessage` acciones `sqs:ReceiveMessage` y acciones de las colas MyQueue 1 y 2. MyQueue

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sqs:ReceiveMessage",
        "sqs:DeleteMessage"
      ],
      "Resource": [
        "arn:aws:sqs:us-east-2:123456789012:MyQueue1",
        "arn:aws:sqs:us-east-2:123456789012:MyQueue2"
      ]
    }
  ]
}
```

### Cómo añadir una política a un tema o una cola
<a name="SendMessageToSQS.iam.permissions.resource"></a>

Las siguientes políticas de ejemplo muestran cómo conceder a otra cuenta permisos sobre un tema y una cola.

**nota**  
Cuando concedes a otra persona el Cuenta de AWS acceso a un recurso de tu cuenta, también concedes permisos a ese recurso a los usuarios de IAM que tienen acceso de nivel de administrador (acceso comodín). Al resto de los usuarios de IAM de la otra cuenta se les deniega de manera automática el acceso al recurso. Si desea conceder a usuarios específicos de IAM en esa Cuenta de AWS acceso a su recurso, la cuenta o el usuario de IAM con acceso de nivel de administrador debe delegar permisos para el recurso a esos usuarios de IAM. Para obtener más información acerca de la delegación entre cuentas, consulte [Cómo habilitar el acceso entre cuentas](https://docs.aws.amazon.com/IAM/latest/UserGuide/Delegation.html) en la *Guía del usuario de IAM*.

Si agregas la siguiente política a un tema MyTopic de la cuenta 123456789012, darías permiso a la cuenta 111122223333 para realizar la acción en ese tema. `sns:Publish`

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

Si agregas la siguiente política a una cola MyQueue en la cuenta 123456789012, darías permiso a la cuenta 111122223333 para realizar las acciones y acciones de esa cola. `sqs:ReceiveMessage` `sqs:DeleteMessage`

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": [
        "sqs:DeleteMessage",
        "sqs:ReceiveMessage"
      ],
      "Resource": [
        "arn:aws:sqs:us-east-2:123456789012:MyQueue"
      ]
    }
  ]
}
```

## Paso 5: probar las suscripciones de un tema a una cola
<a name="SendMessageToSQS.test"></a>

Puede probar las suscripciones de un tema a una cola publicando en el tema y viendo el mensaje que el tema envía a la cola.

**Para publicar en un tema mediante la consola de Amazon SNS, siga estos pasos:**

1. Con las credenciales del usuario de IAM Cuenta de AWS o del usuario de IAM con permiso para publicar en el tema, inicie sesión en la consola de Amazon SNS Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/home)

1. En el panel de navegación, seleccione el tema y elija **Publicar en tema**.

1. En el cuadro **Asunto**, escriba un asunto (por ejemplo, **Testing publish to queue**), en el cuadro **Mensaje**, introduzca algún texto (por ejemplo, **Hello world\$1**) y, por último, elija **Publicar mensaje**. Aparecerá el siguiente mensaje: Your message has been successfully published.

**Para ver el mensaje del tema mediante la consola de Amazon SQS, siga estos pasos:**

1. Con las credenciales del usuario de IAM Cuenta de AWS o del usuario de IAM con permiso para ver los mensajes de la cola, inicie sesión en la consola de Amazon SQS Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

1. Elija una **cola** que esté suscrita al tema.

1. Elija **Enviar y recibir mensajes** y, a continuación, elija **Sondeo de mensajes**. Aparecerá un mensaje con el tipo **Notificación**. 

1. En la columna **Cuerpo**, elija **Más detalles**. El cuadro **Detalles del mensaje** contiene un documento JSON con el tema y el mensaje que ha publicado en el tema. El mensaje tiene un aspecto similar al documento JSON siguiente.

   ```
   {
     "Type" : "Notification",
     "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76",
     "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
     "Subject" : "Testing publish to subscribed queues",
     "Message" : "Hello world!",
     "Timestamp" : "2012-03-29T05:12:16.901Z",
     "SignatureVersion" : "1",
     "Signature" : "EXAMPLEnTrFPa3...",
     "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
     "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee"
   }
   ```

1. Elija **Cerrar**. Ha publicado correctamente en un tema que envía mensajes de notificación a una cola.