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 Distribución ramificada de notificaciones de Amazon SNS a colas de Amazon SQS para su procesamiento asíncrono). 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
Inicie sesión en la consola de Amazon SNS
. -
En el panel de navegación, elija Temas.
-
Seleccione un tema y, a continuación, seleccione Edit (Editar).
-
En la
MyTopic
página de edición, expanda la sección Política de acceso. -
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 asns:Subscribe
enMyTopic
en la cuenta123456789012
.Un usuario con las credenciales de la cuenta
111122223333
puede suscribirse aMyTopic
. 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 asns:Subscribe
. El usuario o rol de IAM también debe tenersns:subscribe
para permitir que su cola se suscriba. -
Elija Guardar cambios.
Un usuario con las credenciales de la cuenta
111122223333
puede suscribirse MyTopic.
Paso 2: Para añadir una suscripción a Amazon SQS Queue a un tema de otro mediante el Cuenta de AWSAWS Management Console
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 cola.
Inicie sesión en la consola de Amazon SQS
. -
En el panel de navegación, elija Queues (Colas).
-
En la lista de colas, elija la cola para suscribirse al tema de Amazon SNS.
-
Elija Subscribe to Amazon SNS topic (Suscribirse al tema de Amazon SNS).
-
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.
-
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.
-
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 añadir una suscripción a Amazon SQS Queue a un tema de otro mediante el Cuenta de AWSAWS Management Console
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 cola.
Inicie sesión en la consola de Amazon SNS
. -
En el panel de navegación, seleccione Subscriptions (Suscripciones).
-
En la página Subscriptions (Suscripciones), elija Create subscription (Crear suscripción).
-
En la página Crear suscripción, en la sección Detalles, haga lo siguiente:
-
En Topic ARN (ARN del tema), introduzca el ARN del tema.
-
En Protocolo, elija Amazon SQS.
-
En Endpoint (Punto de enlace), introduzca el ARN de la cola.
-
Elija Crear una 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 el AWS Management Console
-
Inicie sesión en la consola de Amazon SQS
. -
Seleccione la cola que tenga una suscripción pendiente con el tema.
-
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.
-
En la columna Body (Cuerpo) , realice las siguientes acciones:
-
Seleccione More Details (Más detalles).
-
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...
-
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
.
-
-
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. -
Elija el tema correspondiente.
-
Elija la suscripción correspondiente en la tabla de listas de suscripciones del tema. Se etiqueta como "Pendiente de confirmación".
-
Elija Confirm subscription (Confirmar suscripción).
-
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.
-
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.
-
(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.