Contoh: Membuat Azure Storage menggunakan pustaka Azure untuk Python

Dalam artikel ini, Anda mempelajari cara menggunakan pustaka manajemen Azure untuk Python untuk membuat grup sumber daya, bersama dengan akun Azure Storage dan kontainer penyimpanan Blob.

Setelah menyediakan sumber daya ini, lihat bagian Contoh: Gunakan Azure Storage untuk melihat cara menggunakan pustaka klien Azure di Python untuk mengunggah file ke kontainer Blob.

Perintah Azure CLI yang setara untuk bash dan PowerShell dicantumkan nanti di artikel ini. Jika Anda lebih suka menggunakan portal Microsoft Azure, lihat Membuat akun penyimpanan Azure dan Membuat kontainer blob.

1: Menyiapkan lingkungan pengembangan lokal Anda

Jika Anda belum melakukannya, siapkan lingkungan tempat Anda dapat menjalankan kode. Berikut adalah beberapa opsi:

  • Konfigurasikan lingkungan virtual Python menggunakan venv atau alat pilihan Anda. Untuk mulai menggunakan lingkungan virtual, pastikan untuk mengaktifkannya. Untuk menginstal python, lihat Menginstal Python.

    #!/bin/bash
    # Create a virtual environment
    python -m venv .venv
    # Activate the virtual environment
    source .venv/Scripts/activate # only required for Windows (Git Bash)
    
  • Gunakan lingkungan conda. Untuk menginstal Conda, lihat Menginstal Miniconda.

  • Gunakan Kontainer Dev di Visual Studio Code atau GitHub Codespaces.

2: Menginstal paket pustaka Azure yang diperlukan

  1. Di konsol Anda, buat file requirements.txt yang mencantumkan pustaka manajemen yang digunakan dalam contoh ini:

    azure-mgmt-resource
    azure-mgmt-storage
    azure-identity
    
  2. Di konsol Anda dengan lingkungan virtual diaktifkan, instal persyaratan:

    pip install -r requirements.txt
    

3. Atur variabel lingkungan

Dalam langkah ini, Anda mengatur variabel lingkungan untuk digunakan dalam kode dalam artikel ini. Kode menggunakan os.environ metode untuk mengambil nilai.

#!/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: Menulis kode untuk membuat akun penyimpanan dan kontainer blob

Dalam langkah ini, Anda membuat file Python bernama provision_blob.py dengan kode berikut. Skrip Python ini menggunakan Azure SDK untuk pustaka manajemen Python untuk membuat grup sumber daya, akun Azure Storage, dan kontainer Blob.

import os

# Import the needed credential and management objects from the 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: Create a resource group:
# https://learn.microsoft.com/azure/developer/python/sdk/examples/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, "type": "Microsoft.Storage/storageAccounts" }
)

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("Retrieved the primary key for the storage account")

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

Autentikasi dalam kode

Kemudian dalam artikel ini, Anda masuk ke Azure dengan menggunakan Azure CLI untuk menjalankan kode sampel. Jika akun Anda memiliki izin yang memadai untuk membuat grup sumber daya dan sumber daya penyimpanan di langganan Azure Anda, skrip berhasil berjalan tanpa konfigurasi tambahan.

Untuk menggunakan kode ini di lingkungan produksi, autentikasi dengan menggunakan perwakilan layanan dan atur variabel lingkungan. Pendekatan ini memungkinkan akses otomatis yang aman tanpa mengandalkan masuk interaktif. Untuk panduan terperinci, lihat Cara mengautentikasi aplikasi Python dengan layanan Azure.

Pastikan bahwa perwakilan layanan diberi peran dengan izin yang memadai untuk membuat grup sumber daya dan akun penyimpanan. Misalnya, menetapkan peran Kontributor di tingkat langganan menyediakan akses yang diperlukan. Untuk mempelajari selengkapnya tentang penetapan peran, lihat Kontrol akses berbasis peran (RBAC) di Azure.

5. Jalankan skrip

  1. Jika Anda belum melakukannya, masuk ke Azure dengan menggunakan Azure CLI:

    az login
    

  2. Jalankan skrip:

    python provision_blob.py
    

    Skrip membutuhkan waktu satu atau dua menit untuk diselesaikan.

6: Memverifikasi sumber daya

  1. Buka portal Microsoft Azure untuk memverifikasi bahwa grup sumber daya dan akun penyimpanan dibuat seperti yang diharapkan. Anda mungkin perlu menunggu sebentar lalu merefresh tampilan grup sumber daya.

  2. Pilih akun penyimpanan, lalu pilihKontainer> data di menu sebelah kiri untuk memverifikasi bahwa kontainer yang Anda buat muncul:

    Halaman portal Microsoft Azure untuk akun penyimpanan yang memperlihatkan kontainer blob

  3. Jika Anda ingin mencoba menggunakan sumber daya ini dari kode aplikasi, lanjutkan dengan Contoh: Gunakan Azure Storage.

Untuk contoh lain menggunakan pustaka manajemen Azure Storage, lihat sampel Kelola Python Storage.

7: Membersihkan sumber daya

Jika Anda ingin menggunakan sumber daya ini dalam kode aplikasi, ikuti artikel Example: Gunakan Azure Storage. Jika tidak, jalankan perintah az group delete jika Anda tidak perlu menyimpan grup sumber daya dan sumber daya penyimpanan yang Anda buat dalam contoh ini.

Grup sumber daya tidak dikenakan biaya berkelanjutan dalam langganan Anda, tetapi sumber daya, seperti akun penyimpanan, dalam grup sumber daya mungkin dikenakan biaya. Ini adalah praktik yang baik untuk membersihkan grup sumber daya apa pun yang tidak Anda gunakan secara aktif. Argumen --no-wait memungkinkan perintah untuk segera kembali alih-alih menunggu operasi selesai.

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

Untuk referensi: perintah Azure CLI yang setara

Perintah Azure CLI berikut menyelesaikan langkah-langkah pembuatan yang sama dengan skrip Python:

#!/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 \
    --resource-group "$AZURE_RESOURCE_GROUP_NAME" \
    --location "$LOCATION" \
    --name "$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 \
    --resource-group "$AZURE_RESOURCE_GROUP_NAME" \
    --name "$STORAGE_ACCOUNT_NAME" \
    --query connectionString \
    --output tsv)

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

Lihat juga