Ruby Weekly is a weekly newsletter covering the latest Ruby and Rails news.

Simple File Upload to Amazon S3 From Ruby

By Peter Cooper / November 30, 2006

There's more about Amazon S3 and Marcel Molina's hot new library coming as the first day of the Ruby Advent Calendar (this Friday!), so I don't want to say too much about it yet. For anyone already enjoying this library, however, I put together a scrappy program that lets me copy files up to S3 from the command line easily:

#!/usr/bin/env ruby

require 'rubygems'
require 'aws/s3'

local_file = ARGV[0]
bucket = ARGV[1]
mime_type = ARGV[2] || "application/octet-stream"

AWS::S3::Base.establish_connection!(
  :access_key_id     => 'REPLACE_ME',
  :secret_access_key => 'REPLACE_ME'
)

base_name = File.basename(local_file)

puts "Uploading #{local_file} as '#{base_name}' to '#{bucket}'"

AWS::S3::S3Object.store(
  base_name,
  File.open(local_file),
  bucket,
  :content_type => mime_type
)

puts "Uploaded!"

Just name it s3cp (or similar), chmod it, and then you can do stuff like:

s3cp ~/somefile.whatever bucket

Comments

  1. Martijn says:

    S3 tools are definitely getting more interesting. This one is nice and simple.
    I'm still hoping for one that's compatible with Jungle Disk's encryption.

Other Posts to Enjoy

Twitter Mentions