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
- Azure-fiók aktív előfizetéssel – fiók létrehozása ingyenesen
- Azure Storage-fiók – tárfiók létrehozása
- Python 3.8+
- Azure-előfizetés – hozzon létre egyet ingyenesen
- Python 3.8+
- Azure Developer CLI
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.
Egy konzolablakban (például a PowerShellben vagy a Bashben) hozzon létre egy új könyvtárat a projekthez:
mkdir blob-quickstart
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:
- Nyisson meg egy új szövegfájlt a kódszerkesztőben.
- 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. - 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 általazd 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:
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:
- Hitelesítés az Azure-ban és a blobadatokhoz való hozzáférés engedélyezése
- Tároló létrehozása
- Blobok feltöltése tárolóba
- A tárolóban lévő blobok listázása
- Blobok letöltése
- Tároló törlése
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 rendszergazdája 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.
Az Azure Portalon keresse meg a tárfiókot a fő keresősávon vagy a bal oldali navigációs sávon.
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.
A Hozzáférés-vezérlés (IAM) lapon válassza a Szerepkör-hozzárendelések lapot.
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 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.
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.
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.
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:
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
A használathoz
DefaultAzureCredential
győ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
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)
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ó.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.