This section provides examples that show how to:
Create an Amazon SQS queue and get queue ARN (Amazon Resource Name).
Create an Amazon SNS topic.
Give permissions to the SNS topic so that it can send messages to the queue.
Subscribe the queue to the SNS topic
Give IAM users or AWS accounts permissions to publish to the SNS topic and read messages from the SQS queue.
Verify results by publishing a message to the topic and reading the message from the queue.
The following command creates an SQS queue in your default region. The output shows the URL of the new queue.
PS >
New-SQSQueue -QueueName myQueue
https://sqs.us-west-2.amazonaws.com/123456789012/myQueue
The following command retrieves the ARN of the queue.
PS >
Get-SQSQueueAttribute -QueueUrl https://sqs.us-west-2.amazonaws.com/123456789012/myQueue -AttributeName QueueArn
...
QueueARN : arn:aws:sqs:us-west-2:123456789012:myQueue
...
The following command creates an SNS topic in your default region, and returns the ARN of the new topic.
PS >
New-SNSTopic -Name myTopic
arn:aws:sns:us-west-2:123456789012:myTopic
The following example script creates both an SQS queue and an SNS topic, and grants permissions to the SNS topic so that it can send messages to the SQS queue:
# 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 }
The following command subscribes the queue myQueue
to the SNS topic myTopic
, and returns the Subscription ID:
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
The following command grants permission to perform the sns:Publish
action on the topic myTopic
PS >
Add-SNSPermission `
-TopicArn arn:aws:sns:us-west-2:123456789012:myTopic `
-Label ps-cmdlet-topic `
-AWSAccountIds 123456789012 `
-ActionNames publish
The following command grants permission to perform the sqs:ReceiveMessage
and sqs:DeleteMessage
actions on the queue myQueue
.
PS >
Add-SQSPermission `
-QueueUrl https://sqs.us-west-2.amazonaws.com/123456789012/myQueue `
-AWSAccountId "123456789012" `
-Label queue-permission `
-ActionName SendMessage, ReceiveMessage
The following command tests your new queue and topic by publishing a message to the SNS topic myTopic
and returns the MessageId
.
PS >
Publish-SNSMessage `
-TopicArn arn:aws:sns:us-west-2:123456789012:myTopic `
-Message "Have A Nice Day!"
728180b6-f62b-49d5-b4d3-3824bb2e77f4
The following command retrieves the message from the SQS queue myQueue
and displays it.
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==
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4