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
- Python 3.7 atau yang lebih baru diharuskan untuk menggunakan paket ini.
- Anda memerlukan langganan Azure, dan Penyimpanan Konfigurasi untuk menggunakan paket ini.
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
- Mendapatkan Pengaturan Konfigurasi
- Menghapus Pengaturan Konfigurasi
- Pengaturan Konfigurasi Daftar
- Membuat Rekam Jepret
- Mendapatkan Rekam Jepret
- Mengarsipkan Rekam Jepret
- Memulihkan Rekam Jepret
- Daftar Rekam Jepret
- Mencantumkan Pengaturan Konfigurasi Rekam Jepret
- API asinkron
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:
- Halo dunia / Versi asinkron
- Halo dunia dengan label / Versi asinkron
- Membuat pengaturan konfigurasi baca-saja / Versi asinkron
- Membaca riwayat / revisiVersi asinkron
- Mendapatkan pengaturan jika diubah / Versi asinkron
- Membuat, mengambil, dan memperbarui status rekam jepret / pengaturan konfigurasiVersi asinkron
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.
Azure SDK for Python