Документация Запланировать пилот

Жизненный цикл объектов

Жизненный цикл объектов определяет срок хранения объектов, загруженных в ваш бакет, и позволяет задавать момент, когда объекты должны переходить из хранилища Standard в хранилище Infrequent Access.

Конфигурация жизненного цикла представляет собой набор правил жизненного цикла, которые определяют действия, применяемые к объектам в течение их существования.

Например, можно создать правило жизненного цикла объекта для удаления объектов через 90 дней или правило для перевода объектов в хранилище Infrequent Access через 30 дней.

Поведение

Настройка правил жизненного цикла для бакета

При создании правила жизненного цикла объекта можно указать префикс, к которому оно будет применяться.

Dashboard

  1. На панели управления Cloudflare перейдите к разделу Объектное хранилище R2 страницу.

    Перейдите в Обзор ↗
  2. Найдите свой бакет в списке и выберите его.

  3. На странице бакета выберите Настройки.

  4. В разделе Правила жизненного цикла объектов, выберите Добавление правила.

  5. Заполните поля для нового правила.

  6. Когда закончите, выберите Save changes.

Wrangler

  1. Установка npm ↗.
  2. Установка Wrangler, CLI платформы разработчика.
  3. Войдите в Wrangler с помощью wrangler login команда.
  4. Правило жизненного цикла добавьте в бакет, выполнив r2 bucket lifecycle add команда.
npx wrangler r2 bucket lifecycle add <BUCKET_NAME> [OPTIONS]

Также вы можете задать всю конфигурацию жизненного цикла бакета из файла JSON с помощью r2 bucket lifecycle set команда.

npx wrangler r2 bucket lifecycle set <BUCKET_NAME> --file <FILE_PATH>

JSON-файл должен соответствовать формату тела запроса put object lifecycle configuration API.

S3 API

Ниже приведён пример настройки конфигурации жизненного цикла (набора правил жизненного цикла) с разными наборами правил для разных сценариев использования.

Настройка клиента S3 для работы с R2
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();

Получение правил жизненного цикла для вашего бакета

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

Удалите правила жизненного цикла из бакета

Dashboard

  1. На панели управления Cloudflare перейдите к разделу Объектное хранилище R2 страницу.

    Перейдите в Обзор ↗
  2. Найдите свой бакет в списке и выберите его.

  3. На странице бакета выберите Настройки.

  4. В разделе Правила жизненного цикла объектов, выберите правила, которые нужно удалить.

  5. Когда закончите, выберите Удалить правило(-а).

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

Запросите бесплатный пилот

Запланировать пилот