Példa: Azure Storage létrehozása a Pythonhoz készült Azure-kódtárak használatával
Ebből a cikkből megtudhatja, hogyan hozhat létre egy Azure Storage-fiókot és egy Blob Storage-tárolót tartalmazó erőforráscsoportot egy Python-szkriptBen az Azure felügyeleti kódtárainak használatával.
Az erőforrások létrehozása után lásd : Példa: Az Azure Storage használata az Azure-ügyfélkódtárak Python-alkalmazáskódban való használatával fájl feltöltéséhez a Blob Storage-tárolóba.
A cikkben szereplő összes parancs ugyanúgy működik a Linux/macOS bash és a Windows parancshéjakban, hacsak fel nem jegyezzük.
A cikk későbbi részében az egyenértékű Azure CLI-parancsok jelennek meg. Ha inkább az Azure Portalt szeretné használni, olvassa el az Azure Storage-fiók létrehozása és a blobtároló létrehozása című témakört.
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 a kódot. Íme néhány lehetőség:
Python virtuális környezetet konfigurálhat a választott eszközzel vagy használatával
venv
. 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: A szükséges Azure-kódtárcsomagok telepítése
Hozzon létre egy requirements.txt fájlt, amely felsorolja a példában használt felügyeleti kódtárakat:
azure-mgmt-resource azure-mgmt-storage azure-identity
Az aktivált virtuális környezettel rendelkező terminálon telepítse a követelményeket:
pip install -r requirements.txt
3: Kód írása tárerőforrások létrehozásához
Hozzon létre egy provision_blob.py nevű Python-fájlt a következő kóddal. A megjegyzések ismertetik a részleteket. A szkript beolvassa az előfizetés azonosítóját egy környezeti változóból. AZURE_SUBSCRIPTION_ID
Ezt a változót egy későbbi lépésben állíthatja be. Az erőforráscsoport neve, a hely, a tárfiók neve és a tároló neve mind állandóként van definiálva a kódban.
import os, random
# Import the needed management objects from the libraries. The azure.common library
# is installed automatically with the other libraries.
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient
# Acquire a credential object.
credential = DefaultAzureCredential()
# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
# Obtain the management object for resources.
resource_client = ResourceManagementClient(credential, subscription_id)
# Constants we need in multiple places: the resource group name and the region
# in which we provision resources. You can change these values however you want.
RESOURCE_GROUP_NAME = "PythonAzureExample-Storage-rg"
LOCATION = "centralus"
# Step 1: Provision the resource group.
rg_result = resource_client.resource_groups.create_or_update(RESOURCE_GROUP_NAME,
{ "location": LOCATION })
print(f"Provisioned resource group {rg_result.name}")
# For details on the previous code, see Example: Provision a resource group
# at https://docs.microsoft.com/azure/developer/python/azure-sdk-example-resource-group
# Step 2: Provision the storage account, starting with a management object.
storage_client = StorageManagementClient(credential, subscription_id)
STORAGE_ACCOUNT_NAME = f"pythonazurestorage{random.randint(1,100000):05}"
# You can replace the storage account here with any unique name. A random number is used
# by default, but note that the name changes every time you run this script.
# The name must be 3-24 lower case letters and numbers only.
# Check if the account name is available. Storage account names must be unique across
# Azure because they're used in URLs.
availability_result = storage_client.storage_accounts.check_name_availability(
{ "name": STORAGE_ACCOUNT_NAME }
)
if not availability_result.name_available:
print(f"Storage name {STORAGE_ACCOUNT_NAME} is already in use. Try another name.")
exit()
# The name is available, so provision the account
poller = storage_client.storage_accounts.begin_create(RESOURCE_GROUP_NAME, STORAGE_ACCOUNT_NAME,
{
"location" : LOCATION,
"kind": "StorageV2",
"sku": {"name": "Standard_LRS"}
}
)
# Long-running operations return a poller object; calling poller.result()
# waits for completion.
account_result = poller.result()
print(f"Provisioned storage account {account_result.name}")
# Step 3: Retrieve the account's primary access key and generate a connection string.
keys = storage_client.storage_accounts.list_keys(RESOURCE_GROUP_NAME, STORAGE_ACCOUNT_NAME)
print(f"Primary key for storage account: {keys.keys[0].value}")
conn_string = f"DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName={STORAGE_ACCOUNT_NAME};AccountKey={keys.keys[0].value}"
print(f"Connection string: {conn_string}")
# Step 4: Provision the blob container in the account (this call is synchronous)
CONTAINER_NAME = "blob-container-01"
container = storage_client.blob_containers.create(RESOURCE_GROUP_NAME, STORAGE_ACCOUNT_NAME, CONTAINER_NAME, {})
# The fourth argument is a required BlobContainer object, but because we don't need any
# special values there, so we just pass empty JSON.
print(f"Provisioned blob container {container.name}")
Hitelesítés a kódban
A cikk későbbi részében az Azure CLI-vel jelentkezik be az Azure-ba a mintakód futtatásához. Ha a fiókja rendelkezik erőforráscsoportok és tárerőforrások Azure-előfizetésben való létrehozásához szükséges engedélyekkel, a kód sikeresen lefut.
Ha éles szkriptben szeretné használni az ilyen kódot, a környezeti változókat úgy állíthatja be, hogy egyszerű szolgáltatásalapú módszert használjon a hitelesítéshez. További információ: Python-alkalmazások hitelesítése az Azure-szolgáltatásokkal. Gondoskodnia kell arról, hogy a szolgáltatásnév megfelelő engedélyekkel rendelkezzen ahhoz, hogy erőforráscsoportokat és tárolási erőforrásokat hozzon létre az előfizetésében, ha megfelelő szerepkört rendel hozzá az Azure-ban, például az előfizetés közreműködői szerepkörét.
A kódban használt osztályok hivatkozásai
- DefaultAzureCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- StorageManagementClient (azure.mgmt.storage)
4. Futtassa a szkriptet
Ha még nem tette meg, jelentkezzen be az Azure-ba az Azure CLI használatával:
az login
Állítsa be a környezeti változót
AZURE_SUBSCRIPTION_ID
az előfizetés azonosítójához. (Futtathatja az az account show parancsot, és lekérheti az előfizetés azonosítóját aid
kimenetben lévő tulajdonságból):set AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
Futtassa a szkriptet:
python provision_blob.py
A szkript végrehajtása egy-két percet vesz igénybe.
5: Az erőforrások ellenőrzése
Nyissa meg az Azure Portalt annak ellenőrzéséhez, hogy az erőforráscsoport és a tárfiók a várt módon lett-e létrehozva. Előfordulhat, hogy várnia kell egy percet, és válassza a Rejtett típusok megjelenítése lehetőséget az erőforráscsoportban.
Válassza ki a tárfiókot, majd válassza a bal oldali menü Adattárolók> elemét annak ellenőrzéséhez, hogy a "blob-container-01" megjelenik-e:
Ha az alkalmazáskódból szeretné használni ezeket az erőforrásokat, folytassa a következő példával : Azure Storage használata.
Az Azure Storage felügyeleti kódtárának használatára további példát a Python Storage-minta kezelése című témakörben talál.
Hivatkozás: egyenértékű Azure CLI-parancsok
Az alábbi Azure CLI-parancsok ugyanazokat a létrehozási lépéseket hajtják végre, mint a Python-szkript:
rem Provision the resource group
az group create ^
-n PythonAzureExample-Storage-rg ^
-l centralus
rem Provision the storage account
set account=pythonazurestorage%random%
echo Storage account name is %account%
az storage account create ^
-g PythonAzureExample-Storage-rg ^
-l centralus ^
-n %account% ^
--kind StorageV2 ^
--sku Standard_LRS
rem Retrieve the connection string
FOR /F %i IN ('az storage account show-connection-string -g PythonAzureExample-Storage-rg -n %account% --query connectionString') do (SET connstr=%i)
rem Provision the blob container
az storage container create ^
--name blob-container-01 ^
--account-name %account% ^
--connection-string %connstr%
6: Erőforrások törlése
Hagyja a helyén az erőforrásokat, ha a következő cikket szeretné követni: Az Azure Storage használatával ezeket az erőforrásokat alkalmazáskódban használhatja. Ellenkező esetben futtassa az az group delete parancsot, ha nem kell megtartania az ebben a példában létrehozott 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.
Lásd még
- Példa: Az Azure Storage használata
- 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: 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