Skip to content

Instantly share code, notes, and snippets.

@mechamogera
Created September 30, 2012 02:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mechamogera/3805631 to your computer and use it in GitHub Desktop.
Save mechamogera/3805631 to your computer and use it in GitHub Desktop.
IAM roleトークンによるS3アクセスでの期限切れ確認用スクリプト
require 'rubygems'
gem 'aws-sdk'
require 'aws'
require 'optparse'
require 'net/http'
class Net::HTTP
alias :create :initialize
def initialize(*args)
create(*args)
self.set_debug_output STDOUT
end
end
access_key_id = nil
secret_access_key = nil
endpoint = 's3-ap-northeast-1.amazonaws.com'
bucket = nil
object_key = nil
output_file = nil
opt = OptionParser.new
opt.on('-a', '--access-key-id=VAL') { |v| access_key_id = v }
opt.on('-s', '--secret-access-key=VAL') { |v| secret_access_key = v }
opt.on('-b', '--bucket=VAL') { |v| bucket = v }
opt.on('-k', '--object-key=VAL') { |v| object_key = v }
opt.on('-o', '--output-file=VAL', "Default:object-key basename") { |v| output_file = v }
opt.on('-e', '--endpoint=VAL', "Default:#{endpoint}") { |v| endpoint = v }
opt.parse!(ARGV)
output_file = File.basename(object_key) unless output_file
AWS.config(:access_key_id => access_key_id, :secret_access_key => secret_access_key) if access_key_id && secret_access_key
require 'logger'
s3 = AWS::S3.new(:s3_endpoint => endpoint,
:logger => Logger.new($stdout),
:log_level => :debug,
:proxy_uri => ENV['HTTPS_PROXY'] || ENV['https_proxy'] || ENV['HTTP_PROXY'] || ENV['http_proxy'])
bucket = s3.buckets[bucket]
object = bucket.objects[object_key]
while true
begin
File.open(output_file, 'w') do |file|
object.read do |chunk|
file.write chunk
end
end
puts Time.now.strftime("OK")
rescue => e
puts e.message
puts e.backtrace
end
puts Time.now.strftime("==== %Y/%m/%d %H:%M:%S =================")
STDOUT.flush
sleep 60 * 30
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment