跳转到内容
搜索文档

对象生命周期

最后更新 查看 MarkdownAgent 设置

对象生命周期决定上传到存储桶的对象的保留期,并允许指定对象何时从 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 令牌。

仪表板

  1. 在 Cloudflare 仪表板中,前往 R2 object storage(R2 对象存储) 页面。

    Go to Overview ↗
  2. 从列表中找到并选择您的存储桶。

  3. 在存储桶页面,选择 Settings(设置)。

  4. 在 Object Lifecycle Rules(对象生命周期规则) 下,选择 Add rule(添加规则)。

  5. 填写新规则的字段。

  6. 完成后,选择 Save changes(保存更改)。

Wrangler

  1. 安装 npm ↗。
  2. 安装 Wrangler(Developer Platform CLI)。
  3. 使用 wrangler login 命令登录 Wrangler。
  4. 运行 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 的请求体一致。

S3 API

以下是配置生命周期配置(生命周期规则集合)的示例,包含不同用例的不同规则集。

Configure the S3 client to interact with R2js
const client = new S3({
	endpoint: "https://<account_id>.r2.cloudflarestorage.com",
	credentials: {
		accessKeyId: "<access_key_id>",
		secretAccessKey: "<access_key_secret>",
	},
	region: "auto",
});
Set the lifecycle configuration for a bucketjavascript
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();

获取存储桶的生命周期规则

Wrangler

要获取与存储桶关联的生命周期规则列表,运行 r2 bucket lifecycle list 命令。

npx wrangler r2 bucket lifecycle list <BUCKET_NAME>

S3 API

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(),
);

从存储桶删除生命周期规则

仪表板

  1. 在 Cloudflare 仪表板中,前往 R2 object storage(R2 对象存储) 页面。

    Go to Overview ↗
  2. 从列表中找到并选择您的存储桶。

  3. 在存储桶页面,选择 Settings(设置)。

  4. 在 Object lifecycle rules(对象生命周期规则) 下,选择要删除的规则。

  5. 完成后,选择 Delete rule(s)(删除规则)。

Wrangler

要从存储桶移除特定生命周期规则,运行 r2 bucket lifecycle remove 命令。

npx wrangler r2 bucket lifecycle remove <BUCKET_NAME> --id <RULE_ID>

S3 API

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();

这篇文档对您有帮助吗?