Bagikan melalui


Azure App Configuration pustaka klien untuk Python - versi 1.5.0

Azure App Configuration adalah layanan terkelola yang membantu pengembang mempusatkan konfigurasi aplikasi mereka secara sederhana dan aman.

Program modern, khususnya program yang berjalan di cloud, pada dasarnya memiliki banyak komponen yang didistribusikan. Pembagian pengaturan konfigurasi di seluruh komponen ini dapat menyebabkan kesalahan yang sulit dipecahkan selama penyebaran aplikasi. Gunakan App Configuration untuk menyimpan semua pengaturan untuk aplikasi Anda dengan aman di satu tempat.

Gunakan pustaka klien untuk App Configuration membuat dan mengelola pengaturan konfigurasi aplikasi.

Kode sumber | Paket (Pypi) | Paket (Conda) | Dokumentasi | referensi APIDokumentasi produk

Pengelakan

Dukungan paket Azure SDK Python untuk Python 2.7 telah berakhir 01 Januari 2022. Untuk informasi dan pertanyaan lebih lanjut, silakan merujuk ke https://github.com/Azure/azure-sdk-for-python/issues/20691Python 3.7 atau yang lebih baru diperlukan untuk menggunakan paket ini. Untuk detail selengkapnya, silakan lihat kebijakan dukungan versi Azure SDK for Python.

Memulai

Menginstal paket

Instal pustaka klien Azure App Configuration untuk Python dengan pip:

pip install azure-appconfiguration

Prasyarat

Untuk membuat Penyimpanan Konfigurasi, Anda dapat menggunakan Portal Microsoft Azure atau Azure CLI.

Setelah itu, buat Penyimpanan Konfigurasi:

az appconfig create --name <config-store-name> --resource-group <resource-group-name> --location eastus

Mengautentikasi klien

Untuk berinteraksi dengan layanan App Configuration, Anda harus membuat instans kelas AzureAppConfigurationClient. Untuk memungkinkannya, Anda dapat menggunakan string koneksi Penyimpanan Konfigurasi atau menggunakan token AAD.

Gunakan string koneksi

Mendapatkan kredensial

Gunakan cuplikan Azure CLI di bawah ini untuk mendapatkan string koneksi dari Penyimpanan Konfigurasi.

az appconfig credential list --name <config-store-name>

Atau, dapatkan string koneksi dari Portal Microsoft Azure.

Membuat klien

Setelah Anda memiliki nilai string koneksi, Anda dapat membuat AzureAppConfigurationClient:

import os
from azure.appconfiguration import AzureAppConfigurationClient

CONNECTION_STRING = os.environ["APPCONFIGURATION_CONNECTION_STRING"]

# Create app config client
client = AzureAppConfigurationClient.from_connection_string(CONNECTION_STRING)

Menggunakan token AAD

Di sini kami menunjukkan menggunakan DefaultAzureCredential untuk mengautentikasi sebagai perwakilan layanan. Namun, AzureAppConfigurationClient menerima kredensial identitas azure apa pun. Lihat dokumentasi azure-identity untuk informasi selengkapnya tentang kredensial lainnya.

Membuat perwakilan layanan (opsional)

Cuplikan Azure CLI ini menunjukkan cara membuat perwakilan layanan baru. Sebelum menggunakannya, ganti "your-application-name" dengan nama yang sesuai untuk perwakilan layanan Anda.

Buat perwakilan layanan:

az ad sp create-for-rbac --name http://my-application --skip-assignment

Output:

{
    "appId": "generated app id",
    "displayName": "my-application",
    "name": "http://my-application",
    "password": "random password",
    "tenant": "tenant id"
}

Gunakan output untuk mengatur variabel lingkungan AZURE_CLIENT_ID ("appId" di atas), AZURE_CLIENT_SECRET ("kata sandi" di atas) dan AZURE_TENANT_ID ("penyewa" di atas). Contoh berikut menunjukkan cara untuk melakukan ini di Bash:

export AZURE_CLIENT_ID="generated app id"
export AZURE_CLIENT_SECRET="random password"
export AZURE_TENANT_ID="tenant id"

Tetapkan salah satu peran App Configuration yang berlaku untuk perwakilan layanan.

