Skip to content

Instantly share code, notes, and snippets.

@BeanCounterTop
Created March 3, 2016 01:18
Show Gist options
  • Save BeanCounterTop/fd970960733e7e56be53 to your computer and use it in GitHub Desktop.
Save BeanCounterTop/fd970960733e7e56be53 to your computer and use it in GitHub Desktop.
An example for how to use AWS SQS queues in Powershell
$QueueName = "myQueue"
$TopicName = "myTopic"
$Region = "us-west-2"
$SNSUserAccountID = (Get-EC2SecurityGroup -GroupNames "default")[0].OwnerId
$QueueURL = New-SQSQueue -QueueName $QueueName -Region $Region
$QueueARN = (Get-SQSQueueAttribute -QueueUrl $QueueURL -AttributeName QueueArn).Attributes['QueueArn']
$TopicARN = New-SNSTopic -Name $TopicName -Region $Region
$Sid = "Sid" + (Get-Random)
$Policy = @"
{
"Version": "2012-10-17",
"Id": "$QueueARN/SQSDefaultPolicy",
"Statement": [
{
"Sid": "$Sid",
"Effect": "Allow",
"Principal": "*",
"Action": "SQS:SendMessage",
"Resource": "$QueueARN",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "$TopicARN"
}
}
}
]
}
"@
Set-SQSQueueAttribute -QueueUrl $QueueURL -Attribute @{ Policy = $Policy }
$SubscriptionID = Connect-SNSNotification -TopicARN $TopicARN -Protocol SQS -Endpoint $QueueARN -Region $Region
Add-SNSPermission -TopicArn $TopicARN -Label ps-cmdlet-topic -AWSAccountIds $SNSUserAccountID -ActionNames publish -Region $Region
Add-SQSPermission -QueueUrl $QueueURL -Region $Region -AWSAccountId $SNSUserAccountID -Label queue-permission -ActionName SendMessage, ReceiveMessage
$MessageText = "Have a nice day!"
$MessageID = Publish-SNSMessage -TopicArn $TopicARN -Message $MessageText -Region $Region
$Message = Receive-SQSMessage -QueueUrl $QueueURL -Region $Region | Select -ExpandProperty Body | ConvertFrom-Json
$Message.Message
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment