对象生命周期决定上传到存储桶的对象的保留期,并允许指定对象何时从 Standard 存储过渡到 Infrequent Access 存储。
生命周期配置是生命周期规则集合,定义对象在其生命周期内应应用的操作。
例如,您可以创建对象生命周期规则,在 90 天后删除对象,或设置规则在 30 天后将对象过渡到 Infrequent Access 存储。
- 对象通常在
x-amz-expiration值后的 24 小时内从存储桶中移除。 - 应用删除对象的生命周期配置时,新上传对象的
x-amz-expiration值会立即反映基于新规则的过期时间,但现有对象可能有延迟。大多数对象会在 24 小时内过渡,但取决于存储桶中的对象数量可能需要更长时间。对象迁移期间,您可能看到先前配置的旧规则。 - 对象删除后不再计费。
- 存储桶有默认生命周期规则,在发起后 7 天过期分片上传。
- 对象从 Standard 存储过渡到 Infrequent Access 存储时,会产生 Class A 操作费用。
- 当规则冲突且在同一 24 小时内同时指定存储类别过渡和过期(删除)过渡时,过期(删除)生命周期过渡优先于存储类别过渡。
创建对象生命周期规则时,可以指定其适用的前缀。
- 注意对象生命周期目前最多 1000 条规则。
- 管理对象生命周期是存储桶级操作,需要具有
Workers R2 Storage Write权限组的 API 令牌。
-
在 Cloudflare 仪表板中,前往 R2 object storage(R2 对象存储) 页面。
Go to Overview ↗ -
从列表中找到并选择您的存储桶。
-
在存储桶页面,选择 Settings(设置)。
-
在 Object Lifecycle Rules(对象生命周期规则) 下,选择 Add rule(添加规则)。
-
填写新规则的字段。
-
完成后,选择 Save changes(保存更改)。
- 安装
npm↗。 - 安装 Wrangler(Developer Platform CLI)。
- 使用
wrangler login命令登录 Wrangler。 - 运行
r2 bucket lifecycle add命令为存储桶添加生命周期规则。
npx wrangler r2 bucket lifecycle add <BUCKET_NAME> [OPTIONS]或者,可使用 r2 bucket lifecycle set 命令从 JSON 文件设置存储桶的完整生命周期配置。
npx wrangler r2 bucket lifecycle set <BUCKET_NAME> --file <FILE_PATH>JSON 文件格式应与 put object lifecycle configuration API 的请求体一致。
以下是配置生命周期配置(生命周期规则集合)的示例,包含不同用例的不同规则集。
const client = new S3({
endpoint: "https://<account_id>.r2.cloudflarestorage.com",
credentials: {
accessKeyId: "<access_key_id>",
secretAccessKey: "<access_key_secret>",
},
region: "auto",
});await client
.putBucketLifecycleConfiguration({
Bucket: "testBucket",
LifecycleConfiguration: {
Rules: [
// Example: deleting objects on a specific date
// Delete 2019 documents in 2024
{
ID: "Delete 2019 Documents",
Status: "Enabled",
Filter: {
Prefix: "2019/",
},
Expiration: {
Date: new Date("2024-01-01"),
},
},
// Example: transitioning objects to Infrequent Access storage by age
// Transition objects older than 30 days to Infrequent Access storage
{
ID: "Transition Objects To Infrequent Access",
Status: "Enabled",
Transitions: [
{
Days: 30,
StorageClass: "STANDARD_IA",
},
],
},
// Example: deleting objects by age
// Delete logs older than 90 days
{
ID: "Delete Old Logs",
Status: "Enabled",
Filter: {
Prefix: "logs/",
},
Expiration: {
Days: 90,
},
},
// Example: abort all incomplete multipart uploads after a week
{
ID: "Abort Incomplete Multipart Uploads",
Status: "Enabled",
AbortIncompleteMultipartUpload: {
DaysAfterInitiation: 7,
},
},
// Example: abort user multipart uploads after a day
{
ID: "Abort User Incomplete Multipart Uploads",
Status: "Enabled",
Filter: {
Prefix: "useruploads/",
},
AbortIncompleteMultipartUpload: {
// For uploads matching the prefix, this rule will take precedence
// over the one above due to its earlier expiration.
DaysAfterInitiation: 1,
},
},
],
},
})
.promise();要获取与存储桶关联的生命周期规则列表,运行 r2 bucket lifecycle list 命令。
npx wrangler r2 bucket lifecycle list <BUCKET_NAME>import S3 from "aws-sdk/clients/s3.js";
// Configure the S3 client to talk to R2.
const client = new S3({
endpoint: "https://<account_id>.r2.cloudflarestorage.com",
credentials: {
accessKeyId: "<access_key_id>",
secretAccessKey: "<access_key_secret>",
},
region: "auto",
});
// Get lifecycle configuration for bucket
console.log(
await client
.getBucketLifecycleConfiguration({
Bucket: "bucketName",
})
.promise(),
);-
在 Cloudflare 仪表板中,前往 R2 object storage(R2 对象存储) 页面。
Go to Overview ↗ -
从列表中找到并选择您的存储桶。
-
在存储桶页面,选择 Settings(设置)。
-
在 Object lifecycle rules(对象生命周期规则) 下,选择要删除的规则。
-
完成后,选择 Delete rule(s)(删除规则)。
要从存储桶移除特定生命周期规则,运行 r2 bucket lifecycle remove 命令。
npx wrangler r2 bucket lifecycle remove <BUCKET_NAME> --id <RULE_ID>import S3 from "aws-sdk/clients/s3.js";
// Configure the S3 client to talk to R2.
const client = new S3({
endpoint: "https://<account_id>.r2.cloudflarestorage.com",
credentials: {
accessKeyId: "<access_key_id>",
secretAccessKey: "<access_key_secret>",
},
region: "auto",
});
// Delete lifecycle configuration for bucket
await client
.deleteBucketLifecycle({
Bucket: "bucketName",
})
.promise();