Enviar SNS mensajes de Amazon a una SQS cola de Amazon en una cuenta diferente - 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.

Enviar SNS mensajes de Amazon a una SQS cola de Amazon en una cuenta diferente

En este documento se describe cómo publicar una notificación en un SNS tema de Amazon con una o más suscripciones a las SQS colas de Amazon en otra cuenta. Configure el tema y las colas igual que lo haría si estuviesen en la misma cuenta (consulte Distribuye las SNS notificaciones de Amazon a las SQS colas de Amazon 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 SQS cola de Amazon 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 SQS cola de Amazon es la propietaria 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. Inicia sesión en la SNSconsola de Amazon.

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

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

  4. En la edición MyTopicpágina, amplíe la sección 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 que el ID de la cuenta delegue el permiso a su IAM usuario o rol. Solo la cuenta raíz o los usuarios administradores podrán llamar a sns:Subscribe. El IAM usuario o rol también debe permitir que su cola sns:subscribe se suscriba.

  6. 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 Cuenta de AWS mediante el AWS Management Console

Antes de empezar, asegúrate de tener los ARNs correspondientes al tema y a la cola, y de haberlos autorizado para enviar mensajes a la cola.

  1. Inicia sesión en la SQSconsola de Amazon.

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

  3. En la lista de colas, selecciona la cola para suscribirte al tema de AmazonSNS.

  4. Selecciona el SNStema Suscríbete a Amazon.

  5. En el menú Especificar un SNS tema de Amazon disponible para esta cola, elige el SNStema de Amazon para tu cola.

  6. Selecciona Introducir SNS tema de Amazon ARN y, a continuación, introduce el nombre del recurso de Amazon del tema (ARN).

  7. Seleccione Guardar.

    nota
    • Para poder comunicarse con el servicio, la cola debe tener permisos para AmazonSNS.

    • 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 utilizas la Subscribe acción, Amazon SNS envía una confirmación de suscripción a la cola. La suscripción se muestra en la SNS consola de Amazon, con el identificador de suscripción establecido en Pending Confirmation.

Para confirmar la suscripción, un usuario con permiso para leer los mensajes de la cola debe recuperar la confirmación URL de suscripción y el propietario de la suscripción debe confirmarla mediante la confirmación URL de 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, puedes usar la SQS consola de Amazon o la ReceiveMessage acción.

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: Da permiso al SNS tema de Amazon para enviar mensajes a la SQS cola de Amazon.

Paso 1: Para añadir una suscripción a Amazon SQS Queue a un tema de otro Cuenta de AWS mediante el AWS Management Console

Antes de empezar, asegúrate de tener los ARNs correspondientes al tema y a la cola y de haber dado permiso al tema para enviar mensajes a la cola.

  1. Inicia sesión en la SNSconsola de Amazon.

  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 Tema ARN, ingresa el ARN nombre del tema.

    2. Para Protocol, elige Amazon SQS.

    3. Para Endpoint, introduzca el ARN de la cola.

    4. Elija Crear una suscripción.

      nota
      • Para poder comunicarse con el servicio, la cola debe tener permisos para AmazonSNS.

El siguiente es un ejemplo de declaración de política que permite que el SNS tema de Amazon envíe un mensaje a la SQS cola de Amazon.

{ "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

  1. Inicia sesión en la SQSconsola de Amazon.

  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 Detalles del mensaje, busca y anota el URL valor de suscripción. 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 los API tokens, consulta ConfirmSubscriptionla SNS API referencia de Amazon.

      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. URLDebe pasarse del propietario de la cola al propietario de la suscripción. El propietario de la suscripción debe acceder URL a la SNSconsola de Amazon.

  5. Inicia sesión como propietario de la suscripción en la SNSconsola de Amazon 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.

    Aparece una XML respuesta, 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 consultas el tema de suscripción en la SNS consola de Amazon, podrás ver que el mensaje de confirmación pendiente se ha sustituido por la suscripción ARN 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.