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
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import java.nio.file.Paths;
public class TransferManagerUploadExample {
private static final String BUCKET = <bucket>;
private static final String KEY = <key>;
private static final String FILE_PATH = <path>;
public static void main(String[] args) throws InterruptedException {
@trevorrowe
trevorrowe / empty-example
Last active October 19, 2017 00:07
AWS SDK for Ruby v2 pluggable HTTP client example
#!/usr/bin/env ruby
require 'aws-sdk'
# This example produces empty http responses, but gives some general structure and guiance.
class DummyHttpHandler < Seahorse::Client::Handler
def call(context)
context.http_request.endpoint # HTTP or HTTPS URI
@trevorrowe
trevorrowe / instances.rb
Created November 20, 2015 23:09
Listing EC2 instances
# using EC2 client
ec2 = Aws::EC2::Client.new
ec2.describe_instances.each_page do |resp|
resp.reservations.each do |reservation|
reservation.instances.each do |intsance|
puts instance.instance_id
end
end
end
@trevorrowe
trevorrowe / progress.rb
Created September 14, 2015 18:51
Tracking progress of a file upload using v2 of the aws-sdk gem
require 'aws-sdk'
require 'pathname'
class ProgressIO
def initialize(io)
@io = io
@bytes_read = 0
@listeners = []
end
@trevorrowe
trevorrowe / client.rb
Created June 29, 2015 21:03
Ruby Net::HTTP Expect-100 continue PUT bug
require 'net/http'
require 'logger'
req = Net::HTTP::Put.new('/', { 'expect' => '100-continue' })
req.body = 'data'
http = Net::HTTP.new('localhost', 3000)
http.continue_timeout = 1
http.set_debug_output(Logger.new($stdout))
http.request(req)
@trevorrowe
trevorrowe / gist:bb041b0d7b57df239d43
Created June 29, 2015 20:59
Expect-100 continue PUT bug - sever
require 'net/http'
require 'logger'
req = Net::HTTP::Put.new('/', { 'expect' => '100-continue' })
req.body = 'data'
http = Net::HTTP.new('localhost', 3000)
http.continue_timeout = 1
http.set_debug_output(Logger.new($stdout))
http.request(req)
@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)
@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
class ProgressIO
def initialize(io)
@io = io
end
def read(bytes = nil, output_buffer = nil)
puts bytes
@io.read(bytes, output_buffer)
end
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