创建 Amazon S3 存储桶的生命周期规则配置模板 - 适用于 Ruby 的 Amazon 开发工具包
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建 Amazon S3 存储桶的生命周期规则配置模板

如果您拥有(或计划创建)许多对象,并且希望指定何时将它们移动到长期存储中或删除它们,您可以通过创建生命周期规则模板并将该模板应用于您的所有 Amazon S3 存储桶来节省大量时间。

此过程包括以下步骤:

  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})
注意

最佳实践

我们建议您启用AbortIncompleteMultipartUploadAmazon S3 存储桶的生命周期规则。

该规则指示 Amazon S3 中止在启动后没有在指定天数内完成的分段上传。当超过设置的时间限制时,Amazon S3 将中止上传,然后删除未完成的上传数据。

有关更多信息,请参阅 。使用版本控制的存储桶的生命周期配置《Amazon Simple Storage Service 开发人员指南》中的。