Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan állíthatja be vagy módosíthatja a blokkblobok hozzáférési szintjét a PythonHoz készült Azure Storage ügyfélkódtár használatával.
A blob hozzáférési szintjének aszinkron API-k használatával történő módosításáról további információt a blob hozzáférési szintjének aszinkron módosítása című témakörben talál.
Előfeltételek
- Azure-előfizetés – hozzon létre egyet ingyenesen
- Azure Storage-fiók – tárfiók létrehozása
- Python 3.8+
Saját környezet beállítása
Ha nem rendelkezik meglévő projekttel, ez a szakasz bemutatja, hogyan állíthat be egy projektet a PythonHoz készült Azure Blob Storage ügyfélkódtár használatához. További részletekért tekintse meg az Azure Blob Storage és a Python használatának első lépéseit.
A jelen cikkben szereplő példakódok használatához kövesse az alábbi lépéseket a projekt beállításához.
Csomagok telepítése
Telepítse a következő csomagokat az pip install használatával.
pip install azure-storage-blob azure-identity
Importálási utasítások hozzáadása
Adja hozzá a következő import-utasításokat:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import (
BlobServiceClient,
BlobClient,
StandardBlobTier,
RehydratePriority
)
Engedélyezés
Az engedélyezési mechanizmusnak rendelkeznie kell a blob hozzáférési szintjének beállításához szükséges engedélyekkel. A Microsoft Entra ID-vel való engedélyezéshez (ajánlott) szüksége van az Azure RBAC beépített Storage Blob Data Közreműködő szerepkörre, vagy annál magasabb szintű szerepkörre. További információkért tekintse meg a blobszint beállításával kapcsolatos engedélyezési útmutatót.
Ügyfélobjektum létrehozása
Ha egy alkalmazást a Blob Storage-hoz szeretne csatlakoztatni, hozzon létre egy BlobServiceClient-példányt. Az alábbi példa bemutatja, hogyan hozhat létre ügyfélobjektumot DefaultAzureCredential engedélyezés céljából:
# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()
# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential=credential)
Ügyfélobjektumokat is létrehozhat adott tárolókhoz vagy blobokhoz közvetlenül vagy az BlobServiceClient objektumból. Az ügyfélobjektumok létrehozásáról és kezeléséről további információt az adaterőforrásokat kezelő ügyfélobjektumok létrehozása és kezelése című témakörben talál.
Tudnivalók a blokkblobok hozzáférési szintjeiről
A tárolási igények költségeinek kezelése érdekében hasznos lehet az adatok rendszerezése annak alapján, hogy milyen gyakran és mennyi ideig kell megőrizni azokat. Az Azure Storage különböző hozzáférési szinteket kínál, így a blobadatok a használatuktól függően a legköltséghatékonyabb módon tárolhatók.
Blobadatok hozzáférési szintjei
Az Azure Storage hozzáférési szintjei a következők:
- Gyakori elérésű réteg – A gyakran használt vagy módosított adatok tárolására optimalizált online réteg. A gyakori elérésű réteg a legmagasabb tárolási költségekkel rendelkezik, de a legalacsonyabb hozzáférési költségekkel.
- Ritka elérésű réteg – Olyan online réteg, amely ritkán elért vagy módosított adatok tárolására van optimalizálva. A ritka elérésű rétegben lévő adatokat legalább 30 napig kell tárolni. A ritka elérésű réteg alacsonyabb tárolási és magasabb hozzáférési költségekkel rendelkezik a gyakori elérésű szinthez képest.
- Hideg réteg – Olyan online réteg, amely ritkán használt vagy módosított adatok tárolására van optimalizálva. A nagyon ritka elérésű szinten lévő adatokat legalább 90 napig érdemes tárolni. A hideg szintnek alacsonyabbak a tárolási és magasabbak az elérési költségei a hűvös szinthez képest.
- Archív szint – Olyan offline réteg, amely ritkán elérhető adatok tárolására van optimalizálva, és amely rugalmas késési követelményekkel rendelkezik az órák sorrendjében. Az archív szinten lévő adatokat legalább 180 napig kell tárolni.
A hozzáférési szintekről további információt a blobadatok hozzáférési szintjei című témakörben talál.
Bár egy blob az Archív hozzáférési szinten van, offline állapotúnak minősül, és nem olvasható és nem módosítható. Egy archivált blob adatainak olvasásához vagy módosításához először rehidratálnia kell a blobot egy online szintre. Ha többet szeretne megtudni arról, hogyan lehet egy blobot újból elérhetővé tenni az Archív szintről egy online szintre, tekintse meg a Blob rehidratáció az Archív szintről útmutatót.
Korlátozások
A hozzáférési szint beállítása csak blokkblobokon engedélyezett. A blokkblobok hozzáférési szintjének beállítására vonatkozó korlátozásokról további információt a Blobszint beállítása (REST API) című témakörben talál.
Feljegyzés
A hozzáférési szint Cold Python használatával való beállításához legalább a 12.15.0-s klienskönyvtár verziót kell használnia.
Blob hozzáférési szintjének beállítása feltöltés közben
A blobok hozzáférési szintjét a feltöltéskor úgy állíthatja be, hogy a standard_blob_tier kulcsszó argumentumát átadja upload_blob vagy upload_blob_from_url.
Az alábbi példakód bemutatja, hogyan állíthatja be a hozzáférési szintet egy blob feltöltésekor:
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)
Ha többet szeretne megtudni egy blob Pythonnal való feltöltéséről, olvassa el a Blob feltöltése a Pythonnal című témakört.
Meglévő blokkblob hozzáférési szintjének módosítása
A meglévő blokkblobok hozzáférési szintjét az alábbi függvény használatával módosíthatja:
- set_standard_blob_tier (standard blob szint beállítása)
Az alábbi példakód bemutatja, hogyan módosíthatja egy meglévő blob hozzáférési szintjét a következőre 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)
Ha archivált blobot rehidratál, a kulcsszó argumentumát opcionálisan a következőként rehydrate_priority vagy HIGHnéven is átadhatjaSTANDARD.
Egy blob másolása egy másik hozzáférési szintre
A meglévő blokkblobok hozzáférési szintjét úgy módosíthatja, hogy egy másolási művelet részeként meg kell adnia egy hozzáférési szintet. Ha módosítani szeretné a hozzáférési szintet egy másolási művelet során, adja át a standard_blob_tier kulcsszóargumentumot start_copy_from_url. Ha egy másolási művelettel rehidratál egy blobot az archív rétegből, opcionálisan átadhatja a kulcsszó argumentumot rehydrate_priority, mint HIGH vagy STANDARD.
Az alábbi példakód bemutatja, hogyan állíthat vissza egy archivált blobot a Hot rétegre másolási művelettel.
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)
Ha többet szeretne megtudni a blobOk Pythonnal való másolásáról, olvassa el a Blob másolása a Pythonnal című témakört.
Blob hozzáférési szintjének aszinkron módosítása
A Pythonhoz készült Azure Blob Storage ügyfélkódtár aszinkron módon támogatja a blobok hozzáférési szintjének módosítását. A projektbeállítási követelményekről további információt az Aszinkron programozás című témakörben talál.
A blob hozzáférési szintjének aszinkron API-k használatával történő módosításához kövesse az alábbi lépéseket:
Adja hozzá a következő importálási utasításokat:
import asyncio from azure.storage.blob import ( StandardBlobTier ) from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import ( BlobServiceClient, BlobClient )Adjon hozzá kódot a program futtatásához a
asyncio.runhasználatával. Ez a függvény a példánkban futtatja az átadott koroutint,main()és kezeli azasyncioeseményhurokot. A koroutinok az aszinkron/várakozási szintaxissal vannak deklarálva. Ebben a példában amain()coroutine először a legfelső szintetBlobServiceClientasync withhozza létre, majd meghívja a blob hozzáférési szintjét módosító metódust. Vegye figyelembe, hogy csak a legfelső szintű ügyfélnek kell használniaasync with, mivel az abból létrehozott többi ügyfél ugyanazt a kapcsolatkészletet használja.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())Adjon hozzá kódot a blob hozzáférési szintjének módosításához. A kód megegyezik a szinkron példával, azzal a kivétellel, hogy a metódus a kulcsszóval
asyncvan deklarálva, és aawaitkulcsszót a metódus meghívásakor használja aset_standard_blob_tierrendszer.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)
Ezzel az alapszintű beállítással a cikkben más példákat is implementálhat coroutinesként az aszinkron/várakozási szintaxis használatával.
Források
A hozzáférési szintek Pythonhoz készült Azure Blob Storage-ügyfélkódtár használatával történő beállításával kapcsolatos további információkért tekintse meg az alábbi erőforrásokat.
REST API-műveletek
Az Azure SDK for Python olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát jól ismert Python-paradigmákon keresztül. A hozzáférési szintek beállításához használt ügyfélkódtár-metódusok a következő REST API-műveletet használják:
- Blobszint beállítása (REST API)
Ügyfélkódtár erőforrásai
Kódminták
- Szinkron vagy aszinkron kódminták megtekintése ebből a cikkből (GitHub)