メニュー
AWS SDK for Ruby
開発者ガイド

バケットのライフサイクルルール設定テンプレートの作成

オブジェクトが相当な数あり (または作成する予定があり)、それらを長期ストレージに移動するか削除するタイミングを特定したいと思う場合、ライフサイクルルールのテンプレートを作成し、そのテンプレートをすべてのバケットに適用することで時間を大幅に節約できます。

手順は以下のとおりです。

  1. 既存のバケットのライフサイクル設定を手動で変更します。

  2. ルールを保存します。

  3. 他のバケットにルールを適用します。

次のルールで開始します。

そのルールの JSON 形式を生成するため次のコードを実行します。default.json という名前で出力をファイルに保存します。

require 'aws-sdk' s3 = Aws::S3::Client.new(region: 'us-west-2') resp = s3.get_bucket_lifecycle_configuration(bucket: 'default') resp.rules.each do |rule| rule.to_hash.to_json end

出力は次のようになります。

[{"expiration":{"date":null,"days":425},"id":"default","prefix":"","status":"Enabled","transitions":[{"date":null,"days":30,"storage_class":"STANDARD_IA"},{"date":null,"days":60,"storage_class":"GLACIER"}],"noncurrent_version_transitions":[],"noncurrent_version_expiration":null}]

ライフサイクルルールの JSON があるので、次の例を使用して他のバケットにも適用できます。default.json のルールがバケット other_bucket に適用されます。

require 'aws-sdk' require 'json' class Aws::S3::Types::LifecycleExpiration def to_map map = Hash.new self.members.each { |m| map[m] = self[m] } map end def to_json(*a) to_map.to_json(*a) end end class Aws::S3::Types::Transition def to_map map = Hash.new self.members.each { |m| map[m] = self[m] } map end def to_json(*a) to_map.to_json(*a) end end class Aws::S3::Types::LifecycleRule def to_map map = Hash.new self.members.each { |m| map[m] = self[m] } map end def to_json(*a) to_map.to_json(*a) end end # Pull in contents as a string value = File.open('default.json', "rb").read json_data = JSON.parse(value, opts={symbolize_names: true}) s3 = Aws::S3::Client.new(region: 'us-west-2') s3.put_bucket_lifecycle_configuration(:bucket => 'other_bucket', :lifecycle_configuration => {:rules => json_data})