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

Bu makalede, Bir Python betiğinde Azure yönetim kitaplıklarını kullanarak Azure Depolama hesabı ve Blob depolama kapsayıcısı içeren bir kaynak grubu oluşturmayı öğreneceksiniz.

Kaynakları oluşturduktan sonra bkz . Örnek: Blob depolama kapsayıcısına dosya yüklemek için Python uygulama kodundaki Azure istemci kitaplıklarını kullanmak için Azure Depolama'yı kullanma.

Bu makaledeki tüm komutlar, not edilmediği sürece Linux/macOS bash ve Windows komut kabuklarında aynı şekilde çalışır.

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:

  • veya seçtiğiniz aracı kullanarak venv bir Python sanal ortamı yapılandırın. Sanal ortamı yerel olarak veya Azure Cloud Shell'de oluşturabilir ve kodu orada çalıştırabilirsiniz. Kullanmaya başlamak için sanal ortamı etkinleştirdiğinizden emin olun.

  • Conda ortamı kullanın.

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

2: Gerekli Azure kitaplık paketlerini yükleme

  1. 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 terminalinizde gereksinimleri yükleyin:

    pip install -r requirements.txt
    

3: Depolama kaynakları oluşturmak için kod yazma

Aşağıdaki kodla provision_blob.py adlı bir Python dosyası oluşturun. Açıklamalar ayrıntıları açıklar. Betik, bir ortam değişkeni AZURE_SUBSCRIPTION_IDolan 'den abonelik kimliğinizi okur. Bu değişkeni sonraki bir adımda ayarlayacaksınız. Kaynak grubu adı, konum, depolama hesabı adı ve kapsayıcı adı kodda sabit olarak tanımlanır.

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}")

Kodda kimlik doğrulaması

Bu makalenin devamında, örnek kodu çalıştırmak için Azure CLI ile Azure'da oturum açarsınız. Hesabınızın Azure aboneliğinizde kaynak grupları ve depolama kaynakları oluşturma izinleri varsa kod başarıyla çalıştırılır.

Bu kodu üretim betiğinde kullanmak için ortam değişkenlerini kimlik doğrulaması için hizmet sorumlusu tabanlı bir yöntem kullanacak şekilde ayarlayabilirsiniz. Daha fazla bilgi edinmek için bkz . Azure hizmetleriyle Python uygulamalarının kimliğini doğrulama. Hizmet sorumlusuna Azure'da uygun bir rol atayarak (örneğin, aboneliğinizdeki Katkıda Bulunan rolü) aboneliğinizde kaynak grupları ve depolama kaynakları oluşturmak için yeterli izinlere sahip olduğundan emin olmanız gerekir.

4. Betiği çalıştırın

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

    az login
    
  2. Ortam değişkenini AZURE_SUBSCRIPTION_ID abonelik kimliğiniz olarak ayarlayın. (az account show komutunu çalıştırabilir ve çıkıştaki özelliğinden id abonelik kimliğinizi alabilirsiniz:

    set AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
    
  3. Betiği çalıştırın:

    python provision_blob.py
    

Betiğin tamamlanması bir veya iki dakika sürer.

5: 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ı kullanmaya yönelik ek bir örnek için Bkz. Python Depolamayı Yönetme örneği.

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

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

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: 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 döndürülmesini sağlar.

az group delete -n PythonAzureExample-Storage-rg  --no-wait

Bir kaynak grubunu koddan silmek için yöntemini de kullanabilirsiniz ResourceManagementClient.resource_groups.begin_delete . Örnek: Kaynak grubu oluşturma içindeki kod kullanımı gösterir.

Ayrıca bkz.