Exempel: Skapa Azure Storage med hjälp av Azure-biblioteken för Python
I den här artikeln får du lära dig hur du använder Azure-hanteringsbiblioteken i ett Python-skript för att skapa en resursgrupp som innehåller ett Azure Storage-konto och en Blob Storage-container.
När du har skapat resurserna kan du läsa Exempel: Använd Azure Storage för att använda Azure-klientbiblioteken i Python-programkoden för att ladda upp en fil till Blob Storage-containern.
Alla kommandon i den här artikeln fungerar på samma sätt i Linux/macOS bash- och Windows-kommandogränssnitt om de inte anges.
Motsvarande Azure CLI-kommandon visas senare i den här artikeln. Om du föredrar att använda Azure-portalen kan du läsa Skapa ett Azure Storage-konto och Skapa en blobcontainer.
1: Konfigurera din lokala utvecklingsmiljö
Om du inte redan har gjort det konfigurerar du en miljö där du kan köra koden. Här följer några alternativ:
Konfigurera en virtuell Python-miljö med hjälp av
venv
eller valfritt verktyg. Du kan skapa den virtuella miljön lokalt eller i Azure Cloud Shell och köra koden där. Var noga med att aktivera den virtuella miljön för att börja använda den.Använd en conda-miljö.
Använd en Dev-container i Visual Studio Code eller GitHub Codespaces.
2: Installera nödvändiga Azure-bibliotekspaket
Skapa en requirements.txt fil som visar de hanteringsbibliotek som används i det här exemplet:
azure-mgmt-resource azure-mgmt-storage azure-identity
Installera kraven i terminalen med den virtuella miljön aktiverad:
pip install -r requirements.txt
3: Skriva kod för att skapa lagringsresurser
Skapa en Python-fil med namnet provision_blob.py med följande kod. Kommentarerna förklarar informationen. Skriptet läser ditt prenumerations-ID från en miljövariabel, AZURE_SUBSCRIPTION_ID
. Du anger den här variabeln i ett senare steg. Resursgruppens namn, plats, lagringskontonamn och containernamn definieras alla som konstanter i koden.
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}")
Autentisering i koden
Senare i den här artikeln loggar du in på Azure med Azure CLI för att köra exempelkoden. Om ditt konto har behörighet att skapa resursgrupper och lagringsresurser i din Azure-prenumeration körs koden.
Om du vill använda sådan kod i ett produktionsskript kan du ange miljövariabler så att de använder en tjänsthuvudnamnsbaserad metod för autentisering. Mer information finns i Autentisera Python-appar med Azure-tjänster. Du måste se till att tjänstens huvudnamn har tillräcklig behörighet för att skapa resursgrupper och lagringsresurser i din prenumeration genom att tilldela den en lämplig roll i Azure, till exempel rollen Deltagare i din prenumeration.
Referenslänkar för klasser som används i koden
- DefaultAzureCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- StorageManagementClient (azure.mgmt.storage)
4. Kör skriptet
Om du inte redan har gjort det loggar du in på Azure med Hjälp av Azure CLI:
az login
AZURE_SUBSCRIPTION_ID
Ange miljövariabeln till ditt prenumerations-ID. (Du kan köra kommandot az account show och hämta ditt prenumerations-ID frånid
egenskapen i utdata):set AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
Kör skriptet:
python provision_blob.py
Skriptet tar en minut eller två att slutföra.
5: Verifiera resurserna
Öppna Azure-portalen för att kontrollera att resursgruppen och lagringskontot har skapats som förväntat. Du kan behöva vänta en minut och även välja Visa dolda typer i resursgruppen.
Välj lagringskontot och välj sedan Datalagringscontainrar> på den vänstra menyn för att kontrollera att "blob-container-01" visas:
Om du vill prova att använda dessa resurser från programkoden fortsätter du med Exempel: Använd Azure Storage.
Ett ytterligare exempel på hur du använder Azure Storage-hanteringsbiblioteket finns i Hantera Python Storage-exempel.
Som referens: motsvarande Azure CLI-kommandon
Följande Azure CLI-kommandon utför samma skapandesteg som Python-skriptet:
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: Rensa resurser
Låt resurserna vara kvar om du vill följa artikeln Exempel: Använd Azure Storage för att använda dessa resurser i appkoden. Annars kör du kommandot az group delete om du inte behöver behålla resursgruppen och lagringsresurserna som skapats i det här exemplet.
Resursgrupper medför inga löpande avgifter i din prenumeration, men resurser, till exempel lagringskonton, i resursgruppen kan medföra avgifter. Det är en bra idé att rensa alla grupper som du inte aktivt använder. Argumentet --no-wait
gör att kommandot kan returneras omedelbart i stället för att vänta på att åtgärden ska slutföras.
az group delete -n PythonAzureExample-Storage-rg --no-wait
Du kan också använda ResourceManagementClient.resource_groups.begin_delete
metoden för att ta bort en resursgrupp från koden. Koden i Exempel: Skapa en resursgrupp visar användning.
Se även
- Exempel: Använda Azure Storage
- Exempel: Skapa en resursgrupp
- Exempel: Lista resursgrupper i en prenumeration
- Exempel: Skapa en webbapp och distribuera kod
- Exempel: Skapa och fråga en databas
- Exempel: Skapa en virtuell dator
- Använda Azure Managed Disks med virtuella datorer
- Slutför en kort undersökning om Azure SDK för Python