Skip to content

Instantly share code, notes, and snippets.

@tmornini
Created May 27, 2016 16:37
Show Gist options
  • Save tmornini/2e42afddeee30b7bef332683fee651b2 to your computer and use it in GitHub Desktop.
Save tmornini/2e42afddeee30b7bef332683fee651b2 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
require 'aws-sdk-core'
require 'aws-sdk-resources'
sns = Aws::SNS::Client.new
sns_create_response =
sns.create_topic name: 'sns_test'
puts 'create sns topic'
puts sns_create_response.to_h
sqs = Aws::SQS::Client.new
sqs_create_response =
sqs.create_queue queue_name: 'sqs_test'
puts 'create sqs queue'
puts sqs_create_response.to_h
# add permission to allow sns delivery
# http://docs.aws.amazon.com/sns/latest/dg/SendMessageToSQS.html
sqs_get_attributes_response =
sqs.get_queue_attributes queue_url: sqs_create_response[:queue_url],
attribute_names: ['All']
puts 'get sqs queue attributes'
puts sqs_get_attributes_response.to_h
sns_subscribe_response =
sns.subscribe topic_arn: sns_create_response[:topic_arn],
protocol: 'sqs',
endpoint: sqs_get_attributes_response[:attributes]['QueueArn']
puts 'subscribe sqs queue to sns'
puts sns_subscribe_response.to_h
sns_publish_request =
sns.publish topic_arn: sns_create_response[:topic_arn],
message: 'is your uncle',
subject: 'Bob'
puts 'publish message to sns'
puts sns_publish_request.to_h
sqs_send_message_response =
sqs.send_message queue_url: sqs_create_response[:queue_url],
message_body: 'Cindy'
puts 'send sqs message'
puts sqs_send_message_response.to_h
start_time = Time.now
puts 'start polling for sqs message'
Aws::SQS::QueuePoller.new(
sqs_create_response[:queue_url]
).poll do |message|
puts Time.now - start_time
puts message.body
end
puts 'done polling for sqs message'
# sqs_delete_queue_response =
# sqs.delete_queue queue_url: sqs_create_response[:queue_url]
# puts 'delete sqs queue'
# puts sqs_delete_queue_response.to_h
# sns_delete_topic_response =
# sns.delete_topic topic_arn: sns_create_response[:topic_arn]
# puts 'delete sns topic'
# puts sns_delete_topic_response.to_s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment