Rövid útmutató: Azure Blob Storage-ügyfélkódtár Pythonhoz

Feljegyzés

A Nulláról buildeléssel lépésről lépésre végigvezeti az új projekt létrehozásának, a csomagok telepítésének, a kód írásának és egy alapszintű konzolalkalmazás futtatásának folyamatán. Ez a megközelítés akkor ajánlott, ha szeretné megismerni az Azure Blob Storage-hoz csatlakozó alkalmazások létrehozásának összes részletét. Ha inkább automatizálni szeretné az üzembe helyezési feladatokat, és egy befejezett projekttel szeretne kezdeni, válassza a Start with a template (Kezdés sablonnal) lehetőséget.

Feljegyzés

A Start with a template option az Azure Developer CLI használatával automatizálja az üzembe helyezési feladatokat, és elindítja egy befejezett projekttel. Ez a módszer akkor ajánlott, ha a lehető leggyorsabban szeretné felderíteni a kódot a beállítási feladatok elvégzése nélkül. Ha lépésről lépésre szeretné elkészíteni az alkalmazást, válassza a Build lehetőséget az alapoktól.

Ismerkedés a Python Azure Blob Storage ügyfélkódtárával a blobok és tárolók kezeléséhez.

Ebben a cikkben lépéseket követve telepítheti a csomagot, és kipróbálhatja az alapműveletek példakódját.

Ebben a cikkben az Azure Developer CLI használatával helyezhet üzembe Azure-erőforrásokat, és futtathat egy befejezett konzolalkalmazást néhány parancs használatával.

API-referenciadokumentáció Kódtár forráskódcsomagja | (PyPi) | -minták |

Ez a videó bemutatja, hogyan kezdheti el használni a Pythonhoz készült Azure Blob Storage ügyfélkódtárat.

A videó lépéseit a következő szakaszokban is ismertetjük.

Előfeltételek

Beállítás

Ez a szakasz végigvezeti egy projekt előkészítésén a PythonHoz készült Azure Blob Storage-ügyfélkódtár használatához.

A projekt létrehozása

Hozzon létre egy Blob-Quickstart nevű Python-alkalmazást.

  1. Egy konzolablakban (például a PowerShellben vagy a Bashben) hozzon létre egy új könyvtárat a projekthez:

    mkdir blob-quickstart
    
  2. Váltson az újonnan létrehozott blob-rövid útmutató könyvtárra:

    cd blob-quickstart
    

A csomagok telepítése

A projektkönyvtárból telepítse az Azure Blob Storage- és Az Azure Identity-ügyfélkódtárak csomagjait a pip install paranccsal. Az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatokhoz az Azure-identitáscsomagra van szükség.

pip install azure-storage-blob azure-identity

Az alkalmazás-keretrendszer beállítása

A projektkönyvtárban kövesse az alkalmazás alapstruktúrájának létrehozásához szükséges lépéseket:

  1. Nyisson meg egy új szövegfájlt a kódszerkesztőben.
  2. Adjon hozzá import utasításokat, hozza létre a program struktúráját, és tartalmazza az alapszintű kivételkezelést az alább látható módon.
  3. Mentse az új fájlt blob_quickstart.py a Blob-Quickstart könyvtárban.
import os, uuid
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

try:
    print("Azure Blob Storage Python quickstart sample")

    # Quickstart code goes here

except Exception as ex:
    print('Exception:')
    print(ex)

Az Azure Developer CLI telepítésével létrehozhat egy tárfiókot, és futtathatja a mintakódot néhány parancs használatával. A projektet a helyi fejlesztési környezetben vagy DevContainerben is futtathatja.

Az Azure Developer CLI-sablon inicializálása és erőforrások üzembe helyezése

