Nastavení nebo změna úrovně přístupu objektu blob bloku pomocí Pythonu
Tento článek ukazuje, jak nastavit nebo změnit úroveň přístupu objektu blob bloku pomocí klientské knihovny azure Storage pro Python.
Další informace o změně úrovně přístupu objektu blob pomocí asynchronních rozhraní API najdete v tématu Asynchronní změna úrovně přístupu objektu blob.
Požadavky
- Tento článek předpokládá, že už máte projekt nastavený tak, aby fungoval s klientskou knihovnou služby Azure Blob Storage pro Python. Další informace o nastavení projektu, včetně instalace balíčku, přidání
import
příkazů a vytvoření autorizovaného klientského objektu, najdete v tématu Začínáme se službou Azure Blob Storage a Pythonem. - Autorizační mechanismus musí mít oprávnění k nastavení úrovně přístupu objektu blob. Další informace najdete v pokynech k autorizaci pro následující operaci rozhraní REST API:
Informace o úrovních přístupu k objektům blob bloku
Pokud chcete spravovat náklady na potřeby úložiště, může být užitečné uspořádat data na základě toho, jak často se k nim přistupuje a jak dlouho je potřeba uchovávat. Azure Storage nabízí různé úrovně přístupu, takže data objektů blob můžete ukládat nákladově nejefektivnějším způsobem na základě způsobu jejich použití.
Úrovně přístupu k datům v objektech blob
Mezi úrovně přístupu ke službě Azure Storage patří:
- Horká úroveň – online úroveň optimalizovaná pro ukládání dat, ke kterým se přistupuje nebo mění často. Horká úroveň má nejvyšší náklady na úložiště, ale nejnižší náklady na přístup.
- Studená úroveň – online úroveň optimalizovaná pro ukládání dat, která jsou zřídka přístupná nebo upravená. Data ve studené vrstvě by měla být uložena minimálně po dobu 30 dnů. Studená úroveň má nižší náklady na úložiště a vyšší náklady na přístup v porovnání s horkou úrovní.
- Studená úroveň – online úroveň optimalizovaná pro ukládání dat, která jsou zřídka přístupná nebo upravená. Data na úrovni Zřídkavý přístup by měla být uložená minimálně 90 dnů. Úroveň Zřídkavý přístup má v porovnání se studenou úrovní nižší náklady na úložiště a vyšší náklady na přístup.
- Archivní úroveň – offline úroveň optimalizovaná pro ukládání zřídka používaných dat a s flexibilními požadavky na latenci v řádu hodin. Data v archivní úrovni by měla být uložena minimálně po dobu 180 dnů.
I když je objekt blob v archivní úrovni přístupu, považuje se za offline a nedá se číst ani upravovat. Chcete-li číst nebo upravovat data v archivovaného objektu blob, musíte nejprve znovu dosadit objekt blob do online vrstvy. Další informace o dosazování objektu blob z archivní úrovně do online úrovně najdete v tématu Dosazování objektů blob z archivní úrovně.
Omezení
Nastavení úrovně přístupu je povolené jenom u objektů blob bloku. Další informace o omezeních nastavení úrovně přístupu objektu blob bloku najdete v tématu Nastavení úrovně objektů blob (REST API).
Poznámka:
Pokud chcete nastavit úroveň přístupu na Cold
používání Pythonu, musíte použít minimální verzi klientské knihovny 12.15.0.
Nastavení úrovně přístupu objektu blob během nahrávání
Úroveň přístupu objektu blob můžete nastavit při nahrávání předáním argumentu klíčového standard_blob_tier
slova upload_blob nebo upload_blob_from_url.
Následující příklad kódu ukazuje, jak nastavit úroveň přístupu při nahrávání objektu blob:
def upload_blob_access_tier(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str):
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)
#Upload blob to the cool tier
with open(file=os.path.join(r'file_path', blob_name), mode="rb") as data:
blob_client = blob_client.upload_blob(data=data, overwrite=True, standard_blob_tier=StandardBlobTier.COOL)
Další informace o nahrání objektu blob pomocí Pythonu najdete v tématu Nahrání objektu blob pomocí Pythonu.
Změna úrovně přístupu pro existující objekt blob bloku
Úroveň přístupu existujícího objektu blob bloku můžete změnit pomocí následující funkce:
Následující příklad kódu ukazuje, jak změnit úroveň přístupu existujícího objektu blob na Cool
:
def change_blob_access_tier(self, blob_client: BlobClient):
# Change the blob access tier to cool
blob_client.set_standard_blob_tier(StandardBlobTier.COOL)
Pokud dosazujete archivovaný objekt blob, můžete volitelně předat argument klíčového rehydrate_priority
slova jako HIGH
nebo STANDARD
.
Kopírování objektu blob do jiné úrovně přístupu
Úroveň přístupu existujícího objektu blob bloku můžete změnit zadáním úrovně přístupu v rámci operace kopírování. Pokud chcete změnit úroveň přístupu během operace kopírování, předejte standard_blob_tier
argument klíčového slova start_copy_from_url. Pokud rehydrujete objekt blob z archivní vrstvy pomocí operace kopírování, můžete volitelně předat argument klíčového rehydrate_priority
slova jako HIGH
nebo STANDARD
.
Následující příklad kódu ukazuje, jak dosadit archivovaný objekt blob do Hot
vrstvy pomocí operace kopírování:
def rehydrate_blob_using_copy(self, source_archive_blob: BlobClient, destination_rehydrated_blob: BlobClient):
# Note: the destination blob must have a different name than the source blob
# Start the copy operation - specify the rehydrate priority and blob access tier
copy_operation = dict()
copy_operation = destination_rehydrated_blob.start_copy_from_url(
source_url=source_archive_blob.url,
standard_blob_tier=StandardBlobTier.HOT,
rehydrate_priority=RehydratePriority.STANDARD,
requires_sync=False)
Další informace o kopírování objektu blob pomocí Pythonu najdete v tématu Kopírování objektu blob pomocí Pythonu.
Asynchronní změna úrovně přístupu objektu blob
Klientská knihovna Azure Blob Storage pro Python podporuje asynchronní změnu úrovně přístupu objektu blob. Další informace o požadavcích na nastavení projektu najdete v tématu Asynchronní programování.
Pokud chcete změnit úroveň přístupu objektu blob pomocí asynchronních rozhraní API, postupujte takto:
Přidejte následující příkazy importu:
import asyncio from azure.storage.blob import ( StandardBlobTier ) from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import ( BlobServiceClient, BlobClient )
Přidejte kód pro spuštění programu pomocí
asyncio.run
. Tato funkce spustí předanou korutinu vmain()
našem příkladu a spravuje smyčkuasyncio
událostí. Koroutiny jsou deklarovány syntaxí async/await. V tomto příkladumain()
nejprve korutin vytvoří nejvyšší úroveňBlobServiceClient
pomocíasync with
a pak zavolá metodu, která změní úroveň přístupu objektu blob. Mějte na paměti, že pouze klient nejvyšší úrovně musí používatasync with
, protože ostatní klienti, kteří z něj vytvořili, sdílejí stejný fond připojení.async def main(): sample = BlobAccessTierSamples() # TODO: Replace <storage-account-name> with an actual storage account name account_url = "https://<storage-account-name>.blob.core.windows.net" credential = DefaultAzureCredential() async with BlobServiceClient(account_url, credential=credential) as blob_service_client: # Change the blob access tier to cool blob_client = blob_service_client.get_blob_client(container="sample-container", blob="sample-blob.txt") await sample.change_blob_access_tier(blob_client=blob_client) if __name__ == '__main__': asyncio.run(main())
Přidejte kód pro změnu úrovně přístupu objektu blob. Kód je stejný jako synchronní příklad s tím rozdílem, že metoda je deklarována pomocí
async
klíčovéhoawait
slova a klíčové slovo se používá při voláníset_standard_blob_tier
metody.async def change_blob_access_tier(self, blob_client: BlobClient): # Change the blob access tier to cool await blob_client.set_standard_blob_tier(StandardBlobTier.COOL)
S tímto základním nastavením můžete implementovat další příklady v tomto článku jako koruty pomocí syntaxe async/await.
Zdroje informací
Další informace o nastavení úrovní přístupu pomocí klientské knihovny Azure Blob Storage pro Python najdete v následujících zdrojích informací.
Operace rozhraní REST API
Sada Azure SDK pro Python obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat Pythonu. Metody klientské knihovny pro nastavení úrovní přístupu používají následující operaci rozhraní REST API:
- Nastavení úrovně objektů blob (REST API)
Prostředky klientské knihovny
Ukázky kódu
- Zobrazení synchronních nebo asynchronních ukázek kódu z tohoto článku (GitHub)
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro