Optimalizace nákladů automatickou správou životního cyklu dat

Datové sady mají jedinečné životní cyklus. V rané fázi životního cyklu uživatelé často přistupují k některým datům. Ale potřeba přístupu často výrazně klesá, protože data stárnou. Některá data zůstávají v cloudu nečinná a po uložení se zřídka přistupuje. Některé datové sady vyprší dny nebo měsíce po vytvoření, zatímco jiné datové sady se během jejich životnosti aktivně čtou a mění. Správa životního cyklu služby Azure Storage nabízí zásady založené na pravidlech, které můžete použít k převodu dat objektů blob na odpovídající úrovně přístupu nebo vypršení platnosti dat na konci životního cyklu dat.

Pomocí zásad správy životního cyklu můžete:

  • Pokud chcete optimalizovat výkon, převést objekty blob z studené na horkou okamžitě.
  • Převést aktuální verze objektu blob, předchozí verze objektu blob nebo snímky objektů blob na chladnější úroveň úložiště, pokud k těmto objektům nebyli po určité časové období přístup nebo změny, abyste optimalizovali náklady. V tomto scénáři můžou zásady správy životního cyklu přesouvat objekty z horké na studenou, z horkého do archivu nebo ze studeného do archivu.
  • Odstraňte aktuální verze objektu blob, předchozí verze objektu blob nebo snímky objektů blob na konci jejich životního cyklu.
  • Definujte pravidla, která se mají spouštět jednou denně na úrovni účtu úložiště.
  • Použijte pravidla pro kontejnery nebo podmnožinu objektů blob pomocí předpon názvů nebo značek indexu objektů blob jako filtrů.

Představte si scénář, kdy se k datům často přistupuje během počátečních fází životního cyklu, ale jen občas po dvou týdnech. Za první měsíc se k datové sadě přistupuje zřídka. V tomto scénáři je horké úložiště nejlepší během počátečních fází. Studené úložiště je nejvhodnější pro občasný přístup. Archivní úložiště je nejlepší možnost vrstvy po stáří dat za měsíc. Přesunutím dat na příslušnou úroveň úložiště na základě jejího věku pomocí pravidel zásad správy životního cyklu můžete navrhnout nejlevnější řešení pro vaše potřeby.

Zásady správy životního cyklu se podporují pro objekty blob bloku a doplňovací objekty blob v účtech pro obecné účely verze 2, objekty blob bloku Úrovně Premium a Blob Storage. Správa životního cyklu nemá vliv na systémové kontejnery, jako jsou kontejnery $logs nebo $web kontejnery.

Důležité

Pokud je potřeba datovou sadu číst, nenastavujte zásadu pro přesun objektů blob do archivní vrstvy. Objekty blob v archivní úrovni nelze číst, pokud nejsou poprvé dosazovány, což může být časově náročné a nákladné. Další informace najdete v tématu Přehled dosazování objektů blob z archivní vrstvy.

Definice zásad správy životního cyklu

Zásady správy životního cyklu jsou kolekce pravidel v dokumentu JSON. Následující ukázkový json ukazuje úplnou definici pravidla:

{
  "rules": [
    {
      "name": "rule1",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {...}
    },
    {
      "name": "rule2",
      "type": "Lifecycle",
      "definition": {...}
    }
  ]
}

Zásada je kolekce pravidel, jak je popsáno v následující tabulce:

Název parametru Typ parametru Poznámky
rules Pole objektů pravidel V zásadě se vyžaduje aspoň jedno pravidlo. V zásadě můžete definovat až 100 pravidel.

Každé pravidlo v rámci zásad má několik parametrů popsaných v následující tabulce:

Název parametru Typ parametru Poznámky Vyžadováno
name Řetězec Název pravidla může obsahovat až 256 alfanumerických znaků. V názvu pravidla se rozlišují malá a velká písmena. Musí být v rámci zásad jedinečný. Ano
enabled Logická hodnota Volitelná logická hodnota, která umožňuje dočasné zakázání pravidla. Výchozí hodnota je true, pokud není nastavená. Ne
type Hodnota výčtu Aktuální platný typ je Lifecycle. Ano
definition Objekt, který definuje pravidlo životního cyklu Každá definice se skládá ze sady filtrů a sady akcí. Ano

Definice pravidla správy životního cyklu

Každá definice pravidla v rámci zásad zahrnuje sadu filtrů a sadu akcí. Sada filtrů omezuje akce pravidel na určitou sadu objektů v rámci názvů kontejnerů nebo objektů. Sada akcí použije úroveň nebo akce odstranění na filtrovanou sadu objektů.

Ukázkové pravidlo

Následující ukázkové pravidlo vyfiltruje účet tak, aby spouštěl akce u objektů, které existují uvnitř sample-container a začínají blob1.

  • Objekt blob vrstvy na studenou vrstvu 30 dní po poslední úpravě
  • Objekt blob vrstvy na archivní vrstvu 90 dnů po poslední úpravě
  • Odstranění objektu blob 2 555 dnů (sedm let) po poslední úpravě
  • Odstranění předchozích verzí 90 dnů po vytvoření
{
  "rules": [
    {
      "enabled": true,
      "name": "sample-rule",
      "type": "Lifecycle",
      "definition": {
        "actions": {
          "version": {
            "delete": {
              "daysAfterCreationGreaterThan": 90
            }
          },
          "baseBlob": {
            "tierToCool": {
              "daysAfterModificationGreaterThan": 30
            },
            "tierToArchive": {
              "daysAfterModificationGreaterThan": 90,
              "daysAfterLastTierChangeGreaterThan": 7
            },
            "delete": {
              "daysAfterModificationGreaterThan": 2555
            }
          }
        },
        "filters": {
          "blobTypes": [
            "blockBlob"
          ],
          "prefixMatch": [
            "sample-container/blob1"
          ]
        }
      }
    }
  ]
}

Poznámka

Element baseBlob v zásadách správy životního cyklu odkazuje na aktuální verzi objektu blob. Element verze odkazuje na předchozí verzi.

Filtry pravidel

Filtry omezují akce pravidel na podmnožinu objektů blob v rámci účtu úložiště. Pokud je definováno více než jeden filtr, spustí se logický AND filtr ve všech filtrech.

Filtry zahrnují:

Název filtru Typ filtru Poznámky Vyžaduje se
blobTypes Pole předdefinovaných hodnot výčtu. Aktuální verze podporuje blockBlob a appendBlob. Podporuje se appendBlobjenom odstranění , úroveň set se nepodporuje. Ano
prefixMatch Pole řetězců pro předpony, které se mají shodovat. Každé pravidlo může definovat až 10 předpon rozlišující malá a velká písmena. Řetězec předpony musí začínat názvem kontejneru. Pokud chcete například shodovat všechny objekty https://myaccount.blob.core.windows.net/sample-container/blob1/... blob pro pravidlo, je sample-container/blob1předponaMatch . Pokud předponuMatch nedefinujete, pravidlo se vztahuje na všechny objekty blob v rámci účtu úložiště. Ne
blobIndexMatch Pole hodnot slovníku skládající se z podmínek klíče značky a hodnoty indexu objektů blob, které se mají shodovat. Každé pravidlo může definovat až 10 podmínek značky indexu objektů blob. Pokud chcete například shodovat všechny objekty blob s Project = Contoso pod https://myaccount.blob.core.windows.net/ pravidlem, je {"name": "Project","op": "==","value": "Contoso"}objekt blobIndexMatch . Pokud nedefinujete objekt blobIndexMatch, pravidlo se vztahuje na všechny objekty blob v rámci účtu úložiště. Ne

Další informace o funkci indexu objektů blob společně se známými problémy a omezeními najdete v tématu Správa a vyhledání dat v Azure Blob Storage s indexem objektů blob.

Akce pravidel

Akce se použijí u filtrovaných objektů blob při splnění podmínky spuštění.

Správa životního cyklu podporuje vrstvení a odstranění aktuálních verzí, předchozích verzí a snímků objektů blob. Definujte alespoň jednu akci pro každé pravidlo.

Akce Aktuální verze Snímek Předchozí verze
tierToCool Podporováno pro blockBlob Podporováno Podporováno
enableAutoTierToHotFromCool Podporováno pro blockBlob Nepodporováno Nepodporováno
tierToArchive Podporováno pro blockBlob Podporováno Podporováno
odstranit1 Podporováno pro blockBlob a appendBlob Podporováno Podporováno

1 Když se použije na účet s povoleným hierarchickým oborem názvů, akce odstranění odebere prázdné adresáře. Pokud adresář není prázdný, akce odstranění odebere objekty, které splňují podmínky zásad během prvního 24hodinového cyklu. Pokud má tato akce za následek prázdný adresář, který také splňuje podmínky zásad, odebere se tento adresář během dalšího 24hodinového cyklu atd.

Poznámka

Pokud definujete více než jednu akci u stejného objektu blob, správa životního cyklu použije u objektu blob nejméně nákladnou akci. Například akce delete je levnější než akce tierToArchive. Akce tierToArchive je levnější než akce tierToCool.