Egy üres könyvtárból kövesse az alábbi lépéseket a sablon inicializálásához, az azd Azure-erőforrások kiépítéséhez és a kód használatának megkezdéséhez:

  • Klónozza a gitHubról a rövid útmutató adattár-objektumait, és inicializálja helyileg a sablont:

    azd init --template blob-storage-quickstart-python
    

    A rendszer a következő információkat kéri:

    • Környezet neve: Ez az érték az Azure Developer CLI által létrehozott összes Azure-erőforrás előtagjaként használatos. A névnek minden Azure-előfizetésben egyedinek kell lennie, és 3 és 24 karakter közötti hosszúságúnak kell lennie. A név csak számokból és kisbetűkből állhat.
  • Jelentkezzen be az Azure-ba:

    azd auth login
    
  • Az erőforrások kiépítése és üzembe helyezése az Azure-ban:

    azd up
    

    A rendszer a következő információkat kéri:

    • Előfizetés: Az az Azure-előfizetés, amellyel az erőforrások üzembe vannak helyezve.
    • Hely: Az az Azure-régió, ahol az erőforrások üzembe vannak helyezve.

    Az üzembe helyezés végrehajtása eltarthat néhány percig. A parancs kimenete azd up tartalmazza az újonnan létrehozott tárfiók nevét, amelyre később szüksége lesz a kód futtatásához.

A mintakód futtatása

Ezen a ponton az erőforrások üzembe lesznek helyezve az Azure-ban, és a kód majdnem készen áll a futtatásra. Kövesse az alábbi lépéseket a csomagok telepítéséhez, a tárfiók nevének frissítéséhez a kódban, és futtassa a mintakonzolalkalmazást:

  • Csomagok telepítése: A helyi címtárban telepítse az Azure Blob Storage- és Az Azure Identity-ügyfélkódtárak csomagjait az alábbi paranccsal: pip install azure-storage-blob azure-identity
  • Frissítse a tárfiók nevét: A helyi könyvtárban szerkessze a blob_quickstart.py nevű fájlt. Keresse meg a <storage-account-name> helyőrzőt, és cserélje le a parancs által azd up létrehozott tárfiók tényleges nevére. Mentse el a módosításokat.
  • Futtassa a projektet: Futtassa a következő parancsot az alkalmazás futtatásához: python blob_quickstart.py.
  • Figyelje meg a kimenetet: Ez az alkalmazás létrehoz egy tesztfájlt a helyi adatmappában , és feltölti azt a tárfiók egyik tárolójába. A példa ezután felsorolja a tárolóban lévő blobokat, és letölti a fájlt egy új névvel, hogy összehasonlíthassa a régi és az új fájlokat.

A mintakód működésével kapcsolatos további információkért lásd a példakódokat.

Ha végzett a kód tesztelésével, tekintse meg az Erőforrások törlése szakaszt a parancs által azd up létrehozott erőforrások törléséhez.

Objektummodell

Az Azure Blob Storage nagy mennyiségű strukturálatlan adat tárolására van optimalizálva. A strukturálatlan adatok olyan adatok, amelyek nem követnek egy adott adatmodellt vagy -definíciót, például szöveges vagy bináris adatok. A Blob Storage háromféle erőforrást kínál:

  • A tárfiók
  • Tároló a tárfiókban
  • Blob a tárolóban

Az alábbi ábra az erőforrások közötti kapcsolatot mutatja be:

Diagram of Blob storage architecture

Az alábbi Python-osztályok használatával kezelheti ezeket az erőforrásokat:

  • BlobServiceClient: Az BlobServiceClient osztály lehetővé teszi az Azure Storage-erőforrások és blobtárolók manipulálására.
  • ContainerClient: Az ContainerClient osztály lehetővé teszi az Azure Storage-tárolók és a blobok manipulálására.
  • BlobClient: Az BlobClient osztály lehetővé teszi az Azure Storage-blobok manipulálására.

Kódpéldák

Az alábbi példakódrészletek bemutatják, hogyan végezheti el a következő feladatokat a PythonHoz készült Azure Blob Storage ügyfélkódtárával:

Feljegyzés

Az Azure Developer CLI-sablon tartalmaz egy már meglévő mintakódot tartalmazó fájlt. Az alábbi példák részletesen ismertetik a mintakód egyes részeit. A sablon implementálja az ajánlott jelszó nélküli hitelesítési módszert a Hitelesítés az Azure-ba című szakaszban leírtak szerint. A kapcsolati sztring metódus alternatívaként jelenik meg, de nem használatos a sablonban, és nem ajánlott éles kódhoz.

Hitelesítés az Azure-ban és a blobadatokhoz való hozzáférés engedélyezése

Az Azure Blob Storage-ba irányuló alkalmazáskéréseket engedélyezni kell. DefaultAzureCredential Az Azure Identity-ügyfélkódtár által biztosított osztály használata ajánlott módszer az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatok implementálásához a kódban, beleértve a Blob Storage-t is.

