Envoyer SNS des messages Amazon à une SQS file d'attente Amazon dans un autre compte - Amazon Simple Notification Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Envoyer SNS des messages Amazon à une SQS file d'attente Amazon dans un autre compte

Ce document explique comment publier une notification sur un SNS sujet Amazon avec un ou plusieurs abonnements à des SQS files d'attente Amazon sur un autre compte. Configurez la rubrique et les files d'attente de la même manière que vous le feriez s'ils se trouvaient dans le même compte (voir SNSNotifications Fanout Amazon aux SQS files d'attente Amazon pour un traitement asynchrone). La différence majeure réside dans le traitement de la confirmation d'abonnement, qui varie selon le mode d'abonnement de la file d'attente à la rubrique.

Il est recommandé de suivre les étapes référencées dans la section Création de l'abonnement par le propriétaire de la file d'attente lorsque c'est possible, car la confirmation est automatique lorsque le propriétaire de la file d'attente crée l'abonnement.

Note

Si la SQS file d'attente Amazon contient un volume élevé de messages, nous recommandons au propriétaire de la file d'attente de créer l'abonnement.

Création de l'abonnement par le propriétaire de la file d'attente

Le compte qui a créé la SQS file d'attente Amazon est le propriétaire de la file d'attente. Lorsque le propriétaire de la file d'attente crée un abonnement, ce dernier ne requiert pas de confirmation. La file d'attente commence à recevoir des notifications de la rubrique dès que l'action Subscribe est terminée. Pour permettre au propriétaire de la file d'attente de s'abonner à la rubrique du propriétaire de la rubrique, ce dernier doit accorder au propriétaire de la file d'attente l'autorisation d'appeler l'action Subscribe sur la rubrique.

Étape 1 : Pour définir la politique de rubrique à l'aide de AWS Management Console

  1. Connectez-vous à la SNSconsole Amazon.

  2. Dans le panneau de navigation, choisissez Rubriques.

  3. Sélectionnez une rubrique, puis choisissez Modifier.

  4. À propos de l'édition MyTopicpage, développez la section Politique d'accès.

  5. Saisissez la politique suivante :

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": "sns:Subscribe", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }

    Cette stratégie donne au compte 111122223333 l’autorisation d'appeler sns:Subscribesur MyTopic dans le compte 123456789012.

    Un utilisateur possédant les informations d'identification pour le compte 111122223333 peut s'abonner à MyTopic. Cette autorisation permet à l'identifiant du compte de déléguer l'autorisation à son IAM utilisateur/rôle. Seuls les utilisateurs du compte racine ou les administrateurs seront autorisés à appeler sns:Subscribe. L'IAMutilisateur/le rôle doit également autoriser sa file d'attente sns:subscribe à s'abonner.

  6. Sélectionnez Enregistrer les modifications.

    Un utilisateur possédant les informations d'identification du compte 111122223333 peut s'abonner à MyTopic.

Étape 2 : Pour ajouter un abonnement à la SQS file d'attente Amazon à un sujet d'un autre à Compte AWS l'aide du AWS Management Console

Avant de commencer, assurez-vous que vous disposez des informations correspondant ARNs à votre sujet et à votre file d'attente, et que vous avez autorisé le sujet à envoyer des messages à la file d'attente.

  1. Connectez-vous à la SQSconsole Amazon.

  2. Dans le panneau de navigation, choisissez Queues (Files d’attente).

  3. Dans la liste des files d'attente, choisissez la file d'attente pour vous abonner à la SNS rubrique Amazon.

  4. Choisissez S'abonner à la SNS rubrique Amazon.

  5. Dans le menu Spécifier un SNS sujet Amazon disponible pour cette file d'attente, choisissez le SNSsujet Amazon correspondant à votre file d'attente.

  6. Choisissez Enter Amazon SNS topic, ARN puis saisissez le nom de la ressource Amazon du sujet (ARN).

  7. Choisissez Save (Enregistrer).

    Note
    • Pour pouvoir communiquer avec le service, la file d'attente doit disposer d'autorisations pour AmazonSNS.

    • Parce que vous êtes le propriétaire de la file d'attente, vous n'avez pas à confirmer l'abonnement.

Création de l'abonnement par un utilisateur qui n'est pas le propriétaire de la file d'attente

Tout utilisateur qui crée un abonnement mais qui n'est pas le propriétaire de la file d'attente doit confirmer l'abonnement.

Lorsque vous utilisez cette Subscribe action, Amazon SNS envoie une confirmation d'abonnement à la file d'attente. L'abonnement est affiché dans la SNS console Amazon, avec son identifiant d'abonnement défini sur En attente de confirmation.

Pour confirmer l'abonnement, un utilisateur autorisé à lire les messages de la file d'attente doit récupérer la confirmation d'abonnementURL, et le propriétaire de l'abonnement doit confirmer l'abonnement à l'aide de la confirmation d'abonnementURL. Aucune notification publiée dans la rubrique n'est envoyée à la file d'attente, tant que l'abonnement n'est pas confirmé. Pour confirmer l'abonnement, vous pouvez utiliser la SQS console Amazon ou l'ReceiveMessageaction.

Note

Avant d'abonner un point de terminaison à la rubrique, assurez-vous que la file d'attente peut recevoir des messages de la rubrique en définissant l'autorisation sqs:SendMessage pour la file d'attente. Pour de plus amples informations, veuillez consulter Étape 2 : autoriser le SNS sujet Amazon à envoyer des messages à la SQS file d'attente Amazon.

Étape 1 : Pour ajouter un abonnement à la SQS file d'attente Amazon à un sujet d'un autre à Compte AWS l'aide du AWS Management Console

Avant de commencer, assurez-vous que vous disposez des informations correspondant ARNs à votre sujet et à votre file d'attente, et que vous avez autorisé le sujet à envoyer des messages à la file d'attente.

  1. Connectez-vous à la SNSconsole Amazon.

  2. Dans le panneau de navigation, choisissez Abonnements.

  3. Sur la page Abonnements, choisissez Créer un abonnement.

  4. Sur la page Créer un abonnement, dans la section Détails, procédez comme suit :

    1. Dans le champ Sujet ARN, saisissez le nom ARN du sujet.

    2. Pour Protocol, choisissez Amazon SQS.

    3. Pour Endpoint, entrez le nom ARN de la file d'attente.

    4. Choisissez Create subscription (Créer un abonnement).

      Note
      • Pour pouvoir communiquer avec le service, la file d'attente doit disposer d'autorisations pour AmazonSNS.

Voici un exemple de déclaration de politique qui permet à la SNS rubrique Amazon d'envoyer un message à la SQS file d'attente 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" } } }

Étape 2 : Pour confirmer un abonnement à l'aide du AWS Management Console

  1. Connectez-vous à la SQSconsole Amazon.

  2. Sélectionnez la file d'attente comportant un abonnement à la rubrique en attente.

  3. Choisissez Send and receive messages (Envoyer et recevoir des messages), puis Poll for messages (Rechercher des messages).

    Un message contenant la confirmation de l'abonnement est reçu dans la file d'attente.

  4. Dans la colonne Corps procédez comme suit :

    1. Choisissez Plus de détails.

    2. Dans la boîte de dialogue Détails du message, recherchez et notez la URL valeur Subscribe. Il s'agit du lien de votre abonnement (exemple ci-dessous). Pour plus d'informations sur la validation des API jetons, consultez ConfirmSubscriptionla SNS API référence Amazon.

      https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-2:123456789012:MyTopic&Token=2336412f37fb...
    3. Notez le lien de confirmation d'abonnement. Le URL doit être transmis du propriétaire de la file d'attente au propriétaire de l'abonnement. Le propriétaire de l'abonnement doit le saisir URL dans la SNSconsole Amazon.

  5. Connectez-vous en tant que propriétaire de l'abonnement à la SNSconsole Amazon Le propriétaire de l'abonnement effectue la confirmation.

  6. Choisissez la rubrique appropriée.

  7. Choisissez l'abonnement approprié dans le tableau des listes d'abonnements de la rubrique. Il est étiqueté comme « Confirmation en attente ».

  8. Choisissez le lien de Confirmer l'abonnement.

  9. Un modal apparaît pour indiquer le lien de confirmation de l'abonnement. Collez le lien de confirmation de l'abonnement.

  10. Sélectionnez la confirmation de l'abonnement dans le modal.

    Une XML réponse s'affiche, par exemple :

    <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 file d'attente abonnée est prête à recevoir des messages de la rubrique.

  11. (Facultatif) Si vous consultez le sujet d'abonnement dans la SNS console Amazon, vous pouvez constater que le message de confirmation en attente a été remplacé par l'abonnement ARN dans la colonne ID d'abonnement.

Comment forcer un abonnement à exiger une authentification sur les demandes de désabonnement ?

Le propriétaire de l'abonnement doit définir l'indicateur AuthenticateOnUnsubscribe sur true lors de la confirmation de l'abonnement.

  • AuthenticateOnUnsubscribe est automatiquement défini sur true lorsque le propriétaire de la file d'attente crée l'abonnement.

  • AuthenticateOnUnsubscribe ne peut pas être défini sur true lorsque le lien de confirmation de l'abonnement est atteint sans authentification.