Aracılığıyla paylaş


Örnek: Python için Azure kitaplıklarını kullanarak Azure Depolama oluşturma

Bu makalede, Azure Depolama hesabı ve Blob depolama kapsayıcısı ile birlikte bir kaynak grubu oluşturmak üzere Python için Azure yönetim kitaplıklarını kullanmayı öğreneceksiniz.

Bu kaynakları sağladıktan sonra Örnek: Blob kapsayıcısına dosya yüklemek için Python'daki Azure istemci kitaplıklarının nasıl kullanılacağını görmek için Azure Depolama'yı kullanma bölümüne bakın.

Bash ve PowerShell için Eşdeğer Azure CLI komutları bu makalenin devamında listelenmiştir. Azure portalını kullanmayı tercih ediyorsanız bkz. Azure depolama hesabı oluşturma ve Blob kapsayıcısı oluşturma.

1: Yerel geliştirme ortamınızı ayarlama

Henüz yapmadıysanız kodu çalıştırabileceğiniz bir ortam ayarlayın. Aşağıda bazı seçenekleri görebilirsiniz:

  • venv veya seçtiğiniz aracı kullanarak bir Python sanal ortamı yapılandırın. Sanal ortamı kullanmaya başlamak için etkinleştirmeyi unutmayın. Python'ı yüklemek için bkz. Python'ı yükleme.

    #!/bin/bash
    # Create a virtual environment
    python -m venv .venv
    # Activate the virtual environment
    source .venv/Scripts/activate # only required for Windows (Git Bash)
    
  • Conda ortamı kullanın. Conda'yı yüklemek için bkz. Miniconda'yı yükleme.

  • Visual Studio Code veya GitHub Codespaces'taGeliştirme Kapsayıcısı kullanın.

2: Gerekli Azure kitaplık paketlerini yükleme

  1. Konsolunuzda, bu örnekte kullanılan yönetim kitaplıklarını listeleyen bir requirements.txt dosyası oluşturun:

    azure-mgmt-resource
    azure-mgmt-storage
    azure-identity
    
  2. Sanal ortamın etkinleştirildiği konsolunuzda gereksinimleri yükleyin:

    pip install -r requirements.txt
    

3. Ortam değişkenlerini ayarlama

Bu adımda, bu makaledeki kodda kullanılacak ortam değişkenlerini ayarlarsınız. Kod, değerleri almak için yöntemini kullanır os.environ .

#!/bin/bash
export AZURE_RESOURCE_GROUP_NAME=<ResourceGroupName> # Change to your preferred resource group name
export LOCATION=<Location> # Change to your preferred region
export AZURE_SUBSCRIPTION_ID=$(az account show --query id --output tsv)
export STORAGE_ACCOUNT_NAME=<StorageAccountName> # Change to your preferred storage account name
export CONTAINER_NAME=<ContainerName> # Change to your preferred container name

4: Depolama hesabı ve blob kapsayıcısı oluşturmak için kod yazma

Bu adımda, aşağıdaki kodla provision_blob.py adlı bir Python dosyası oluşturursunuz. Bu Python betiği, Python için Azure SDK yönetim kitaplıklarını kullanarak bir kaynak grubu, Azure Depolama hesabı ve Blob kapsayıcı oluşturur.

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
from azure.mgmt.storage.models import BlobContainer

# Acquire a credential object.
credential = DefaultAzureCredential()

# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

# Retrieve resource group name and location from environment variables
RESOURCE_GROUP_NAME = os.environ["AZURE_RESOURCE_GROUP_NAME"]
LOCATION = os.environ["LOCATION"]

# Step 1: Provision the resource group.
resource_client = ResourceManagementClient(credential, subscription_id)

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 = os.environ["STORAGE_ACCOUNT_NAME"] 

# 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 = os.environ["CONTAINER_NAME"]
container = storage_client.blob_containers.create(RESOURCE_GROUP_NAME, STORAGE_ACCOUNT_NAME, CONTAINER_NAME, BlobContainer())

print(f"Provisioned blob container {container.name}")

Kodda kimlik doğrulaması

Bu makalenin devamında, örnek kodu yürütmek için Azure CLI kullanarak Azure'da oturum açarsınız. Hesabınız Azure aboneliğinizde kaynak grupları ve depolama kaynakları oluşturmak için yeterli izinlere sahipse, betik ek yapılandırma olmadan başarıyla çalıştırılmalıdır.

