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.
Amazon SQS, Amazon SNS et Tools for Windows PowerShell
Cette section fournit des exemples qui montrent comment :
-
Créer une file d'attente Amazon SQS et obtenir l'ARN (Amazon Resource Name) de la file d'attente.
-
Créez une rubrique Amazon SNS.
-
Accordez les autorisations à la rubrique SNS afin qu'elle puisse envoyer des messages à la file d'attente.
-
Abonner la file d'attente à la rubrique SNS
-
Accordez aux utilisateurs IAM ou aux comptes AWS les autorisations d'effectuer une publication dans la rubrique SNS et de lire les messages à partir de la file d'attente SQS.
-
Vérifiez les résultats en publiant un message dans la rubrique et en lisant le message à partir de la file d'attente.
Créer une file d'attente Amazon SQS et obtenir l'ARN de la file d'attente
La commande suivante crée une file d'attente SQS dans votre région par défaut. La sortie affiche l'URL de la nouvelle file d'attente.
PS >
New-SQSQueue -QueueName myQueue
https://sqs.us-west-2.amazonaws.com/123456789012/myQueue
La commande suivante récupère l'ARN de la file d'attente.
PS >
Get-SQSQueueAttribute -QueueUrl https://sqs.us-west-2.amazonaws.com/123456789012/myQueue -AttributeName QueueArn
... QueueARN : arn:aws:sqs:us-west-2:123456789012:myQueue ...
Créer une rubrique Amazon SNS
La commande suivante crée une rubrique SNS dans votre région par défaut et renvoie l'ARN de la nouvelle rubrique.
PS >
New-SNSTopic -Name myTopic
arn:aws:sns:us-west-2:123456789012:myTopic
Accorder les autorisations à la rubrique SNS
L'exemple de script suivant crée à la fois une file d'attente SQS et une rubrique SNS, et accorde des autorisations à la rubrique SNS afin qu'elle puisse envoyer des messages à la file d'attente SQS :
# create the queue and topic to be associated $qurl = New-SQSQueue -QueueName "myQueue" $topicarn = New-SNSTopic -Name "myTopic" # get the queue ARN to inject into the policy; it will be returned # in the output's QueueARN member but we need to put it into a variable # so text expansion in the policy string takes effect $qarn = (Get-SQSQueueAttribute -QueueUrl $qurl -AttributeNames "QueueArn").QueueARN # construct the policy and inject arns $policy = @" { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": "*", "Action": "SQS:SendMessage", "Resource": "$qarn", "Condition": { "ArnEquals": { "aws:SourceArn": "$topicarn" } } } } "@ # set the policy Set-SQSQueueAttribute -QueueUrl $qurl -Attribute @{ Policy=$policy }
Abonner la file d'attente à la rubrique SNS
La commande suivante abonne la file d'attente myQueue
à la rubrique SNS myTopic
et renvoie l'ID d'abonnement :
PS >
Connect-SNSNotification ` -TopicARN arn:aws:sns:us-west-2:123456789012:myTopic ` -Protocol SQS ` -Endpoint arn:aws:sqs:us-west-2:123456789012:myQueue
arn:aws:sns:us-west-2:123456789012:myTopic:f8ff77c6-e719-4d70-8e5c-a54d41feb754
Accorder les autorisations
La commande suivante donne l'autorisation d'effectuer l'action sns:Publish
sur la rubrique myTopic
:
PS >
Add-SNSPermission ` -TopicArn arn:aws:sns:us-west-2:123456789012:myTopic ` -Label ps-cmdlet-topic ` -AWSAccountIds 123456789012 ` -ActionNames publish
La commande suivante donne l'autorisation d'effectuer les actions sqs:ReceiveMessage
et sqs:DeleteMessage
sur la file d'attente myQueue
.
PS >
Add-SQSPermission ` -QueueUrl https://sqs.us-west-2.amazonaws.com/123456789012/myQueue ` -AWSAccountId "123456789012" ` -Label queue-permission ` -ActionName SendMessage, ReceiveMessage
Vérifier les résultats
La commande suivante teste votre nouvelle file d'attente et votre rubrique en publiant un message dans la rubrique SNS myTopic
, puis renvoie le MessageId
.
PS >
Publish-SNSMessage ` -TopicArn arn:aws:sns:us-west-2:123456789012:myTopic ` -Message "Have A Nice Day!"
728180b6-f62b-49d5-b4d3-3824bb2e77f4
La commande suivante récupère le message dans la file d'attente SQS myQueue
et l'affiche.
PS >
Receive-SQSMessage -QueueUrl https://sqs.us-west-2.amazonaws.com/123456789012/myQueue
Attributes : {} Body : { "Type" : "Notification", "MessageId" : "491c687d-b78d-5c48-b7a0-3d8d769ee91b", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:myTopic", "Message" : "Have A Nice Day!", "Timestamp" : "2019-09-09T21:06:27.201Z", "SignatureVersion" : "1", "Signature" : "llE17A2+XOuJZnw3TlgcXz4C4KPLXZxbxoEMIirelhl3u/oxkWmz5+9tJKFMns1ZOqQvKxk+ExfEZcD5yWt6biVuBb8pyRmZ1bO3hUENl3ayv2WQiQT1vpLpM7VEQN5m+hLIiPFcs vyuGkJReV7lOJWPHnCN+qTE2lId2RPkFOeGtLGawTsSPTWEvJdDbLlf7E0zZ0q1niXTUtpsZ8Swx01X3QO6u9i9qBFt0ekJFZNJp6Avu05hIklb4yoRs1IkbLVNBK/y0a8Yl9lWp7a7EoWaBn0zhCESe7o kZC6ncBJWphX7KCGVYD0qhVf/5VDgBuv9w8T+higJyvr3WbaSvg==", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-6aad65c2f9911b05cd53efda11f913f9.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:myTopic:22b77de7-a216-4000-9a23-bf465744ca84" } MD5OfBody : 5b5ee4f073e9c618eda3718b594fa257 MD5OfMessageAttributes : MessageAttributes : {} MessageId : 728180b6-f62b-49d5-b4d3-3824bb2e77f4 ReceiptHandle : AQEB2vvk1e5cOKFjeIWJticabkc664yuDEjhucnIOqdVUmie7bX7GiJbl7F0enABUgaI2XjEcNPxixhVc/wfsAJZLNHnl8SlbQa0R/kD+Saqa4OIvfj8x3M4Oh1yM1cVKpYmhAzsYrAwAD5g5FvxNBD6zs +HmXdkax2Wd+9AxrHlQZV5ur1MoByKWWbDbsqoYJTJquCclOgWIak/sBx/daBRMTiVQ4GHsrQWMVHtNC14q7Jy/0L2dkmb4dzJfJq0VbFSX1G+u/lrSLpgae+Dfux646y8yFiPFzY4ua4mCF/SVUn63Spy sHN12776axknhg3j9K/Xwj54DixdsegnrKoLx+ctI+0jzAetBR66Q1VhIoJAq7s0a2MseyOeM/Jjucg6Sr9VUnTWVhV8ErXmotoiEg==