Példa: Az Azure Storage elérése a Pythonhoz készült Azure-kódtárak használatával
Ebből a cikkből megtudhatja, hogyan tölthet fel fájlokat egy Azure Blob Storage-tárolóba az Azure-ügyfélkódtárak Python-alkalmazáskódban való használatával. A cikk feltételezi, hogy létrehozta az Azure Storage létrehozása című példában látható erőforrásokat.
A cikkben szereplő összes parancs ugyanúgy működik a Linux/macOS bash és a Windows parancshéjakban, hacsak fel nem jegyezzük.
1: A helyi fejlesztési környezet beállítása
Ha még nem tette meg, hozzon létre egy környezetet, ahol futtathatja ezt a kódot. Íme néhány lehetőség:
Python virtuális környezet konfigurálása. Létrehozhatja a virtuális környezetet helyileg vagy az Azure Cloud Shellben, és ott futtathatja a kódot. Mindenképpen aktiválja a virtuális környezetet a használat megkezdéséhez.
Használjon conda környezetet.
Használjon Dev-tárolót a Visual Studio Code-ban vagy a GitHub Codespace-ben.
2: Kódtárcsomagok telepítése
A requirements.txt fájlban adjon hozzá sorokat a használni kívánt ügyfélkódtár-csomaghoz, és mentse a fájlt.
azure-storage-blob
azure-identity
Ezután telepítse a követelményeket a terminálban vagy a parancssorban.
pip install -r requirements.txt
3: Feltöltendő fájl létrehozása
Hozzon létre egy sample-source.txt nevű forrásfájlt. Ez a fájlnév az, amit a kód elvár.
Hello there, Azure Storage. I'm a friendly file ready to be stored in a blob.
4: Blob Storage használata alkalmazáskódból
Az alábbi két szakasz két módszert mutat be a példaként létrehozott blobtároló elérésére: Az Azure Storage létrehozása.
Az első módszer (hitelesítéssel) hitelesíti az alkalmazást DefaultAzureCredential
a Python-alkalmazások Azure-szolgáltatásokba való hitelesítése szolgáltatásnevek használatával végzett helyi fejlesztés során. Ezzel a módszerrel először a megfelelő engedélyeket kell hozzárendelnie az alkalmazás identitásához, ami az ajánlott eljárás.
A második módszer (kapcsolati sztring) egy kapcsolati sztring használ a tárfiók közvetlen eléréséhez. Bár ez a módszer egyszerűbbnek tűnik, két jelentős hátránya van:
A kapcsolati sztring eredendően a Storage-fiókkal hitelesíti a csatlakozó ügynököt, nem pedig az adott fiókon belüli egyes erőforrásokkal. Ennek eredményeképpen egy kapcsolati sztring a szükségesnél szélesebb körű engedélyezést biztosít.
A kapcsolati sztring egyszerű szövegben tartalmazzák a hozzáférési adatokat, ezért potenciális biztonsági réseket jelentenek, ha nem megfelelően vannak kialakítva vagy védve. Ha egy ilyen kapcsolati sztring elérhetővé válnak, a Tárfiókon belüli erőforrások széles skáláját érheti el.
Ezen okokból javasoljuk, hogy használja a hitelesítési módszert az éles kódban.
4a: Blob Storage használata hitelesítéssel
Hozzon létre egy use_blob_auth.py nevű fájlt a következő kóddal. A megjegyzések ismertetik a lépéseket.
import os import uuid from azure.identity import DefaultAzureCredential # Import the client object from the SDK library from azure.storage.blob import BlobClient credential = DefaultAzureCredential() # Retrieve the storage blob service URL, which is of the form # https://<your-storage-account-name>.blob.core.windows.net/ storage_url = os.environ["AZURE_STORAGE_BLOB_URL"] # Create the client object using the storage URL and the credential blob_client = BlobClient( storage_url, container_name="blob-container-01", blob_name=f"sample-blob-{str(uuid.uuid4())[0:5]}.txt", credential=credential, ) # Open a local file and upload its contents to Blob Storage with open("./sample-source.txt", "rb") as data: blob_client.upload_blob(data) print(f"Uploaded sample-source.txt to {blob_client.url}")
Referenciákra mutató hivatkozások:
Hozzon létre egy környezeti változót:
AZURE_STORAGE_BLOB_URL
Cserélje le a "pythonazurestorage12345" kifejezést a tárfiók nevére.
A
AZURE_STORAGE_BLOB_URL
környezeti változót csak ez a példa használja. Az Azure-kódtárak nem használják.Az az ad sp create-for-rbac paranccsal hozzon létre egy új szolgáltatásnevet az alkalmazáshoz. A parancs egyidejűleg létrehozza az alkalmazás regisztrációját az alkalmazáshoz. Adja meg a szolgáltatásnévnek az Ön által választott nevet.
az ad sp create-for-rbac --name {service-principal-name}
A parancs kimenete a következőhöz hasonlóan fog kinézni. Jegyezze fel ezeket az értékeket, vagy tartsa nyitva ezt az ablakot, mivel a következő lépésben szüksége lesz ezekre az értékekre, és nem fogja tudni újra megtekinteni a jelszó (titkos ügyfélkód) értékét. Később azonban hozzáadhat új jelszót anélkül, hogy szükség esetén érvénytelenítenék a szolgáltatásnevet vagy a meglévő jelszavakat.
{ "appId": "00000000-0000-0000-0000-000000000000", "displayName": "{service-principal-name}", "password": "abcdefghijklmnopqrstuvwxyz", "tenant": "11111111-1111-1111-1111-111111111111" }
Az Azure CLI-parancsok futtathatók az Azure Cloud Shellben vagy egy munkaállomáson, amelyen telepítve van az Azure CLI.
Hozzon létre környezeti változókat az application service principal számára:
Hozza létre az alábbi környezeti változókat az előző parancs kimenetéből származó értékekkel. Ezek a változók az application service principal használatát jelzik
DefaultAzureCredential
.AZURE_CLIENT_ID
→ Az alkalmazásazonosító értéke.AZURE_TENANT_ID
→ a bérlőazonosító értékét.AZURE_CLIENT_SECRET
→ Az alkalmazáshoz létrehozott jelszó/hitelesítő adatok.
Próbálja meg futtatni a kódot (amely szándékosan meghiúsul):
python use_blob_auth.py
Figyelje meg a következő hibaüzenetet: "Ez a kérés nem jogosult a művelet végrehajtására ezzel az engedéllyel". A hiba azért várható, mert a helyi szolgáltatásnév, amelyet használ, még nem rendelkezik engedéllyel a blobtároló eléréséhez.
Adjon közreműködői engedélyeket a blobtárolón a szolgáltatásnévnek az Az role assignment create Azure CLI paranccsal:
az role assignment create --assignee <AZURE_CLIENT_ID> \ --role "Storage Blob Data Contributor" \ --scope "/subscriptions/<AZURE_SUBSCRIPTION_ID>/resourceGroups/PythonAzureExample-Storage-rg/providers/Microsoft.Storage/storageAccounts/pythonazurestorage12345/blobServices/default/containers/blob-container-01"
Az
--assignee
argumentum azonosítja a szolgáltatásnevet. Cserélje le <AZURE_CLIENT_ID> helyőrzőt a szolgáltatásnév alkalmazásazonosítójára.Az
--scope
argumentum azonosítja a szerepkör-hozzárendelés helyét. Ebben a példában a "Blob-container-01" nevű tároló szolgáltatásnévének adja meg a "Storage Blob Data Contributor" szerepkört.Cserélje le
PythonAzureExample-Storage-rg
apythonazurestorage12345
tárfiókot tartalmazó erőforráscsoportot és a tárfiók pontos nevét. Szükség esetén módosítsa a blobtároló nevét is. Ha nem a megfelelő nevet használja, a következő hibaüzenet jelenik meg: "Nem lehet végrehajtani a kért műveletet a beágyazott erőforráson. A "pythonazurestorage12345" szülőerőforrás nem található."Cserélje le a <AZURE_SUBSCRIPTION_ID> helyőrzőt az Azure-előfizetés azonosítójára. (Futtathatja az az account show parancsot, és lekérheti az előfizetés azonosítóját a
id
kimenetben lévő tulajdonságból.)
Tipp.
Ha a szerepkör-hozzárendelési parancs "Nem található kapcsolati adapter" hibaüzenetet ad vissza a Bash-rendszerhéj használatakor, próbálja meg beállítani
export MSYS_NO_PATHCONV=1
az elérési út fordításának elkerülését. További információkért tekintse meg ezt a problémát.Várjon egy-két percet az engedélyek propagálására, majd futtassa újra a kódot annak ellenőrzéséhez, hogy működik-e. Ha ismét megjelenik az engedélyhiba, várjon egy kicsit tovább, majd próbálkozzon újra a kóddal.
A szerepkör-hozzárendelésekkel kapcsolatos további információkért lásd : Szerepkör-engedélyek hozzárendelése az Azure CLI használatával.
4b: Blob Storage használata kapcsolati sztring
Hozzon létre egy use_blob_conn_string.py nevű Python-fájlt a következő kóddal. A megjegyzések ismertetik a lépéseket.
import os import uuid # Import the client object from the SDK library from azure.storage.blob import BlobClient # Retrieve the connection string from an environment variable. Note that a # connection string grants all permissions to the caller, making it less # secure than obtaining a BlobClient object using credentials. conn_string = os.environ["AZURE_STORAGE_CONNECTION_STRING"] # Create the client object for the resource identified by the connection # string, indicating also the blob container and the name of the specific # blob we want. blob_client = BlobClient.from_connection_string( conn_string, container_name="blob-container-01", blob_name=f"sample-blob-{str(uuid.uuid4())[0:5]}.txt", ) # Open a local file and upload its contents to Blob Storage with open("./sample-source.txt", "rb") as data: blob_client.upload_blob(data) print(f"Uploaded sample-source.txt to {blob_client.url}")
Hozzon létre egy környezeti változót,
AZURE_STORAGE_CONNECTION_STRING
amelynek értéke a tárfiók teljes kapcsolati sztring. (Ezt a környezeti változót különböző Azure CLI-megjegyzések is használják.) A tárfiókhoz tartozó kapcsolati sztring az az storage account show-connection-string parancs futtatásával szerezheti be.az storage account show-connection-string --resource-group PythonAzureExample-Storage-rg -name pythonazurestorage12345
Cserélje le
PythonAzureExample-Storage-rg
apythonazurestorage12345
tárfiókot tartalmazó erőforráscsoportot és a tárfiók pontos nevét.A környezeti változó beállításakor használja a tulajdonság teljes értékét
connectionString
a kimenetben, beleértve az idézőjeleket is.Futtassa a kódot:
python use_blob_conn_string.py
Bár ez a módszer egyszerű, a kapcsolati sztring minden műveletet engedélyez egy tárfiókban. Az éles kóddal jobb, ha az előző szakaszban leírt engedélyeket használja.
5. Blob létrehozásának ellenőrzése
A metódus kódjának futtatása után lépjen az Azure Portalra, és lépjen a blobtárolóba, és ellenőrizze, hogy létezik-e egy új blob, amely a sample-blob-{random}.txt ugyanazzal a tartalommal rendelkezik, mint a sample-source.txt fájl:
Ha létrehozott egy környezeti változót, AZURE_STORAGE_CONNECTION_STRING
az Azure CLI-vel is ellenőrizheti, hogy a blob létezik-e az az storage bloblista paranccsal:
az storage blob list --container-name blob-container-01
Ha követte a blobtároló hitelesítéssel való használatára vonatkozó utasításokat, hozzáadhatja a --connection-string
paramétert az előző parancshoz a tárfiók kapcsolati sztring. A kapcsolati sztring beszerzéséről a 4b: Blob Storage használata kapcsolati sztring című témakörben talál útmutatást. Használja a teljes kapcsolati sztring az idézőjelekkel együtt.
6: Erőforrások törlése
Futtassa az az group delete parancsot, ha nem kell megtartania az ebben a példában használt erőforráscsoportot és tárerőforrásokat. Az erőforráscsoportok nem számolnak fel folyamatos díjakat az előfizetésben, de az erőforráscsoportban lévő erőforrások, például a tárfiókok díjakat vonhatnak maga után. Ajánlott minden olyan csoportot megtisztítani, amelyet nem használ aktívan. Az --no-wait
argumentum lehetővé teszi, hogy a parancs azonnal visszatérjen a művelet befejezésére való várakozás helyett.
az group delete -n PythonAzureExample-Storage-rg --no-wait
A metódussal ResourceManagementClient.resource_groups.begin_delete
egy erőforráscsoportot is törölhet a kódból. A példakód : Erőforráscsoport létrehozása a használatot mutatja be.
Ha követte a blobtároló hitelesítéssel való használatára vonatkozó utasításokat, érdemes törölnie a létrehozott alkalmazás-szolgáltatásnevet. Az az ad app delete parancsot használhatja. Cserélje le a <AZURE_CLIENT_ID> helyőrzőt a szolgáltatásnév alkalmazásazonosítójára.
az ad app delete --id <AZURE_CLIENT_ID>
Lásd még
- Példa: Erőforráscsoport létrehozása
- Példa: Erőforráscsoportok listázása előfizetésben
- Példa: Webalkalmazás létrehozása és kód üzembe helyezése
- Példa: Azure Storage létrehozása
- Példa: Adatbázis létrehozása és lekérdezése
- Példa: Virtuális gép létrehozása
- Azure Managed Disks használata virtuális gépekkel
- Rövid felmérés befejezése a Pythonhoz készült Azure SDK-ról
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: