如何创建一个 S3 生命周期策略,将所有内容移动到智能分层,并在 window 的 X 天内维护单个先前版本
How do I create an S3 lifecycle policy that moves everything to intelligent tiering and maintains a single previous version for a window of X days
我正在尝试找出我的用例所需的确切 S3 存储桶生命周期规则。我想我做对了,但我的测试没有定论——从 AWS 的文档来看,在应用规则 should 和实际应用规则之间似乎存在不确定的滞后。他们所保证的只是计费将反映定义的规则。我还发现他们的文档和 S3 中的措辞 UI 令人困惑和模棱两可。
我想要的配置是这样的:
- 尽快将所有文件和版本放入智能分层
- 除了当前版本,还保留一个以前的版本
- ...但在 90 天后删除之前的版本
我通过 ruby SDK 设置策略如下:
s3.put_bucket_lifecycle_configuration(
bucket: 'my-awesome-bucket',
lifecycle_configuration: {
rules: [
{
id: 'my-awesome-policy',
prefix: '',
status: 'Enabled',
transitions: [
{
storage_class: 'INTELLIGENT_TIERING',
days: 0
}
],
noncurrent_version_transitions: [
{
storage_class: 'INTELLIGENT_TIERING',
noncurrent_days: 0
}
],
noncurrent_version_expiration: {
noncurrent_days: 90
}
}
]
}
)
这是正确的吗?我知道那里有类似的问题,但近年来这里的选项发生了微妙的变化,我想绝对确定我做对了。
在设计 s3 生命周期策略时,请记住以下几点:
- 从 S3 Standard 或 S3 Standard-IA 过渡到 S3 Standard-IA 或 S3 One Zone-IA
的最短天数
这意味着在您可以移动任何对象之前,您必须将它们在 S3 标准存储中至少存储 30 天 class。
- 0 天规则并不像您想象的那样尽快。
此规则意味着对象有资格在创建后 和 最短存储时间(参见上一点)后的午夜 UTC 进行转换。
- S3 生命周期配置支持保留任何对象的 1 到 100 个版本。
一个versioning-enabled 存储桶每个对象有一个当前版本和零个或多个非当前版本。所以,在你的情况下,你会使用这样的东西:
<LifecycleConfiguration>
<Rule>
...
<NoncurrentVersionExpiration>
<NewerNoncurrentVersions>1</NewerNoncurrentVersions>
<NoncurrentDays>90</NoncurrentDays>
</NoncurrentVersionExpiration>
</Rule>
</LifecycleConfiguration>
希望这可以帮助您了解 s3 生命周期策略规则并验证您的规则,同时考虑约束。
我正在尝试找出我的用例所需的确切 S3 存储桶生命周期规则。我想我做对了,但我的测试没有定论——从 AWS 的文档来看,在应用规则 should 和实际应用规则之间似乎存在不确定的滞后。他们所保证的只是计费将反映定义的规则。我还发现他们的文档和 S3 中的措辞 UI 令人困惑和模棱两可。
我想要的配置是这样的:
- 尽快将所有文件和版本放入智能分层
- 除了当前版本,还保留一个以前的版本
- ...但在 90 天后删除之前的版本
我通过 ruby SDK 设置策略如下:
s3.put_bucket_lifecycle_configuration(
bucket: 'my-awesome-bucket',
lifecycle_configuration: {
rules: [
{
id: 'my-awesome-policy',
prefix: '',
status: 'Enabled',
transitions: [
{
storage_class: 'INTELLIGENT_TIERING',
days: 0
}
],
noncurrent_version_transitions: [
{
storage_class: 'INTELLIGENT_TIERING',
noncurrent_days: 0
}
],
noncurrent_version_expiration: {
noncurrent_days: 90
}
}
]
}
)
这是正确的吗?我知道那里有类似的问题,但近年来这里的选项发生了微妙的变化,我想绝对确定我做对了。
在设计 s3 生命周期策略时,请记住以下几点:
- 从 S3 Standard 或 S3 Standard-IA 过渡到 S3 Standard-IA 或 S3 One Zone-IA 的最短天数
这意味着在您可以移动任何对象之前,您必须将它们在 S3 标准存储中至少存储 30 天 class。
- 0 天规则并不像您想象的那样尽快。
此规则意味着对象有资格在创建后 和 最短存储时间(参见上一点)后的午夜 UTC 进行转换。
- S3 生命周期配置支持保留任何对象的 1 到 100 个版本。
一个versioning-enabled 存储桶每个对象有一个当前版本和零个或多个非当前版本。所以,在你的情况下,你会使用这样的东西:
<LifecycleConfiguration>
<Rule>
...
<NoncurrentVersionExpiration>
<NewerNoncurrentVersions>1</NewerNoncurrentVersions>
<NoncurrentDays>90</NoncurrentDays>
</NoncurrentVersionExpiration>
</Rule>
</LifecycleConfiguration>
希望这可以帮助您了解 s3 生命周期策略规则并验证您的规则,同时考虑约束。