Podmínky spuštění jsou založeny na věku. Aktuální verze používají čas poslední změny nebo čas posledního přístupu, předchozí verze používají čas vytvoření verze a snímky objektů blob používají čas vytvoření snímku ke sledování věku.

Podmínka spuštění akce Hodnota podmínky Description
daysAfterModificationGreaterThan Celočíselná hodnota označující věk ve dnech Podmínka pro akce u aktuální verze objektu blob
daysAfterCreationGreaterThan Celočíselná hodnota označující věk ve dnech Podmínka pro akce u předchozí verze objektu blob nebo snímku objektu blob
daysAfterLastAccessTimeGreaterThan Celočíselná hodnota označující věk ve dnech Podmínka pro aktuální verzi objektu blob při povolení sledování přístupu
daysAfterLastTierChangeGreaterThan Celočíselná hodnota označující věk ve dnech po změně poslední vrstvy objektu blob Tato podmínka se vztahuje pouze na tierToArchive akce a lze ji použít pouze s podmínkou daysAfterModificationGreaterThan .

Příklady zásad životního cyklu

Následující příklady ukazují, jak řešit běžné scénáře s pravidly zásad životního cyklu.

Přesun dat o stárnutí na studenou úroveň

Tento příklad ukazuje, jak převést objekty blob bloku s předponou sample-container/blob1 nebo container2/blob2. Zásady přecházejí objekty blob, které nebyly změněny během více než 30 dnů na studené úložiště, a objekty blob se během 90 dnů nezmění na archivní úroveň:

{
  "rules": [
    {
      "name": "agingRule",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {
        "filters": {
          "blobTypes": [ "blockBlob" ],
          "prefixMatch": [ "sample-container/blob1", "container2/blob2" ]
        },
        "actions": {
          "baseBlob": {
            "tierToCool": { "daysAfterModificationGreaterThan": 30 },
            "tierToArchive": { "daysAfterModificationGreaterThan": 90 }
          }
        }
      }
    }
  ]
}

Přesun dat na základě času posledního přístupu

Sledování času posledního přístupu můžete povolit, abyste si zachovali záznam o tom, kdy se objekt blob naposledy čte nebo zapisuje, a jako filtr pro správu vrstvení a uchovávání dat objektů blob. Informace o povolení sledování času posledního přístupu najdete v tématu Volitelné povolení sledování času přístupu.

Když je povolené sledování času posledního přístupu, při čtení nebo zápisu objektu blob se volá LastAccessTime vlastnost objektu blob. Operace Získání objektu blob se považuje za přístupovou operaci. Získání vlastností objektů blob, získání metadat objektů blob a získání značek objektů blob nejsou operacemi přístupu, a proto neaktualizují čas posledního přístupu.

Pokud chcete minimalizovat vliv na latenci přístupu pro čtení, aktualizuje se čas posledního přístupu jenom první čtení za posledních 24 hodin. Následné čtení ve stejném 24hodinovém období neaktualizují čas posledního přístupu. Pokud se objekt blob změní mezi čteními, čas posledního přístupu je novější ze dvou hodnot.

V následujícím příkladu se objekty blob přesunou do studeného úložiště, pokud k nim nedošlo po dobu 30 dnů. Vlastnost enableAutoTierToHotFromCool je logická hodnota, která označuje, jestli má být objekt blob automaticky vrstvený z studené zpět na horkou, pokud je znovu přístupný po vrstvení na studenou.

{
  "enabled": true,
  "name": "last-accessed-thirty-days-ago",
  "type": "Lifecycle",
  "definition": {
    "actions": {
      "baseBlob": {
        "enableAutoTierToHotFromCool": true,
        "tierToCool": {
          "daysAfterLastAccessTimeGreaterThan": 30
        }
      }
    },
    "filters": {
      "blobTypes": [
        "blockBlob"
      ],
      "prefixMatch": [
        "mylifecyclecontainer/log"
      ]
    }
  }
}

Archivace dat po ingestování

Některá data zůstávají v cloudu nečinná a přístup k nim je zřídka, pokud někdy. Následující zásady životního cyklu se konfigurují tak, aby archivovaly data krátce po ingestování. Tento příklad převede objekty blob bloku v kontejneru pojmenovaném archivecontainer na archivní vrstvu. Přechod se provádí provedením 0 dnů po poslední změně objektu blob.

{
  "rules": [
    {
      "name": "archiveRule",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {
        "filters": {
          "blobTypes": [ "blockBlob" ],
          "prefixMatch": [ "archivecontainer" ]
        },
        "actions": {
          "baseBlob": {
              "tierToArchive": { 
                "daysAfterModificationGreaterThan": 0
              }
          }
        }
      }
    }
  ]
}