Az Azure Blob Storage-ra irányuló kéréseket a fiók hozzáférési kulcsával is engedélyezheti. Ezt a megközelítést azonban körültekintően kell alkalmazni. A fejlesztőknek szorgalmasnak kell lenniük, hogy soha ne tegyék elérhetővé a hozzáférési kulcsot nem biztonságos helyen. Bárki, aki rendelkezik a hozzáférési kulccsal, engedélyezheti a tárfiókra irányuló kérelmeket, és hatékonyan hozzáférhet az összes adathoz. DefaultAzureCredential továbbfejlesztett felügyeleti és biztonsági előnyöket kínál a fiókkulcson keresztül a jelszó nélküli hitelesítés engedélyezéséhez. Az alábbi példában mindkét lehetőség látható.

DefaultAzureCredential több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust kell használni futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (helyi és éles környezetben) környezetspecifikus kód implementálása nélkül.

A hitelesítő adatokat kereső sorrend és helyek DefaultAzureCredential az Azure Identity-kódtár áttekintésében találhatók.

Az alkalmazás például hitelesítheti az Azure CLI bejelentkezési hitelesítő adataival a helyi fejlesztés során. Az alkalmazás ezután használhat felügyelt identitást, miután üzembe helyezték az Azure-ban. Ehhez az áttűnéshez nincs szükség kódmódosításra.

Szerepkörök hozzárendelése a Microsoft Entra felhasználói fiókjához

Helyi fejlesztéskor győződjön meg arról, hogy a blobadatokhoz hozzáférő felhasználói fiók rendelkezik a megfelelő engedélyekkel. A blobadatok olvasásához és írásához tárolóblobadatok közreműködője szükséges. A szerepkör hozzárendeléséhez hozzá kell rendelnie a Felhasználói hozzáférés Rendszergazda istrator szerepkört, vagy egy másik szerepkört, amely tartalmazza a Microsoft.Authorization/roleAssignments/write műveletet. Azure RBAC-szerepköröket rendelhet egy felhasználóhoz az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával. A szerepkör-hozzárendelések elérhető hatóköreiről a hatókör áttekintési oldalán tudhat meg többet.

Ebben a forgatókönyvben engedélyeket rendel hozzá a felhasználói fiókjához, amely a tárfiókra terjed ki, hogy kövesse a minimális jogosultság elvét. Ez a gyakorlat csak a minimálisan szükséges engedélyeket biztosítja a felhasználóknak, és biztonságosabb éles környezeteket hoz létre.

Az alábbi példa a Storage Blob Data Contributor szerepkört rendeli hozzá a felhasználói fiókjához, amely olvasási és írási hozzáférést biztosít a tárfiók blobadataihoz.

Fontos

A szerepkör-hozzárendelés propagálása a legtöbb esetben egy-két percet vesz igénybe az Azure-ban, de ritkán akár nyolc percet is igénybe vehet. Ha hitelesítési hibákat kap a kód első futtatásakor, várjon néhány percet, és próbálkozzon újra.

  1. Az Azure Portalon keresse meg a tárfiókot a fő keresősávon vagy a bal oldali navigációs sávon.

  2. A tárfiók áttekintési lapján válassza a Hozzáférés-vezérlés (IAM) lehetőséget a bal oldali menüben.

  3. A Hozzáférés-vezérlés (IAM) lapon válassza a Szerepkör-hozzárendelések lapot.

  4. Válassza a +Hozzáadás lehetőséget a felső menüből, majd a szerepkör-hozzárendelés hozzáadása lehetőséget az eredményül kapott legördülő menüből.

    A screenshot showing how to assign a role.

  5. A keresőmezővel szűrheti az eredményeket a kívánt szerepkörre. Ebben a példában keresse meg a Storage Blob-adatszolgáltatót, és válassza ki a megfelelő eredményt, majd válassza a Tovább gombot.

  6. A Hozzáférés hozzárendelése területen válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget, majd válassza a + Tagok kijelölése lehetőséget.

  7. A párbeszédpanelen keresse meg a Microsoft Entra-felhasználónevet (általában a user@domain e-mail-címét), majd válassza a Párbeszédpanel alján található Kiválasztás lehetőséget.

  8. Válassza a Véleményezés + hozzárendelés lehetőséget a végső lapra való ugráshoz, majd a folyamat befejezéséhez a Véleményezés + hozzárendelés lehetőséget.

