2014/02/21

S3の特定バケットに含まれる全てのオブジェクトのMetaDataを書き換える

昨日と同じく、会社Blogに書く程じゃないネタ。

S3の特定のバケットに含まれる全てのオブジェクトに対しMetaDataを書き換えたいときってありますよね。それをAWS SDK for Rubyを使ってやります。

---
#!/usr/bin/ruby

require 'rubygems'
require 'aws-sdk'

s3 = AWS::S3.new
bucket = s3.buckets[ARGV[0]]

bucket.objects.each do |obj|
  obj.copy_from(obj, {:cache_control => "no-cache, no-store"})
end
 ---

これをs3chmod.rbみたいな名前にして
$ s3chmod.rb BUCKETNAME 
というように実行すると、そのバケットに含まれる全てのオブジェクトのMetaDataが書き変わる。
この例では「{:cache_control => "no-cache, no-store"}」にしてるけど、ここで使えるオプションはClass: AWS::S3::S3Object — AWS SDK For Rubyに書いてます。

以上!