ローカルファイルをAmazon S3に置いてどこからでもアクセスできるURLを取る方法

タイトルそのまま。local_pathで指定したファイルをfilenameと名づけてAmazon S3に置く。 ポイントは

  • リージョンを設定しておく(Tokyoがオススメ)
  • write時にacl: :public_readをつける

くらいかな。

# s3upload.rb
require 'aws-sdk-v1'

# Tokyo region
REGION = 'ap-northeast-1'

# Bucket Name
BUCKET_NAME = 'your-bucket-name'

def uploads3 local_path, filename
   s3 = AWS::S3.new(
      region: REGION,
      access_key_id: ENV['ACCESS_KEY_ID'],
      secret_access_key: ENV['SECRET_ACCESS_KEY'],
   )
   bucket = s3.buckets[BUCKET_NAME]
   obj = bucket.objects[filename]
   obj.write file: local_path, acl: :public_read
   obj.public_url(secure: false).to_s
end