Jelentkezzen be, és csatlakoztassa az alkalmazáskódot az Azure-hoz a DefaultAzureCredential használatával

A tárfiókban lévő adatokhoz való hozzáférést az alábbi lépések végrehajtásával engedélyezheti:

  1. Győződjön meg arról, hogy ugyanazzal a Microsoft Entra-fiókkal van hitelesítve, amelyhez a szerepkört hozzárendelte a tárfiókban. Hitelesítést az Azure CLI, a Visual Studio Code vagy az Azure PowerShell használatával végezhet.

    Jelentkezzen be az Azure-ba az Azure CLI-vel a következő paranccsal:

    az login
    
  2. A használathoz DefaultAzureCredentialgyőződjön meg arról, hogy telepítve van az Azure-Identity-csomag, és importálja az osztályt:

    from azure.identity import DefaultAzureCredential
    from azure.storage.blob import BlobServiceClient
    
  3. Adja hozzá ezt a kódot a blokkba try . Amikor a kód a helyi munkaállomáson fut, DefaultAzureCredential a kiemelt eszköz fejlesztői hitelesítő adatait használja az Azure-beli hitelesítéshez. Ilyen eszközök például az Azure CLI vagy a Visual Studio Code.

    account_url = "https://<storageaccountname>.blob.core.windows.net"
    default_credential = DefaultAzureCredential()
    
    # Create the BlobServiceClient object
    blob_service_client = BlobServiceClient(account_url, credential=default_credential)
    
  4. Mindenképpen frissítse a tárfiók nevét az objektum URI-jában BlobServiceClient . A tárfiók neve az Azure Portal áttekintési oldalán található.

    A screenshot showing how to find the storage account name.

    Feljegyzés

    Az Azure-ban való üzembe helyezéskor ugyanezzel a kóddal engedélyezheti az Azure Storage-ra irányuló kéréseket egy Azure-ban futó alkalmazásból. Azonban engedélyeznie kell a felügyelt identitást az alkalmazásban az Azure-ban. Ezután konfigurálja a tárfiókot úgy, hogy lehetővé tegye a felügyelt identitás csatlakozását. Az Azure-szolgáltatások közötti kapcsolat konfigurálásával kapcsolatos részletes utasításokért tekintse meg az Azure által üzemeltetett alkalmazások hitelesítési útmutatójában.

Tároló létrehozása

Hozzon létre egy új tárolót a tárfiókban az objektum create_container metódusának blob_service_client meghívásával. Ebben a példában a kód hozzáfűz egy GUID értéket a tároló nevéhez, hogy biztosan egyedi legyen.

Adja hozzá ezt a kódot a blokk végéhez try :

# Create a unique name for the container
container_name = str(uuid.uuid4())

# Create the container
container_client = blob_service_client.create_container(container_name)

A tárolók létrehozásával és további kódmintákkal kapcsolatos további információkért lásd : Blobtároló létrehozása a Pythonnal.

Fontos

A tárolók nevei csak kisbetűket tartalmazhatnak. A tárolók és blobok elnevezésével kapcsolatos további információkért lásd a tárolók, blobok és metaadatok elnevezését és hivatkozását.

Blobok feltöltése tárolóba

Blob feltöltése tárolóba upload_blob használatával. A példakód létrehoz egy szövegfájlt a helyi adatkönyvtárban a tárolóba való feltöltéshez.

Adja hozzá ezt a kódot a blokk végéhez try :

# Create a local directory to hold blob data
local_path = "./data"
os.mkdir(local_path)

# Create a file in the local data directory to upload and download
local_file_name = str(uuid.uuid4()) + ".txt"
upload_file_path = os.path.join(local_path, local_file_name)

# Write text to the file
file = open(file=upload_file_path, mode='w')
file.write("Hello, World!")
file.close()

# Create a blob client using the local file name as the name for the blob
blob_client = blob_service_client.get_blob_client(container=container_name, blob=local_file_name)

print("\nUploading to Azure Storage as blob:\n\t" + local_file_name)

# Upload the created file
with open(file=upload_file_path, mode="rb") as data:
    blob_client.upload_blob(data)

Ha többet szeretne megtudni a blobok feltöltéséről, és további kódmintákat szeretne megismerni, olvassa el a Blob feltöltése a Pythonnal című témakört.

Tárolóban lévő blobok kilistázása

