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
Para permitir que un tema de Amazon SNS envíe mensajes a una cola de Amazon SQS, elija una de las siguientes opciones:
-
Utilice la consola de Amazon 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 en la Guía para desarrolladores de Amazon Simple Queue Service. -
Utilice los siguientes pasos:
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.
Para ver una AWS CloudFormation plantilla que cree un tema que envíe mensajes a dos colas, consulte. Automatización de la mensajería de Amazon SNS a Amazon SQS con AWS CloudFormation
Paso 1: obtener el ARN de la cola y el del tema
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
Para obtener el ARN de la cola de la consola de Amazon SQS, siga estos pasos:
Inicie sesión en la consola de Amazon SQS AWS Management Console y ábrala en. https://console.aws.amazon.com/sqs/
-
Seleccione la casilla de la cola cuyo ARN quiere obtener.
-
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
o la acción GetQueueAttributes
de la API.
Para obtener el ARN del tema desde la consola de Amazon SNS, siga estos pasos:
Inicie sesión en la consola de Amazon SNS
. -
En el panel de navegación, seleccione el tema cuyo ARN desea obtener.
-
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
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 y Creación de una cola 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 SetQueueAttributesla 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
Inicie sesión en la consola de Amazon SQS AWS Management Console y ábrala en. https://console.aws.amazon.com/sqs/
-
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.
-
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
aws:SourceArn
oaws:SourceAccount
para protegerse del escenario de suplente confuso. 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 utilizaraws: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
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
de la CLI o la acción de API Subscribe
. Antes de comenzar, asegúrese de que tiene el ARN de la cola que desea suscribir.
Inicie sesión en la consola de Amazon SNS
. -
En el panel de navegación, elija Temas.
-
Elija un tema en la página Temas.
-
En la
MyTopic
página, en la página Suscripciones, selecciona Crear suscripción. -
En la página Crear suscripción, en la sección Detalles, haga lo siguiente:
-
Verifique el ARN del tema.
-
En Protocolo, elija Amazon SQS.
-
En Punto de conexión, indique el ARN de una cola de Amazon SQS.
-
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.
-
Paso 4: conceder a los usuarios permisos para las acciones adecuadas del tema y la cola
Debe usar AWS Identity and Access Management (IAM) para permitir que solo los usuarios adecuados publiquen en el tema de Amazon SNS y lean o eliminen mensajes de la 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 e Identity and Access Management en Amazon SQS 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. 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. 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 Cuenta de AWS que 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
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
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 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
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:
-
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 AWS Management Console y ábrala en. https://console.aws.amazon.com/sns/
-
En el panel de navegación, seleccione el tema y elija Publicar en tema.
-
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!
) 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:
-
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 AWS Management Console y ábrala en. https://console.aws.amazon.com/sqs/
-
Elija una cola que esté suscrita al tema.
-
Elija Enviar y recibir mensajes y, a continuación, elija Sondeo de mensajes. Aparecerá un mensaje con el tipo Notificación.
-
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" }
-
Elija Cerrar. Ha publicado correctamente en un tema que envía mensajes de notificación a una cola.