Envío de mensajes de Amazon SNS a una cola de Amazon SQS de otra cuenta - Amazon Simple Notification Service

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

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 Colas de distribución ramificada a Amazon SQS). 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 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

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: Establecer la política del tema mediante la AWS Management Console

  1. Inicie sesión en la consola de Amazon SNS.

  2. En el panel de navegación, elija Topics (Temas).

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

  4. En la página Edit MyTopic (Editar MiTema), amplíe la sección Access policy (Política de acceso).

  5. 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 usuario o rol de IAM también debe tener sns:subscribe para permitir que su cola se suscriba.

  6. Elija Save changes (Guardar cambios).

    Un usuario con las credenciales de la cuenta 111122223333 puede suscribirse a MiTema.

Paso 2: Agregar una suscripción de cola de Amazon SQS a un tema de otra Cuenta de AWS mediante la AWS Management Console

Antes de comenzar, asegúrese de que tiene los ARN del tema y la cola y de que tiene el permiso específico para que el tema envíe mensajes a la cola.

  1. Inicie sesión en la consola de Amazon SQS.

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

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

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

  5. 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.

  6. 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.

  7. Seleccione Guardar.

    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

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.

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.

Paso 1: Para agregar una suscripción de cola de Amazon SQS a un tema de otra Cuenta de AWS mediante la AWS Management Console

Antes de comenzar, asegúrese de que tiene los ARN del tema y la cola y de que tiene el permiso específico para que el tema envíe mensajes a la cola.

  1. Inicie sesión en la consola de Amazon SNS.

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

  3. En la página Subscriptions (Suscripciones), elija Create subscription (Crear suscripción).

  4. En la página Create subscription (Crear suscripción), en la sección Details (Detalles), haga lo siguiente:

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

    2. En Protocolo, elija Amazon SQS.

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

    4. Seleccione Crear suscripció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 AWS Management Console

  1. Inicie sesión en la consola de Amazon SQS.

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

  3. 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.

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

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

    2. 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 ConfirmSubscription 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...
    3. 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.

  5. Inicie sesión como propietario de la suscripción en la Consola de Amazon SNS El propietario de la suscripción realiza la confirmación.

  6. Elija el tema correspondiente.

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

  8. Elija Confirm subscription (Confirmar suscripción).

  9. 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.

  10. 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.

  11. (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?

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.