Poznámka

Microsoft doporučuje nahrát objekty blob přímo do archivní úrovně, aby byla vyšší efektivita. Archivní úroveň můžete zadat v hlavičce x-ms-access-tier v operaci Put Blob nebo Put Block List . Hlavička x-ms-access-tier je podporována s klienty REST verze 2018-11-09 a novějšími nebo nejnovějšími klientskými knihovnami úložiště objektů blob.

Vypršení platnosti dat na základě věku

U některých dat se očekává vypršení platnosti dnů nebo měsíců po vytvoření. Zásady správy životního cyklu můžete nakonfigurovat tak, aby vypršela platnost dat odstraněním na základě věku dat. Následující příklad ukazuje zásadu, která odstraní všechny objekty blob bloku, které nebyly změněny za posledních 365 dnů.

{
  "rules": [
    {
      "name": "expirationRule",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {
        "filters": {
          "blobTypes": [ "blockBlob" ]
        },
        "actions": {
          "baseBlob": {
            "delete": { "daysAfterModificationGreaterThan": 365 }
          }
        }
      }
    }
  ]
}

Odstranění dat pomocí značek indexu objektů blob

Platnost některých dat by měla vypršena pouze v případě, že je explicitně označená k odstranění. Zásady správy životního cyklu můžete nakonfigurovat tak, aby vypršela platnost dat, která jsou označená atributy klíč/hodnota indexu objektů blob. Následující příklad ukazuje zásadu, která odstraní všechny objekty blob bloku označené Project = Contoso. Další informace o indexu objektů blob najdete v tématu Správa a hledání dat v Azure Blob Storage pomocí indexu objektů blob.

{
    "rules": [
        {
            "enabled": true,
            "name": "DeleteContosoData",
            "type": "Lifecycle",
            "definition": {
                "actions": {
                    "baseBlob": {
                        "delete": {
                            "daysAfterModificationGreaterThan": 0
                        }
                    }
                },
                "filters": {
                    "blobIndexMatch": [
                        {
                            "name": "Project",
                            "op": "==",
                            "value": "Contoso"
                        }
                    ],
                    "blobTypes": [
                        "blockBlob"
                    ]
                }
            }
        }
    ]
}

Správa předchozích verzí

U dat, která se upravují a přistupují pravidelně po celou dobu životnosti, můžete povolit správu verzí úložiště objektů blob, aby se automaticky zachovaly předchozí verze objektu. Můžete vytvořit zásadu pro vrstvení nebo odstranění předchozích verzí. Věk verzí je určen vyhodnocením času vytvoření verze. Toto pravidlo zásad přesune předchozí verze v kontejneru activedata , které jsou po vytvoření verze 90 dnů nebo starší, na studenou úroveň a odstraní předchozí verze, které jsou 365 dnů nebo starší.

{
  "rules": [
    {
      "enabled": true,
      "name": "versionrule",
      "type": "Lifecycle",
      "definition": {
        "actions": {
          "version": {
            "tierToCool": {
              "daysAfterCreationGreaterThan": 90
            },
            "delete": {
              "daysAfterCreationGreaterThan": 365
            }
          }
        },
        "filters": {
          "blobTypes": [
            "blockBlob"
          ],
          "prefixMatch": [
            "activedata"
          ]
        }
      }
    }
  ]
}

Podpora funkcí

Podpora této funkce může být ovlivněna povolením protokolu Data Lake Storage Gen2, systému souborů NFS (Network File System) 3.0 nebo protokolu SSH File Transfer Protocol (SFTP).

Pokud jste některou z těchto funkcí povolili, podívejte se na podporu funkcí služby Blob Storage v účtech Azure Storage a vyhodnoťte podporu této funkce.

Regionální dostupnost a ceny

Funkce správy životního cyklu je dostupná ve všech oblastech Azure.

Zásady správy životního cyklu jsou bezplatné. Zákazníci se účtují za standardní provozní náklady pro volání rozhraní API pro sadu objektů blob . Operace odstranění jsou bezplatné. Jiné služby a nástroje Azure, jako je Microsoft Defender for Storage, se ale můžou účtovat poplatky za operace spravované prostřednictvím zásad životního cyklu.

Každá aktualizace času posledního přístupu objektu blob se účtuje v rámci jiné kategorie operací .

Další informace o cenách najdete v tématu Ceny objektů blob bloku.

Časté otázky

Vytvořil jsem novou zásadu. Proč se akce nespustí okamžitě?

