← Cloudflare R2 / r2 / buckets
Životní cyklus objektů
Životní cyklus objektů určuje dobu uchování objektů nahraných do vašeho bucketu a umožňuje nastavit, kdy mají objekty přejít z úložiště Standard do úložiště Infrequent Access.
Lifecycle konfigurace je sada lifecycle pravidel, která definují akce použité na objekty během jejich životnosti.
Můžete si například vytvořit pravidlo životního cyklu objektu, které objekty po 90 dnech smaže, nebo nastavit pravidlo, které objekty po 30 dnech převede do úložiště Infrequent Access.
Chování
- Objekty jsou z bucketu obvykle odstraněny do 24 hodin od
x-amz-expirationhodnota. - Po použití konfigurace životního cyklu, která maže objekty, se u nově nahraných objektů
x-amz-expirationhodnota okamžitě odráží platnost na základě nových pravidel, u stávajících objektů však může dojít ke zpoždění. Většina objektů se přenese do 24 hodin, v závislosti na počtu objektů v bucketu to však může trvat déle. Během migrace objektů se mohou zobrazovat stará pravidla platná v předchozí konfiguraci. - Jakmile je objekt smazán, přestává se za něj účtovat.
- Buckety mají výchozí pravidlo životního cyklu, které ukončí platnost multipart uploadů sedm dní po jejich zahájení.
- Když je objekt přesunut z úložiště Standard do úložiště Infrequent Access, Operace třídy A se účtuje.
- Pokud si pravidla odporují a v rámci 24 hodin určují jak přechod třídy úložiště, tak vypršení platnosti, má přechod životního cyklu typu vypršení platnosti (nebo smazání) přednost před změnou třídy úložiště.
Nakonfigurujte pravidla životního cyklu pro svůj bucket
Když vytváříte pravidlo životního cyklu objektu, můžete určit, na který prefix se má vztahovat.
- Upozorňujeme, že životní cyklus objektů má v současnosti maximální limit 1000 pravidel.
- Správa životních cyklů objektů je akce na úrovni bucketu a vyžaduje token API s
Workers R2 Storage Writeskupinu oprávnění.
Dashboard
-
V dashboardu Cloudflare přejděte na Objektové úložiště R2 stránce.
Přejděte na Přehled ↗ -
V seznamu vyhledejte a vyberte svůj bucket.
-
Na stránce bucketu vyberte Nastavení.
-
V části Pravidla životního cyklu objektů, vyberte Přidání pravidla.
-
Vyplňte pole pro nové pravidlo.
-
Až budete hotovi, vyberte Uložit změny.
Wrangler
- Nainstalujte
npm↗. - Nainstalujte Wrangler, CLI nástroj vývojářské platformy.
- Přihlaste se do Wrangleru pomocí
wrangler loginpříkaz. - Pravidlo životního cyklu přidáte do bucketu spuštěním
r2 bucket lifecycle addpříkaz.
npx wrangler r2 bucket lifecycle add <BUCKET_NAME> [OPTIONS]Celou konfiguraci životního cyklu bucketu můžete alternativně nastavit ze souboru JSON pomocí r2 bucket lifecycle set příkaz.
npx wrangler r2 bucket lifecycle set <BUCKET_NAME> --file <FILE_PATH>Soubor JSON by měl mít formát těla požadavku put object lifecycle configuration API.
S3 API
Níže je uveden příklad konfigurace životního cyklu (souboru pravidel životního cyklu) s různými sadami pravidel pro různé možné případy použití.
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();Získání pravidel životního cyklu pro váš bucket
Wrangler
Chcete-li získat seznam pravidel životního cyklu přiřazených k vašemu bucketu, spusťte r2 bucket lifecycle list příkaz.
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(),
);Odstranění pravidel životního cyklu z bucketu
Dashboard
-
V dashboardu Cloudflare přejděte na Objektové úložiště R2 stránce.
Přejděte na Přehled ↗ -
V seznamu vyhledejte a vyberte svůj bucket.
-
Na stránce bucketu vyberte Nastavení.
-
V části Pravidla životního cyklu objektů, vyberte pravidla, která chcete odstranit.
-
Až budete hotovi, vyberte Odstranit pravidlo (pravidla).
Wrangler
Chcete-li z bucketu odstranit konkrétní pravidlo životního cyklu, spusťte r2 bucket lifecycle remove příkaz.
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();