Bu kodu üretim ortamında kullanmak için, ortam değişkenlerini ayarlayarak hizmet sorumlusu kullanarak kimlik doğrulaması oluşturun. Bu yaklaşım, etkileşimli oturum açma bilgilerine bağlı kalmadan güvenli, otomatik erişim sağlar. Ayrıntılı yönergeler için bkz. Azure hizmetleriyle Python uygulamalarının kimliğini doğrulama.

Hizmet sorumlusuna kaynak grupları ve depolama hesapları oluşturmak için yeterli izinlere sahip bir rol atandığından emin olun. Örneğin, Abonelik düzeyinde Katkıda Bulunan rolü atamak gerekli erişimi sağlar. Rol atamaları hakkında daha fazla bilgi edinmek için bkz. Azure'da rol tabanlı erişim denetimi (RBAC).

5. Betiği çalıştır

  1. Henüz yapmadıysanız Azure CLI kullanarak Azure'da oturum açın:

    az login
    

  2. Betiği Çalıştırın:

    python provision_blob.py
    

    Komut dosyasının tamamlanması bir veya iki dakika sürer.

6: Kaynakları doğrulama

  1. Kaynak grubunun ve depolama hesabının beklendiği gibi oluşturulduğunu doğrulamak için Azure portalını açın. Bir dakika beklemeniz ve ayrıca Kaynak grubunda gizli türleri göster'i seçmeniz gerekebilir.

    Depolama hesabını gösteren yeni kaynak grubu için Azure portal sayfası

  2. Depolama hesabını seçin ve ardından sol taraftaki menüden Veri depolama>Kapsayıcıları'nı seçerek "blob-container-01" öğesinin göründüğünü doğrulayın:

    Blob kapsayıcısını gösteren depolama hesabının Azure portal sayfası

  3. Bu kaynakları uygulama kodundan kullanmayı denemek istiyorsanız Örnek: Azure Depolama'yı kullanma ile devam edin.

Azure Depolama yönetim kitaplığını kullanmanın başka bir örneği için bkz. Python Depolamayı Yönetme örneği.

7: Kaynakları temizleme

Örnek: Bu kaynakları uygulama kodunda kullanmak için Azure Depolama'yı kullanma makalesini izlemek istiyorsanız kaynakları yerinde bırakın. Aksi takdirde, bu örnekte oluşturulan kaynak grubunu ve depolama kaynaklarını tutmanız gerekmiyorsa az group delete komutunu çalıştırın.

Kaynak grupları aboneliğinizde devam eden ücret ödemez, ancak kaynak grubundaki depolama hesapları gibi kaynaklar ücrete tabi olabilir. Etkin olarak kullanmadığınız tüm grupları temizlemek iyi bir uygulamadır. --no-wait bağımsız değişkeni, işlemin bitmesini beklemek yerine komutun hemen geri dönmesini sağlar.

#!/bin/bash
az group delete -n $AZURE_RESOURCE_GROUP_NAME --no-wait

Referans için: eşdeğer Azure CLI komutları

Aşağıdaki Azure CLI komutları, Python betiğiyle aynı oluşturma adımlarını tamamlar:

#!/bin/bash
#!/bin/bash

# Set variables
export LOCATION=<Location> # Change to your preferred region
export AZURE_RESOURCE_GROUP_NAME=<ResourceGroupName> # Change to your preferred resource group name
export STORAGE_ACCOUNT_NAME=<StorageAccountName> # Change to your preferred storage account name
export CONTAINER_NAME=<ContainerName> # Change to your preferred container name

# Provision the resource group
echo "Creating resource group: $AZURE_RESOURCE_GROUP_NAME"
az group create \
    --location "$LOCATION" \
    --name "$AZURE_RESOURCE_GROUP_NAME"

# Provision the storage account
az storage account create -g $AZURE_RESOURCE_GROUP_NAME -l $LOCATION -n $STORAGE ACCOUNT_NAME --kind StorageV2 --sku Standard_LRS

echo Storage account name is $STORAGE_ACCOUNT_NAME

# Retrieve the connection string
CONNECTION_STRING=$(az storage account show-connection-string -g $AZURE_RESOURCE_GROUP_NAME -n $STORAGE_ACCOUNT_NAME --query connectionString)

# Provision the blob container
az storage container create --name $CONTAINER_NAME --account-name $STORAGE_ACCOUNT_NAME --connection-string $CONNECTION_STRING

Ayrıca bakınız