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.
Suscribir una SQS cola de Amazon a un tema de Amazon SNS
Para permitir que un SNS tema de Amazon envíe mensajes a una SQS cola de Amazon, realiza una de las siguientes acciones:
-
Usa la SQSconsola de Amazon
, lo que simplifica el proceso. Para obtener más información, consulta el tema Suscribir una SQS cola de Amazon a un SNS tema de Amazon en la Guía para desarrolladores de Amazon Simple Queue Service. -
Siga estos pasos:
Si desea saber cómo configurar un tema para enviar mensajes a una cola que está en otra cuenta de AWS, consulte Enviar SNS mensajes de Amazon a una SQS cola de Amazon en una cuenta diferente.
Para ver una AWS CloudFormation plantilla que crea un tema que envía mensajes a dos colas, consulta. Automatiza la SQS mensajería SNS de Amazon a Amazon con AWS CloudFormation
Paso 1: Obtenga ARN la lista y el tema
Al suscribir una cola a tu tema, necesitarás una copia de ARN la lista. Del mismo modo, si autorizas al tema a enviar mensajes a la cola, necesitarás una copia del ARN tema.
Para obtener la colaARN, puedes usar la SQS consola de Amazon o la GetQueueAttributesAPIacción.
Para obtener la cola ARN desde la consola de Amazon SQS
Inicia sesión en la SQS consola de Amazon AWS Management Console y ábrela en https://console.aws.amazon.com/sqs/
. -
Selecciona la casilla de la cola a la ARN que quieres acceder.
-
En la sección Detalles, copia el ARN valor para que puedas usarlo para suscribirte al SNS tema de Amazon.
Para obtener el temaARN, puedes usar la SNS consola de Amazon, el sns-get-topic-attributes
comando o la GetQueueAttributes
API acción.
Para obtener el tema ARN desde la SNS consola de Amazon
Inicia sesión en la SNSconsola de Amazon
. -
En el panel de navegación, elige el tema al que ARN quieres acceder.
-
En la sección Detalles, copia el ARNvalor para que puedas usarlo para dar permiso al SNS tema de Amazon para enviar mensajes a la cola.
Paso 2: Da permiso al SNS tema de Amazon para enviar mensajes a la SQS cola de Amazon
Para que un SNS tema de Amazon pueda enviar mensajes a una cola, debes establecer una política en la cola que permita al SNS tema de Amazon realizar la sqs:SendMessage
acción.
Antes de suscribir una cola a un tema, necesita un tema y una cola. Si todavía no ha creado un tema o una cola, créelo 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, puedes usar la SQS consola de Amazon o la SetQueueAttributesAPIacción. Antes de empezar, asegúrate de tener el ARN tema al que quieres permitir el envío de mensajes a la cola. Si está suscrito a una cola para varios temas, la política debe contener un elemento de Statement
para cada tema.
Para establecer una SendMessage política en una cola mediante la consola de Amazon SQS
Inicia sesión en la SQS consola de Amazon AWS Management Console y ábrela en https://console.aws.amazon.com/sqs/
. -
Seleccione el cuadro de la cola cuya política desea establecer, elija la pestaña Política de acceso y, a continuación, elija Agregar un permiso.
-
En la sección Política de acceso, defina quién puede acceder a la cola.
-
Añada una condición que permite la acción para el tema.
-
Se configura
Principal
como el SNS servicio de Amazon, como se muestra en el siguiente ejemplo. -
Utilice las claves de condición global
aws:SourceArn
oaws:SourceAccount
para protegerse contra el escenario de suplente confuso. Para usar estas claves condicionales, establece el valor en el ARN de tu tema. Si su cola está suscrita a varios temas, puede utilizaraws:SourceAccount
en su lugar.
Por ejemplo, la siguiente política MyTopic permite 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: Suscribe la lista al tema de Amazon SNS
Para enviar mensajes a una cola a través de un tema, debes suscribir la cola al tema de AmazonSNS. La cola se especifica por su. ARN Para suscribirte a un tema, puedes usar la SNS consola de Amazon, el sns-subscribe
CLI comando o la Subscribe
API acción. Antes de empezar, asegúrate de tener el formulario ARN correspondiente a la cola a la que deseas suscribirte.
Inicia sesión en la SNSconsola de Amazon
. -
En el panel de navegación, elija Topics (Temas).
-
Elija un tema en la página Topics (Temas).
-
En la
MyTopic
en la página Suscripciones, selecciona Crear suscripción. -
En la página Create subscription (Crear suscripción), en la sección Details (Detalles), haga lo siguiente:
-
Verifica el tema ARN.
-
Para Protocol, elige Amazon SQS.
-
Para Endpoint, introduce la ARN de una SQS cola de Amazon.
-
Elija Create Subscription.
Cuando se confirme la suscripción, el campo Subscription ID (ID de suscripción) de la nueva suscripción mostrará el 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 Enviar SNS mensajes de Amazon a una SQS cola de Amazon en una cuenta diferente.
-
Paso 4: Conceder a los usuarios permisos para las acciones adecuadas del tema y la cola
Deberías usar AWS Identity and Access Management (IAM) para permitir que solo los usuarios adecuados publiquen en el SNS tema de Amazon y lean o eliminen mensajes de la cola de AmazonSQS. Para obtener más información sobre cómo controlar las acciones de IAM los usuarios en temas y colasUso de políticas basadas en la identidad con Amazon SNS, consulte y Gestión de identidades y accesos 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 IAM usuario o grupo. La forma más sencilla de dar 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ñadiendo una política a un tema o una cola. Si quieres 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 principio la que Cuenta de AWS deseas 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.
Añadir una política a un IAM usuario o grupo
Si agregas la siguiente política a un IAM usuario o grupo, le darías permiso a ese usuario o a los miembros de ese grupo 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 agregas la siguiente política a un IAM usuario o grupo, le darías permiso a ese usuario o a los miembros de ese grupo para realizar las sqs:ReceiveMessage
sqs:DeleteMessage
acciones de las colas MyQueue 1 y MyQueue 2.
{ "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" ] } ] }
Añadir una política a un tema o una cola
Las siguientes políticas de ejemplo muestran cómo dar a otra cuenta permisos sobre a 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 IAM los usuarios que tienen acceso de nivel de administrador (acceso comodín). A todos IAM los demás usuarios de la otra cuenta se les deniega automáticamente el acceso a tu recurso. Si desea conceder a IAM usuarios específicos de ese recurso el Cuenta de AWS acceso a su recurso, la cuenta o un IAM usuario con acceso de nivel de administrador debe delegar los permisos del recurso a esos IAM usuarios. Para obtener más información sobre la delegación entre cuentas, consulte Habilitar el acceso entre cuentas en la Guía de uso. 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 SNS consola de Amazon
-
Con las credenciales del IAM usuario Cuenta de AWS o del usuario con permiso para publicar en el tema, inicia sesión AWS Management Console y abre la SNS consola de Amazon en https://console.aws.amazon.com/sns/
. -
En el panel de navegación, seleccione el tema y elija Publish to Topic (Publicar en tema).
-
En el cuadro Subject (Asunto), escriba un asunto (por ejemplo,
Testing publish to queue
), en el cuadro Message (Mensaje), introduzca algún texto (por ejemplo,Hello world!
) y, por último, elija Publish Message (Publicar mensaje). Aparecerá el siguiente mensaje: Your message has been successfully published.
Para ver el mensaje del tema con la SQS consola de Amazon
-
Con las credenciales del IAM usuario Cuenta de AWS o del usuario con permiso para ver los mensajes de la cola, inicia sesión en la SQS consola de Amazon AWS Management Console y ábrela en https://console.aws.amazon.com/sqs/
. -
Elija una cola que esté suscrita al tema.
-
Elija Send and receive messages (Enviar y recibir mensajes) y, a continuación, elija Poll for messages (Sondear en busca de mensajes). Se visualizará un mensaje del tipo Notification (Notificación).
-
En la columna Body (Cuerpo), elija More Details (Más información). El cuadro de detalles del mensaje contiene un JSON documento que contiene el asunto y el mensaje que publicaste en el tema. El mensaje tiene un aspecto similar al siguiente JSON documento.
{ "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 Close. Ha publicado correctamente en un tema que envía mensajes de notificación a una cola.