Membuat klien

Setelah variabel lingkungan AZURE_CLIENT_ID, AZURE_CLIENT_SECRET , dan AZURE_TENANT_ID diatur, DefaultAzureCredential akan dapat mengautentikasi AzureAppConfigurationClient.

Membuat klien juga memerlukan URL penyimpanan konfigurasi Anda, yang bisa Anda dapatkan dari Azure CLI atau Portal Microsoft Azure. Di Portal Microsoft Azure, URL dapat ditemukan tercantum sebagai layanan "Titik Akhir"

from azure.identity import DefaultAzureCredential
from azure.appconfiguration import AzureAppConfigurationClient

credential = DefaultAzureCredential()

client = AzureAppConfigurationClient(base_url="your_endpoint_url", credential=credential)

Konsep utama

Pengaturan Konfigurasi

Pengaturan Konfigurasi adalah sumber daya mendasar dalam Penyimpanan Konfigurasi. Dalam bentuk yang paling sederhana itu adalah kunci dan nilai. Namun, ada properti tambahan seperti jenis konten yang dapat dimodifikasi dan bidang tag yang memungkinkan nilai ditafsirkan atau dikaitkan dengan cara yang berbeda.

Properti Label dari Pengaturan Konfigurasi menyediakan cara untuk memisahkan Pengaturan Konfigurasi ke dalam dimensi yang berbeda. Dimensi ini ditentukan pengguna dan dapat mengambil bentuk apa pun. Beberapa contoh umum dimensi yang digunakan untuk label termasuk wilayah, versi semantik, atau lingkungan. Banyak aplikasi memiliki sekumpulan kunci konfigurasi yang diperlukan yang memiliki nilai yang bervariasi karena aplikasi ada di berbagai dimensi.

Misalnya, MaxRequests mungkin 100 di "NorthAmerica", dan 200 di "WestEurope". Dengan membuat Pengaturan Konfigurasi bernama MaxRequests dengan label "NorthAmerica" dan yang lain, hanya dengan nilai yang berbeda, di label "WestEurope", aplikasi dapat mengambil Pengaturan Konfigurasi dengan mulus saat berjalan di dua dimensi ini.

Properti Pengaturan Konfigurasi:

key : str
label : str
content_type : str
value : str
last_modified : str
read_only : bool
tags : dict
etag : str

Snapshot

Azure App Configuration memungkinkan pengguna untuk membuat rekam jepret titik waktu penyimpanan konfigurasi mereka, memberi mereka kemampuan untuk memperlakukan pengaturan sebagai satu versi yang konsisten. Fitur ini memungkinkan aplikasi untuk menyimpan tampilan konfigurasi yang konsisten, memastikan bahwa tidak ada ketidakcocokan versi pada pengaturan individual karena membaca saat pembaruan dibuat. Rekam jepret tidak dapat diubah, memastikan bahwa konfigurasi dapat dengan yakin digulirkan kembali ke konfigurasi terakhir yang diketahui baik jika terjadi masalah.

Contoh

Bagian berikut ini menyediakan beberapa cuplikan kode yang mencakup beberapa tugas Configuration Service yang paling umum, termasuk:

Membuat Pengaturan Konfigurasi

Buat Pengaturan Konfigurasi yang akan disimpan di Penyimpanan Konfigurasi. Ada dua cara untuk menyimpan Pengaturan Konfigurasi:

  • add_configuration_setting membuat pengaturan hanya jika pengaturan belum ada di penyimpanan.
config_setting = ConfigurationSetting(
    key="MyKey", label="MyLabel", value="my value", content_type="my content type", tags={"my tag": "my tag value"}
)
added_config_setting = client.add_configuration_setting(config_setting)
  • set_configuration_setting membuat pengaturan jika tidak ada atau mengambil alih pengaturan yang sudah ada.
added_config_setting.value = "new value"
added_config_setting.content_type = "new content type"
updated_config_setting = client.set_configuration_setting(added_config_setting)

Mendapatkan Pengaturan Konfigurasi

Dapatkan Pengaturan Konfigurasi yang disimpan sebelumnya.

fetched_config_setting = client.get_configuration_setting(key="MyKey", label="MyLabel")

Menghapus Pengaturan Konfigurasi

Menghapus Pengaturan Konfigurasi yang sudah ada.

client.delete_configuration_setting(
    key="MyKey",
    label="MyLabel",
)

Pengaturan Konfigurasi Daftar

Cantumkan semua pengaturan konfigurasi yang difilter dengan label_filter dan/atau key_filter.

config_settings = client.list_configuration_settings(label_filter="MyLabel")
for item in config_settings:
    print_configuration_setting(item)

Membuat Rekam Jepret

from azure.appconfiguration import ConfigurationSettingsFilter

filters = [ConfigurationSettingsFilter(key="my_key1", label="my_label1")]
response = client.begin_create_snapshot(name=snapshot_name, filters=filters)
created_snapshot = response.result()
print_snapshot(created_snapshot)

Mendapatkan Rekam Jepret

received_snapshot = client.get_snapshot(name=snapshot_name)

Mengarsipkan Rekam Jepret

archived_snapshot = client.archive_snapshot(name=snapshot_name)
print_snapshot(archived_snapshot)

Memulihkan Rekam Jepret

recovered_snapshot = client.recover_snapshot(name=snapshot_name)
print_snapshot(recovered_snapshot)

Daftar Rekam Jepret

for snapshot in client.list_snapshots():
    print_snapshot(snapshot)

Mencantumkan Pengaturan Konfigurasi Rekam Jepret

for config_setting in client.list_configuration_settings(snapshot_name=snapshot_name):
    print_configuration_setting(config_setting)

API asinkron

Klien asinkron didukung. Untuk menggunakan pustaka klien asinkron, impor AzureAppConfigurationClient dari paket azure.appconfiguration.aio alih-alih azure.appconfiguration

import os
from azure.appconfiguration.aio import AzureAppConfigurationClient

CONNECTION_STRING = os.environ["APPCONFIGURATION_CONNECTION_STRING"]

# Create app config client
client = AzureAppConfigurationClient.from_connection_string(CONNECTION_STRING)

Asinkron AzureAppConfigurationClient ini memiliki tanda tangan metode yang sama dengan yang disinkronkan kecuali asinkron. Misalnya, untuk mengambil Pengaturan Konfigurasi secara asinkron, async_client dapat digunakan:

fetched_config_setting = await client.get_configuration_setting(key="MyKey", label="MyLabel")

Untuk menggunakan list_configuration_settings, panggil secara sinkron dan iterasi melalui iterator asinkron yang dikembalikan secara asinkron

config_settings = client.list_configuration_settings(label_filter="MyLabel")
async for item in config_settings:
    print_configuration_setting(item)
from azure.appconfiguration import ConfigurationSettingsFilter

filters = [ConfigurationSettingsFilter(key="my_key1", label="my_label1")]
response = await client.begin_create_snapshot(name=snapshot_name, filters=filters)
created_snapshot = await response.result()
print_snapshot(created_snapshot)
received_snapshot = await client.get_snapshot(name=snapshot_name)
archived_snapshot = await client.archive_snapshot(name=snapshot_name)
print_snapshot(archived_snapshot)
recovered_snapshot = await client.recover_snapshot(name=snapshot_name)
print_snapshot(recovered_snapshot)
async for snapshot in client.list_snapshots():
    print_snapshot(snapshot)
async for config_setting in client.list_configuration_settings(snapshot_name=snapshot_name):
    print_configuration_setting(config_setting)

Pemecahan Masalah

Lihat panduan pemecahan masalah untuk detail tentang cara mendiagnosis berbagai skenario kegagalan.

Langkah berikutnya

Lebih banyak kode sampel

Beberapa sampel pustaka klien App Configuration tersedia untuk Anda di repositori GitHub ini. Ini termasuk:

Untuk detail selengkapnya, lihat sampel README.

Berkontribusi

Proyek ini menyambut baik kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi https://cla.microsoft.com.

Ketika Anda mengirimkan permintaan tarik, CLA-bot akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghias PR dengan tepat (misalnya, label, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di semua repos menggunakan CLA kami.

Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat FAQ Kode Etik atau hubungi opencode@microsoft.com untuk mengajukan pertanyaan atau komentar tambahan.