Bagikan melalui


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 menggunakan Azure SDK untuk Python.

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

Autentikasi dalam kode

Kemudian dalam artikel ini, Anda masuk ke Azure 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 harus berjalan dengan sukses tanpa konfigurasi tambahan.

Untuk penerapan kode ini di lingkungan produksi, autentikasi menggunakan prinsipal layanan dengan mengatur variabel lingkungan. Pendekatan ini memungkinkan akses otomatis yang aman tanpa mengandalkan login 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 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 dan juga memilih Tampilkan jenis tersembunyi di grup sumber daya.

    Halaman portal Microsoft Azure untuk grup sumber daya baru, memperlihatkan akun penyimpanan

  2. Pilih akun penyimpanan, lalu pilihKontainer> data di menu sebelah kiri untuk memverifikasi bahwa "blob-container-01" 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

Biarkan sumber daya di tempat jika Anda ingin mengikuti artikel Contoh: Gunakan Azure Storage untuk menggunakan sumber daya ini dalam kode aplikasi. Jika tidak, jalankan perintah az group delete jika Anda tidak perlu menyimpan grup sumber daya dan sumber daya penyimpanan yang dibuat 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 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
#!/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

Lihat juga