Megosztás a következőn keresztül:


Blokkblob hozzáférési szintjének beállítása vagy módosítása a Pythonnal

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

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:

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:

  1. 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
    )
    
  2. Adjon hozzá kódot a program futtatásához a asyncio.run használatával. Ez a függvény a példánkban futtatja az átadott koroutint, main() és kezeli az asyncio eseményhurokot. A koroutinok az aszinkron/várakozási szintaxissal vannak deklarálva. Ebben a példában a main() coroutine először a legfelső szintet BlobServiceClientasync 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álnia async 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())
    
  3. 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 async van deklarálva, és a await kulcsszót a metódus meghívásakor használja a set_standard_blob_tier rendszer.

    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:

Ügyfélkódtár erőforrásai

Kódminták

Lásd még