Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
¿Cómo puedo configurar mi punto de enlace de Amazon SQS entre cuentas en el tema de Amazon SNS?
Quiero aprender a configurar una cola de Amazon SQS entre cuentas para suscribirme a un tema de Amazon SNS y recibir notificaciones en diferentes cuentas de AWS.
Descripción corta
Crea una suscripción desde un tema de Amazon Simple Notification Service (Amazon SNS) como propietario del tema. O bien, crea la suscripción desde la cola de Amazon Simple Queue Service (Amazon SQS) como propietario de la cola. Para crear correctamente la suscripción, ambos enfoques deben tener los permisos adecuados.
Resolución
Importante: Para suscribirte como propietario de una cola, asegúrate de que tu política de acceso a temas de SNS en la cuenta B tenga los permisos adecuados. Estos permisos permiten a la cola de SQS de la cuenta A suscribirse al tema de SNS. Para suscribirte como propietario de un tema, asegúrate de que la política de acceso a las colas de SQS de la cuenta A tenga los permisos adecuados. La cuenta A debe tener permisos para permitir que el tema de SNS envíe la URL de confirmación de la suscripción.
Suscripción como propietario de una cola
Para suscribirte a una cola como propietario de la cola, completa las siguientes tareas.
Modificación de la política de acceso a SNS en la cuenta B
Sigue estos pasos:
- Inicia sesión en la consola de Amazon SNS en la cuenta B.
- Cambia a la región de AWS correspondiente.
- Elige Temas y, a continuación, selecciona tu tema de SNS.
- Selecciona Editar.
- Expande la sección Política de acceso.
- Copia y pega la siguiente política de acceso en la sección Editor JSON:
Nota: Sustituye el ARN del tema de la cuenta de AWS y SNS por tus valores.{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": "sns:Subscribe", "Resource": "arn:aws:sns:Region:account-id:topic-name" } ] } - Selecciona Guardar.
Como propietario de una cola, sigue estos pasos para suscribir la cola de SQS de la cuenta A a tu tema de SNS de la cuenta B:
- Inicia sesión en la consola de Amazon SQS en la cuenta A.
- Cambia a la región correspondiente.
- Elige Colas y, a continuación, selecciona la cola de SQS.
- En la sección Suscripciones a SNS, selecciona Suscribirse a un tema de Amazon SNS.
- En Especificar un tema de Amazon SNS disponible para esta cola, selecciona el menú desplegable. A continuación, elige Introducir ARN del tema de Amazon SNS.
- En el campo de texto Un tema de Amazon SNS que puede enviar notificaciones a una cola de Amazon SQS, introduce el ARN del tema de SNS.
- Selecciona Guardar.
- Inicia sesión en la consola de Amazon SNS en la cuenta B.
- Elige Temas y, a continuación, selecciona tu tema de SNS.
- Para verificar que la suscripción esté confirmada para tu tema de SNS en la cuenta B, consulta la sección Suscripciones.
Nota: Tras crear la suscripción, se agrega una instrucción a la política de acceso a la cola de SQS. La política permite que el tema de SNS envíe mensajes a tu cola. La política es similar a la siguiente:
{ "Sid": "topic-subscription-arn:aws:sns:Region:account-id:topic-name", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SQS:SendMessage", "Resource": "arn:aws:sqs:Region:account-id:queue-name", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sns:Region:account-id:topic-name" } } }
Suscripción como propietario de un tema
Para suscribirte a una cola como propietario de un tema, completa las siguientes tareas.
Modificación de la cola de SQS en la cuenta A
Sigue estos pasos:
- Inicia sesión en la consola de Amazon SQS en la cuenta A.
- Cambia a la región correspondiente.
- Elige Colas y, a continuación, selecciona la cola de SQS.
- Selecciona Editar.
- Expande la sección Política de acceso.
- Copia y pega la siguiente política de acceso en el editor JSON:
Nota: Sustituye el ARN de la cola de SQS y el ARN del tema de SNS por tus valores.{ "Sid": "Allow_SNS_topic_in_Account_B_to_Send_Message", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SQS:SendMessage", "Resource": "arn:aws:sqs:Region:account-id:queue-name", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sns:Region:account-id:topic-name" } } }
Como propietario de un tema, sigue estos pasos para suscribir tu cola de SQS en otra cuenta:
- Inicia sesión en la consola de Amazon SNS en la cuenta B.
- Cambia a la región correspondiente.
- Elige Temas y, a continuación, selecciona tu tema de SNS.
- En Suscripciones, selecciona Crear suscripción.
- Elige la lista desplegable Protocolo y, a continuación, selecciona Amazon SQS.
- Selecciona Crear suscripción.
- Para confirmar la suscripción, inicia sesión en la consola de Amazon SQS en la cuenta A.
- Elige Colas y, a continuación, selecciona la cola de SQS suscrita.
- Selecciona Enviar y recibir mensajes.
- Selecciona Sondeo para ver los mensajes. Aparece un mensaje de Amazon SNS en la sección Mensajes.
- Selecciona el ID del mensaje. En SubscribeURL, copia la URL entre comillas.
- Para ver ConfirmSubscriptionResult con SubscriptionArn, pega este enlace de URL en el navegador web y pulsa Intro.
- Inicia sesión en la consola de Amazon SNS en la cuenta B.
- Elige Temas y, a continuación, selecciona tu tema de SNS.
- Para comprobar que la suscripción está confirmada, revisa el estado de la suscripción en Suscripciones. El estado de la suscripción cambia de Pendiente de confirmación a Confirmada.
Nota: Como la suscripción es propiedad de la cuenta de SNS, no puedes ver la suscripción en la consola de SQS.
Consejos para solucionar problemas
Para solucionar problemas con las colas, completa las siguientes tareas según tu caso.
Mi cola de SQS está cifrada
Las colas de SQS cifradas con una clave de AWS Key Management Service (AWS KMS) pueden restringir el acceso entre cuentas. Si no defines una clave para la cola cifrada, la cola utilizará la clave de AWS KMS (SSE-KMS) como clave predeterminada. Esta clave permite el acceso solo a las entidades principales de la misma cuenta. Para obtener más información, consulta Encryption at rest in Amazon SQS (Cifrado en reposo en Amazon SQS).
Para acceder a las colas cifradas que utilizan SSE-KMS, crea una clave de AWS KMS administrada por el cliente. A continuación, agrega permisos en la política de claves que permitan al servicio de SNS realizar las llamadas a la API de AWS KMS.
Para permitir que el servicio de SNS utilice los métodos de API GenerateDataKey y Decrypt, agrega la siguiente instrucción a la política de claves administradas por el cliente:
{ "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }
Para obtener más información, consulta Configuring server-side encryption (SSE) for a queue (console) (Configuración del cifrado en el servidor [SSE] para una cola [consola]).
Mi suscripción sigue pendiente en la consola de SNS cuando creo mi suscripción en la consola de Amazon SNS
Para solucionar este problema, sigue estos pasos:
-
Elimina tu suscripción. A continuación, comience desde el paso 13 de los pasos anteriores.
-
Para usar la interfaz de la línea de comandos de AWS (AWS CLI) para sondear la cola de SQS, ejecuta el siguiente comando para recuperar la SubscriptionURL:
aws sqs receive-message --queue-url https**:**//sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --attribute-names All --message-attribute-names All --max-number-of-messages 10Nota: Si se muestran errores al ejecutar comandos de la AWS CLI, consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
-
Copia y pega esta URL en tu navegador para confirmar la suscripción. Asegúrate de reemplazar la URL de la cola por la tuya propia.
Cuando copio y pego mi política de acceso a temas de SNS, recibo el error «Couldn't set topic access policy»
Cuando copio y pego mi política de acceso a temas de SNS, aparece el siguiente error:
«Couldn't set topic access policy.Error code: InvalidParameter - Error message: An error occurred while setting the attribute access policy. Invalid parameter: Policy Error: null».
Para solucionar este error, sigue estos pasos:
- Para asegurarte de que la sintaxis de tu política es correcta, copia y pega la política de acceso en el sitio web de la herramienta de validador JSON.
- Revisa tu política de acceso para asegurarte de que no tienes una instrucción duplicada. Asegúrate de que haya una coma después de tu primer ID de instrucción.
Mi ID de suscripción aparece como «Eliminada» en la consola de Amazon SNS
En la integración entre cuentas de SNS y SQS, el propietario de la suscripción se determina en función del lugar desde el que se creó la suscripción.
Si la suscripción se crea desde una cuenta de SQS, SQS es el propietario de la suscripción. Si la suscripción se crea desde una cuenta SNS, SNS es el propietario de la suscripción.
Si llamas a la API Unsubscribe de desde una cuenta que no es la propietaria de la suscripción, esta pasará al estado Eliminada. O bien, si intentas eliminar la suscripción desde la consola, la suscripción pasará al estado Eliminada. Mientras la suscripción al tema de SNS esté en estado Eliminada, la cuenta propietaria de la suscripción no podrá volver a suscribir el mismo punto de enlace al tema.
Transcurridas 48 horas, Amazon SNS borra la suscripción eliminada y la cuenta propietaria de la suscripción puede volver a suscribirse al tema desde el mismo punto de enlace.
Para volver a suscribirte antes de 48 horas, llama a la API Subscribe desde la cuenta de AWS propietaria del tema de SNS para volver a crear la suscripción.
Prácticas recomendadas
Autentica tu suscripción de SNS en tu cola de SQS. Con esta configuración, solo el propietario del tema y el propietario de la suscripción pueden cancelar la suscripción a la cola de SQS del tema de SNS.
Información relacionada
Envío de mensajes de Amazon SNS a una cola de Amazon SQS en una cuenta diferente
- Idioma
- Español
Vídeos relacionados


Contenido relevante
- Respuesta aceptadapreguntada hace un año
- preguntada hace 7 meses
- preguntada hace 5 meses
- preguntada hace 6 meses