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.
Abonnement d'une file d'attente Amazon SQS à une rubrique Amazon SNS
Pour permettre à une rubrique Amazon SNS d'envoyer des messages à une file d'attente Amazon SQS, choisissez l'une des options suivantes :
-
Utilisez la console Amazon SQS
, ce qui simplifie le processus. Pour plus d'informations, consultez Abonnement d'une file d'attente Amazon SQS à une rubrique Amazon SNS dans le Guide du développeur Amazon Simple Queue Service. -
Procédez comme suit :
Pour découvrir comment configurer une rubrique pour envoyer des messages à une file d'attente située dans un autre compte AWS, consultez Envoi de messages Amazon SNS à une file d'attente Amazon SQS d'un autre compte.
Pour voir un AWS CloudFormation modèle qui crée une rubrique qui envoie des messages à deux files d'attente, voirAutomatisez la messagerie Amazon SNS vers Amazon SQS avec AWS CloudFormation.
Étape 1 : obtenir l'ARN de la file d'attente et de la rubrique
Lorsque vous abonnez une file d'attente à votre rubrique, vous avez besoin d'une copie de l'ARN de la file d'attente. De même, lorsque vous accordez à la rubrique l'autorisation d'envoyer des messages à la file d'attente, vous avez besoin d'une copie de l'ARN de la rubrique.
Pour obtenir l'ARN de la file d'attente, vous pouvez utiliser la console Amazon SQS ou l'action GetQueueAttributesAPI.
Pour obtenir l'ARN de la file d'attente à partir de la console Amazon SQS
Connectez-vous à la console Amazon SQS AWS Management Console et ouvrez-la à l'adresse. https://console.aws.amazon.com/sqs/
-
Cochez la case correspondant à la file d'attente dont vous souhaitez obtenir l'ARN.
-
Sur l'onglet Détails, copiez la valeur de l'ARN afin de pouvoir l'utiliser pour l'abonnement à la rubrique Amazon SNS.
Pour obtenir l'ARN de la rubrique, vous pouvez utiliser la console Amazon SNS, la commande sns-get-topic-attributes
ou l'action d'API GetQueueAttributes
.
Pour obtenir l'ARN de la rubrique à partir de la console Amazon SNS
Connectez-vous à la console Amazon SNS
. -
Dans le panneau de navigation, sélectionnez la rubrique dont vous souhaitez obtenir l'ARN.
-
Dans la section Détails, copiez la valeur du champ ARN afin de pouvoir l'utiliser pour accorder à la rubrique Amazon SNS l'autorisation d'envoyer des messages à la file d'attente.
Étape 2 : autoriser la rubrique Amazon SNS à envoyer des messages à la file d'attente Amazon SQS
Pour qu'une rubrique Amazon SNS soit en mesure d'envoyer des messages à une file d'attente, vous devez définir une politique sur la file d'attente qui permette à la rubrique Amazon SNS d'effectuer l'action sqs:SendMessage
.
Avant d'abonner une file d'attente à une rubrique, vous avez besoin d'une rubrique et d'une file d'attente. Si vous n'avez pas encore créé de rubrique ou de file d'attente, faites-le maintenant. Pour plus d'informations, consultez Création d'une rubrique et Création d'une file d'attente dans le Guide du développeur Amazon Simple Queue Service.
Pour définir une politique sur une file d'attente, vous pouvez utiliser la console Amazon SQS ou l'action SetQueueAttributesAPI. Avant de commencer, assurez-vous que vous disposez de l'ARN de la rubrique que vous souhaitez autoriser à envoyer des messages à la file d'attente. Si vous abonnez une file d'attente à plusieurs rubriques, votre stratégie doit contenir un élément Statement
pour chaque rubrique.
Pour définir une SendMessage politique sur une file d'attente à l'aide de la console Amazon SQS
Connectez-vous à la console Amazon SQS AWS Management Console et ouvrez-la à l'adresse. https://console.aws.amazon.com/sqs/
-
Cochez la case de la file d'attente dont vous souhaitez définir la politique, choisissez l'onglet Politique d'accès, puis choisissez Modifier.
-
Dans la Politique d'accès, définissez qui peut accéder à votre file d'attente.
-
Ajoutez une condition qui autorise l'action pour la rubrique.
-
Définissez
Principal
en tant que service Amazon SNS, comme indiqué dans l'exemple ci-dessous. -
Utiliser les clés de condition globales
aws:SourceArn
ouaws:SourceAccount
pour se protéger contre le scénario Député confus. Pour utiliser ces clés de condition, définissez la valeur de l'ARN de votre sujet. Si votre file d'attente est abonnée à plusieurs rubriques, vous pouvez utiliseraws:SourceAccount
à la place.
Par exemple, la politique suivante permet d' MyTopic envoyer des messages à 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" } } } ] }
-
Étape 3 : abonner la file d'attente à la rubrique Amazon SNS
Pour envoyer des messages à une file d'attente via une rubrique, vous devez abonner la file d'attente à la rubrique Amazon SNS. Spécifiez la file d'attente à l'aide de son ARN. Pour réaliser un abonnement à une rubrique, vous pouvez utiliser la console Amazon SNS, la CLI sns-subscribe
de commande ou l'action d'API Subscribe
. Avant de commencer, assurez-vous que vous disposez de l'ARN de la file d'attente que vous souhaitez abonner.
Connectez-vous à la console Amazon SNS
. -
Dans le panneau de navigation, choisissez Rubriques.
-
Sur la page Rubriques, choisissez une rubrique.
-
Sur la
MyTopic
page, dans la page Abonnements, choisissez Créer un abonnement. -
Sur la page Créer un abonnement, dans la section Détails , procédez comme suit :
-
Vérifiez la valeur de ARN de la rubrique.
-
Pour Protocole, choisissez Amazon SQS.
-
Pour Point de terminaison, saisissez l'ARN d'une file d'attente Amazon SQS.
-
Choisissez Créer un abonnement.
Lorsque l'abonnement est confirmé, le champ ID de l'abonnement de votre nouvel abonnement affiche son ID d'abonnement. Si le propriétaire de la file d'attente crée l'abonnement, ce dernier est automatiquement confirmé et l'abonnement doit être actif presque immédiatement.
En général, vous abonnez votre propre file d'attente à votre propre rubrique dans votre propre compte. Cependant, vous pouvez également abonner une file d'attente d'un autre compte à votre rubrique. Si l'utilisateur qui crée l'abonnement n'est pas le propriétaire de la file d'attente (par exemple, si un utilisateur du compte A abonne une file d'attente du compte B à une rubrique du compte A), l'abonnement doit être confirmé. Pour plus d'informations sur l'abonnement d'une file d'attente d'un autre compte et la confirmation de l'abonnement, consultez la page Envoi de messages Amazon SNS à une file d'attente Amazon SQS d'un autre compte.
-
Étape 4 : autoriser les utilisateurs à accéder aux actions appropriées sur la rubrique et la file d'attente
Vous devez utiliser AWS Identity and Access Management (IAM) pour autoriser uniquement les utilisateurs appropriés à publier sur la rubrique Amazon SNS et à lire/supprimer des messages de la file d'attente Amazon SQS. Pour plus d'informations sur le contrôle des actions sur les rubriques et les files d'attente pour les utilisateurs IAM, consultezUtilisation de politiques basées sur l'identité avec Amazon SNS et Gestion des identités et des accès dans Amazon SQS dans le Guide du développeur Amazon Simple Queue Service.
Il existe deux façons de contrôler l'accès à une rubrique ou une file d'attente :
-
Ajoutez une politique à un utilisateur ou un groupe IAM. La façon la plus simple d'accorder à des utilisateurs des autorisations d'accès à des rubriques ou des files d'attente consiste à créer un groupe et à lui ajouter la politique appropriée, puis à ajouter des utilisateurs à ce groupe. Il est beaucoup plus facile d'ajouter ou de supprimer des utilisateurs dans un groupe que de suivre les politiques que vous définissez pour des utilisateurs individuels.
-
Ajoutez une politique à une rubrique ou une file d'attente. Si vous souhaitez autoriser un autre AWS compte à accéder à un sujet ou à une file d'attente, la seule façon de le faire est d'ajouter une politique dont le principal est la personne à laquelle Compte AWS vous souhaitez accorder des autorisations.
Vous devez utiliser la première méthode dans la plupart des cas (appliquer des politiques à des groupes et gérer les autorisations accordées aux utilisateurs en ajoutant ou supprimant les utilisateurs appropriés dans les groupes). Si vous avez besoin d'accorder des autorisations à un utilisateur d'un autre compte, vous devez utiliser la seconde méthode.
Ajout d'une politique à un utilisateur ou un groupe IAM
Si vous ajoutiez la politique suivante à un utilisateur ou à un groupe IAM, vous autoriseriez cet utilisateur ou les membres de ce groupe à effectuer l'sns:Publish
action sur le sujet MyTopic.
{ "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }
Si vous ajoutiez la politique suivante à un utilisateur ou à un groupe IAM, vous autoriseriez cet utilisateur ou les membres de ce groupe à effectuer les sqs:DeleteMessage
actions sqs:ReceiveMessage
et sur les files d'attente MyQueue 1 et 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" ] } ] }
Ajout d'une politique à une rubrique ou une file d'attente
Les exemples de politiques suivants montrent comment accorder à un autre compte des autorisations d'accès à une rubrique et une file d'attente.
Note
Lorsque vous accordez à une autre personne l' Compte AWS accès à une ressource de votre compte, vous accordez également aux utilisateurs IAM disposant d'un accès de niveau administrateur (accès générique) des autorisations d'accès à cette ressource. Tous les autres utilisateurs IAM de l'autre compte se voient automatiquement refuser l'accès à votre ressource. Si vous voulez accorder à des utilisateurs IAM spécifiques de ce compte Compte AWS l'accès à votre ressource, le compte ou un utilisateur IAM disposant d'un accès de niveau administrateur doit déléguer des autorisations pour la ressource à ces utilisateurs IAM. Pour plus d'informations sur la délégation entre comptes, consultez la section Activation d'accès entre comptes du guide Utilisation d'IAM.
Si vous avez ajouté la politique suivante à un sujet MyTopic du compte 123456789012, vous autorisez le compte 111122223333 à effectuer l'action sur ce sujet. sns:Publish
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }
Si vous avez ajouté la politique suivante à une file d'attente MyQueue du compte 123456789012, vous autoriseriez le compte 111122223333 à effectuer les actions et sur cette file d'attente. sqs:ReceiveMessage
sqs:DeleteMessage
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue" ] } ] }
Étape 5 : Tester les abonnements de la file d'attente à une rubrique
Vous pouvez tester les abonnements d'une file d'attente à une rubrique en effectuant une publication dans la rubrique et en affichant le message que la rubrique envoie à la file d'attente.
Pour effectuer une publication dans une rubrique à l'aide de la console Amazon SNS
-
À l'aide des informations d'identification de l'utilisateur Compte AWS ou de l'utilisateur IAM autorisé à publier sur le sujet, connectez-vous à la console Amazon SNS AWS Management Console et ouvrez-la à l'adresse. https://console.aws.amazon.com/sns/
-
Dans le panneau de navigation, sélectionnez la rubrique et choisissez Publier dans la rubrique.
-
Dans la zone Sujet, entrez un objet (par exemple,
Testing publish to queue
). Dans la zone Message, saisissez du texte (par exemple,Hello world!
) et choisissez Publier un message. Le message suivant s'affiche : Votre message a été publié.
Pour afficher le message à partir de la rubrique à l'aide de la console Amazon SQS
-
À l'aide des informations d'identification de l'utilisateur Compte AWS ou de l'utilisateur IAM autorisé à consulter les messages de la file d'attente, connectez-vous à la console Amazon SQS AWS Management Console et ouvrez-la à l'adresse. https://console.aws.amazon.com/sqs/
-
Choisissez une file d'attente abonnée à la rubrique.
-
Choisissez Send and receive messages (Envoyer et recevoir des messages), puis Poll for messages (Rechercher des messages). Un message de type Notification s'affiche.
-
Dans la colonne Corps, choisissez Plus de détails. La zone Détails des messages contient un document JSON qui inclut l'objet et le message que vous avez publiés dans la rubrique. Le message se présente comme le document JSON suivant.
{ "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" }
-
Choisissez Close (Fermer). Vous venez d'effectuer une publication dans une rubrique qui envoie des messages de notification à une file d'attente.