Ö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
Bu örnekte kullanılan yönetim kitaplıklarını listeleyen bir requirements.txt dosyası oluşturun:
azure-mgmt-resource azure-mgmt-storage azure-identity
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_ID
olan '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.
Kodda kullanılan sınıflar için başvuru bağlantıları
- DefaultAzureCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- StorageManagementClient (azure.mgmt.storage)
4. Betiği çalıştırın
Henüz yapmadıysanız Azure CLI kullanarak Azure'da oturum açın:
az login
Ortam değişkenini
AZURE_SUBSCRIPTION_ID
abonelik kimliğiniz olarak ayarlayın. (az account show komutunu çalıştırabilir ve çıkıştaki özelliğindenid
abonelik kimliğinizi alabilirsiniz:Betiği çalıştırın:
python provision_blob.py
Betiğin tamamlanması bir veya iki dakika sürer.
5: Kaynakları doğrulama
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ı 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:
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.
- Örnek: Azure Depolama'yı kullanma
- Örnek: Kaynak grubu oluşturma
- Örnek: Abonelikteki kaynak gruplarını listeleme
- Örnek: Web uygulaması oluşturma ve kod dağıtma
- Örnek: Veritabanı oluşturma ve sorgulama
- Örnek: Sanal makine oluşturma
- Sanal makinelerle Azure Yönetilen Diskler kullanma
- Python için Azure SDK hakkında kısa bir anket tamamlama