INTEGRITY Документация

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

Жизненный цикл объектов определяет срок хранения объектов, загруженных в ваш бакет, и позволяет задавать момент, когда объекты должны переходить из хранилища 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();