A tárolóban lévő blobok listázása a list_blobs metódus meghívásával. Ebben az esetben csak egy blob lett hozzáadva a tárolóhoz, így a listázási művelet csak azt az egy blobot adja vissza.

Adja hozzá ezt a kódot a blokk végéhez try :

print("\nListing blobs...")

# List the blobs in the container
blob_list = container_client.list_blobs()
for blob in blob_list:
    print("\t" + blob.name)

A blobok listázásáról és további kódminták megismeréséről további információt a Blobok listázása a Pythonnal című témakörben talál.

Blobok letöltése

Töltse le a korábban létrehozott blobot a download_blob metódus meghívásával. A példakód hozzáad egy "DOWNLOAD" utótagot a fájlnévhez, így mindkét fájl megjelenik a helyi fájlrendszerben.

Adja hozzá ezt a kódot a blokk végéhez try :

# Download the blob to a local file
# Add 'DOWNLOAD' before the .txt extension so you can see both files in the data directory
download_file_path = os.path.join(local_path, str.replace(local_file_name ,'.txt', 'DOWNLOAD.txt'))
container_client = blob_service_client.get_container_client(container= container_name) 
print("\nDownloading blob to \n\t" + download_file_path)

with open(file=download_file_path, mode="wb") as download_file:
 download_file.write(container_client.download_blob(blob.name).readall())

Ha többet szeretne megtudni a blobok letöltéséről, és további kódmintákat szeretne megismerni, olvassa el a Blob letöltése a Pythonnal című témakört.

Tároló törlése

Az alábbi kód megtisztítja az alkalmazás által létrehozott erőforrásokat, és eltávolítja a teljes tárolót a delete_container metódus használatával. Ha szeretné, törölheti a helyi fájlokat is.

Az alkalmazás a blob, a tároló és a helyi fájlok törlése előtt hívással input() szünetelteti a felhasználói bevitelt. Ellenőrizze, hogy az erőforrások helyesen lettek-e létrehozva a törlésük előtt.

Adja hozzá ezt a kódot a blokk végéhez try :

# Clean up
print("\nPress the Enter key to begin clean up")
input()

print("Deleting blob container...")
container_client.delete_container()

print("Deleting the local source and downloaded files...")
os.remove(upload_file_path)
os.remove(download_file_path)
os.rmdir(local_path)

print("Done")

Ha többet szeretne megtudni a tároló törléséről, és további kódmintákat szeretne megismerni, olvassa el a Blob-tárolók törlése és visszaállítása a Pythonnal című témakört.

A kód futtatása

Ez az alkalmazás létrehoz egy tesztfájlt a helyi mappában, és feltölti az Azure Blob Storage-ba. A példa ezután felsorolja a tárolóban lévő blobokat, és letölti a fájlt egy új névvel. Összehasonlíthatja a régi és az új fájlokat.

Lépjen a blob_quickstart.py fájlt tartalmazó könyvtárra, majd futtassa a következő python parancsot az alkalmazás futtatásához:

python blob_quickstart.py

Az alkalmazás kimenete hasonló az alábbi példához (az olvashatóság érdekében kihagyott UUID-értékek):

Azure Blob Storage Python quickstart sample

Uploading to Azure Storage as blob:
        quickstartUUID.txt

Listing blobs...
        quickstartUUID.txt

Downloading blob to
        ./data/quickstartUUIDDOWNLOAD.txt

Press the Enter key to begin clean up

Deleting blob container...
Deleting the local source and downloaded files...
Done

A törlési folyamat megkezdése előtt ellenőrizze a két fájl adatmappáját . Összehasonlíthatja őket, és megfigyelheti, hogy azonosak.

Az erőforrások eltávolítása

Miután ellenőrizte a fájlokat, és befejezte a tesztelést, nyomja le az Enter billentyűt a tesztfájlok és a tárfiókban létrehozott tároló törléséhez. Az Azure CLI használatával is törölheti az erőforrásokat.

Ha végzett a rövid útmutatóval, az alábbi parancs futtatásával törölheti a létrehozott erőforrásokat:

azd down

A rendszer kérni fogja, hogy erősítse meg az erőforrások törlését. Adja meg y a megerősítéshez.

Következő lépések

Ebben a rövid útmutatóban megtanulta, hogyan tölthet fel, tölthet le és listázhat blobokat a Python használatával.

A Blob Storage-mintaalkalmazások megtekintéséhez folytassa a következőekkel: