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.
Rubriques
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
Connectez-vous à la SNSconsole Amazon
. -
Dans le panneau de navigation, choisissez Rubriques.
-
Sélectionnez une rubrique, puis choisissez Modifier.
-
À propos de l'édition
MyTopic
page, développez la section Politique d'accès. -
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'appelersns:Subscribe
surMyTopic
dans le compte123456789012
.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 à appelersns:Subscribe
. L'IAMutilisateur/le rôle doit également autoriser sa file d'attentesns:subscribe
à s'abonner. -
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.
Connectez-vous à la SQSconsole Amazon
. -
Dans le panneau de navigation, choisissez Queues (Files d’attente).
-
Dans la liste des files d'attente, choisissez la file d'attente pour vous abonner à la SNS rubrique Amazon.
-
Choisissez S'abonner à la SNS rubrique Amazon.
-
Dans le menu Spécifier un SNS sujet Amazon disponible pour cette file d'attente, choisissez le SNSsujet Amazon correspondant à votre file d'attente.
-
Choisissez Enter Amazon SNS topic, ARN puis saisissez le nom de la ressource Amazon du sujet (ARN).
-
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'ReceiveMessage
action.
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.
Connectez-vous à la SNSconsole Amazon
. -
Dans le panneau de navigation, choisissez Abonnements.
-
Sur la page Abonnements, choisissez Créer un abonnement.
-
Sur la page Créer un abonnement, dans la section Détails, procédez comme suit :
-
Dans le champ Sujet ARN, saisissez le nom ARN du sujet.
-
Pour Protocol, choisissez Amazon SQS.
-
Pour Endpoint, entrez le nom ARN de la file d'attente.
-
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
-
Connectez-vous à la SQSconsole Amazon
. -
Sélectionnez la file d'attente comportant un abonnement à la rubrique en attente.
-
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.
-
Dans la colonne Corps procédez comme suit :
-
Choisissez Plus de détails.
-
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
ConfirmSubscription
la 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...
-
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
.
-
-
Connectez-vous en tant que propriétaire de l'abonnement à la SNSconsole Amazon
Le propriétaire de l'abonnement effectue la confirmation. -
Choisissez la rubrique appropriée.
-
Choisissez l'abonnement approprié dans le tableau des listes d'abonnements de la rubrique. Il est étiqueté comme « Confirmation en attente ».
-
Choisissez le lien de Confirmer l'abonnement.
-
Un modal apparaît pour indiquer le lien de confirmation de l'abonnement. Collez le lien de confirmation de l'abonnement.
-
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.
-
(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.