Skip to content

Instantly share code, notes, and snippets.

View trevorrowe's full-sized avatar

Trevor Rowe trevorrowe

  • Amazon.com
  • Seattle, WA
View GitHub Profile
cf = Aws::CloudFront::Client.new
resp = cf.create_distribution(
distribution_config: {
caller_reference: Time.now.to_i.to_s,
aliases: {
quantity: 0
},
default_root_object: '',
origins: {
@trevorrowe
trevorrowe / gist:93c112eddc27182c9d96
Created October 15, 2014 23:34
Subscribing a queue to a topic
require 'aws-sdk-v1'
queue = AWS::SQS.new.queues['queue-arn']
topic = AWS::SNS.new.topics['topic-arn']
# this will modify the queue policy to allow the topic to send messages
topic.subscribe(queue)
@trevorrowe
trevorrowe / gist:2470ceb420edb322a178
Created January 29, 2015 21:47
A simple **untested** extraction from the V1 SDK for Ruby from AWS::SQS::Queue#poll.
# A simple extraction from the V1 SDK for Ruby from AWS::SQS::Queue#poll.
# No effort was made to test this code.
#
# @example Basic Usage
#
# poller = QueuePoller.new(queue_url)
# poller.poll { |msg| puts msg.body}
#
# @example Customized API client
#
@trevorrowe
trevorrowe / gist:7a36332bed24791a1196
Last active August 29, 2015 14:15
Uploading files to Amazon S3 using the AWS SDK for Ruby v2
# You can pass client options directly to the Resource constructor,
# no need to construct a client yourself
s3 = Aws::S3::Resource.new(
credentials: Aws::Credentials.new('akid', 'secret'),
region: 'eu-west-1'
)
s3.bucket('backup').object('dir/subdir/filename.txt').upload_file(local_file)
shape = sqs.config.api.operation(:receive_message).output
shape = Seahorse::Model::Shapes::Structure.new({
'members' => {
shape.metadata('resultWrapper') => shape.definition,
'ResponseMetadata' => {
'type' => 'structure',
'members' => {
'RequestId' => { 'type' => 'string' }
}
}
@trevorrowe
trevorrowe / gist:e03c727941728320f15b
Created March 14, 2015 06:33
Configuring an Amazon S3 Encryption Client
client = Aws::S3::Client.new(credentials: Aws::Credentials.new('akid', 'secret'))
encryption_client = Aws::S3::Encryption::Client.new(client: client)
pattern = "[aws] [:client_class] operation=:operation duration=:time retries=:retries error=:error_class\n"
Aws.config[:log_formatter] = Seahorse::Client::Logging::Formatter.new(pattern)
# success
[aws] [Aws::S3::Client] operation=list_buckets duration=0.602057 retries=0 error=
# error
[aws] [Aws::S3::Client] operation=head_bucket duration=1.100552 retries=0 error=Aws::S3::Errors::Forbidden
class ProgressIO
def initialize(io)
@io = io
end
def read(bytes = nil, output_buffer = nil)
puts bytes
@io.read(bytes, output_buffer)
end
@trevorrowe
trevorrowe / gist:8162733833c90491a9b3
Last active August 29, 2015 14:23
Plugin that conditionally raises response errors
class ConditionalRaisePlugin < Seahorse::Client::Plugin
class Handler < Seahorse::Client::Handler
def call(context)
response = @handler.call(context)
conditional_raise(response.error, context.config.errors_to_ignore)
response
end
@trevorrowe
trevorrowe / gist:de95d25baa0d472d71da
Created June 29, 2015 20:59
Expect-100 continue PUT bug - client
# This example server accepts a simple PUT request with the 'Excpect: 100-continue'
# header. It alternates between the following two responses:
#
# * 100 Continue, accepting the body, then 200 OK
# * 403 Forbidden, not accepting the body
#
require 'socket'
server = TCPServer.new('localhost', 3000)