Platforma spouští zásady životního cyklu jednou denně. Jakmile nakonfigurujete zásadu, může to trvat až 24 hodin, než se některé akce spustí poprvé.

Pokud aktualizujem existující zásadu, jak dlouho bude trvat, než se akce spustí?

Platnost aktualizované zásady trvá až 24 hodin. Jakmile se zásada projeví, může trvat až 24 hodin, než se akce spustí. Akce zásad proto mohou trvat až 48 hodin. Pokud je aktualizace zakázána nebo odstraněna pravidla a povoleníAutoTierToHotFromCool se použilo, automatické vrstvení na horkou úroveň bude stále probíhat. Nastavte například pravidlo, včetně enableAutoTierToHotFromCool na základě posledního přístupu. Pokud je pravidlo zakázané nebo odstraněné a objekt blob je aktuálně v pohodě a pak se k němu přistupuje, přesune se zpět na horkou, protože se použije pro přístup mimo správu životního cyklu. Objekt blob se pak nepřesune z horké na studenou, protože pravidlo správy životního cyklu je zakázané nebo odstraněné. Jediným způsobem, jak zabránit automatickému sledování času přístupu pomocí funkce AutoTierToHotFromCool, je vypnout sledování času posledního přístupu.

Dosazoval jsem archivovaný objekt blob. Návody zabránit jeho dočasnému přesunu do archivní úrovně?

Pokud se pro účet úložiště projeví zásady správy životního cyklu, pak opětovné dosazování objektu blob změnou úrovně může vést ke scénáři, kdy zásady životního cyklu přesunou objekt blob zpět na archivní úroveň. K tomu může dojít v případě, že čas poslední změny, čas vytvoření nebo čas posledního přístupu přesahuje prahovou hodnotu nastavenou pro zásadu. Existují tři způsoby, jak tomu zabránit:

  • daysAfterLastTierChangeGreaterThan Přidejte podmínku do akce vrstvyToArchive zásady. Tato podmínka se vztahuje pouze na čas poslední změny. Viz Použití zásad správy životního cyklu k archivaci objektů blob.

  • Zakažte pravidlo, které má vliv na tento objekt blob dočasně, aby se zabránilo jeho archivaci znovu. Znovu povolte pravidlo, když je možné objekt blob bezpečně přesunout zpět na archivní úroveň.

  • Pokud objekt blob musí zůstat v horké nebo studené vrstvě trvale, zkopírujte objekt blob do jiného umístění, kde se zásady správy životního cyklu neprojeví.

Řetězec shody předpony objektu blob nepoužádal zásadu na očekávané objekty blob.

Pole shody předpony objektu blob zásad obsahuje úplnou nebo částečnou cestu k objektu blob, která se používá k vyhledání shodných objektů blob, na které se mají použít akce zásad. Cesta musí začínat názvem kontejneru. Pokud není zadaná žádná shoda předpony, použijí se zásady na všechny objekty blob v daném účtu úložiště. Formát řetězce shody předpony je [container name]/[blob name].

Mějte na paměti následující body o řetězci shody předpony:

  • Řetězec shody předpony, jako je kontejner1/ platí pro všechny objekty blob v kontejneru s názvem container1. Řetězec shody předpony kontejneru1 bez koncového znaku lomítka (/) se vztahuje na všechny objekty blob ve všech kontejnerech, kde název kontejneru začíná řetězcem kontejneru1. Předpona bude odpovídat kontejnerům s názvem container11, container1234, container1ab atd.
  • Řetězec shody předpony kontejneru1/sub1/ se vztahuje na všechny objekty blob v kontejneru s názvem container1 , které začínají řetězcem pod1/. Například předpona bude odpovídat objektům blob s názvem container1/sub1/test.txt nebo container1/sub1/sub2/sub2/test.txt.
  • Znak hvězdičky je platným znakem * v názvu objektu blob. Pokud se znak hvězdičky používá v předponě, bude předpona odpovídat objektům blob hvězdičkou ve svých názvech. Hvězdička nefunguje jako zástupný znak.
  • Znak otazníku je platným znakem ? v názvu objektu blob. Pokud se znak otazníku použije v předponě, bude předpona odpovídat objektům blob se otazníkem ve svých názvech. Otazník nefunguje jako zástupný znak.
  • Shoda předpony považuje pouze kladné (=) logické porovnání. Záporná logická porovnání (!=) se ignorují.

Existuje způsob, jak zjistit čas, kdy se zásady budou schovávat?

Bohužel neexistuje způsob, jak sledovat čas, kdy se zásady budou provádět, protože se jedná o proces plánování na pozadí. Platforma ale zásady spustí jednou denně.

Další kroky