Aracılığıyla paylaş


Python için Azure Uygulama Yapılandırması istemci kitaplığı - sürüm 1.5.0

Azure Uygulama Yapılandırması, geliştiricilerin uygulama yapılandırmalarını basit ve güvenli bir biçimde merkezileştirmesine yardımcı olan, yönetilen bir hizmettir.

Modern programlar, özellikle bulutta çalışan programlar, genellikle doğada dağıtılan birçok bileşene sahiptir. Yapılandırma ayarlarının bu bileşenlere yayılması, uygulama dağıtımı sırasında sorun gidermenin zorlanmasına neden olabilir. Uygulamanızın tüm ayarlarını tek bir yerde güvenli bir şekilde depolamak için Uygulama Yapılandırması kullanın.

Uygulama yapılandırma ayarlarını oluşturmak ve yönetmek için Uygulama Yapılandırması için istemci kitaplığını kullanın.

Kaynak kodu | Paket (Pypi) | Paket (Conda) | API başvuru belgeleri | Ürün belgeleri

Bildirim

Python 2.7 için Azure SDK Python paketleri desteği 01 Ocak 2022'de sona erdi. Daha fazla bilgi ve soru için lütfen bu paketi kullanmak için https://github.com/Azure/azure-sdk-for-python/issues/20691Python 3.7 veya üzeri gereklidir konusuna bakın. Daha fazla ayrıntı için lütfen Python için Azure SDK sürüm desteği ilkesine bakın.

Başlarken

Paketi yükleme

Pip ile Python için Azure Uygulama Yapılandırması istemci kitaplığını yükleyin:

pip install azure-appconfiguration

Önkoşullar

Yapılandırma Deposu oluşturmak için Azure Portal'ı veya Azure CLI'yı kullanabilirsiniz.

Bundan sonra Yapılandırma Deposu'nı oluşturun:

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

İstemcinin kimliğini doğrulama

Uygulama Yapılandırması hizmetiyle etkileşim kurmak için AzureAppConfigurationClient sınıfının bir örneğini oluşturmanız gerekir. Bunu mümkün kılmak için Yapılandırma Deposu'nun bağlantı dizesi kullanabilir veya bir AAD belirteci kullanabilirsiniz.

bağlantı dizesi kullanma

Kimlik bilgilerini alma

Yapılandırma Deposu'ndan bağlantı dizesi almak için aşağıdaki Azure CLI kod parçacığını kullanın.

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

Alternatif olarak, azure portalından bağlantı dizesi alın.

İstemci oluşturma

bağlantı dizesi değerini aldıktan sonra AzureAppConfigurationClient oluşturabilirsiniz:

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)

AAD belirteci kullanma

Burada, hizmet sorumlusu olarak kimlik doğrulaması yapmak için DefaultAzureCredential'ı kullanmayı göstereceğiz. Ancak AzureAppConfigurationClient tüm azure kimlik bilgilerini kabul eder. Diğer kimlik bilgileri hakkında daha fazla bilgi için azure-identity belgelerine bakın.

Hizmet sorumlusu oluşturma (isteğe bağlı)

Bu Azure CLI kod parçacığında yeni hizmet sorumlusu oluşturma adımları gösterilmektedir. Kullanmadan önce , "your-application-name" yerine hizmet sorumlunuz için uygun adı yazın.

Hizmet sorumlusu oluşturma:

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

Çıkış:

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

AZURE_CLIENT_ID ("yukarıdaki appId" ), AZURE_CLIENT_SECRET ("yukarıdaki parola" ) ve AZURE_TENANT_ID ("yukarıdaki kiracı" ortam değişkenlerini) ayarlamak için çıktıyı kullanın. Aşağıdaki örnekte Bunu Bash'te gerçekleştirmenin bir yolu gösterilmektedir:

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

Hizmet sorumlusuna uygun Uygulama Yapılandırması rollerinden birini atayın.

İstemci oluşturma

AZURE_CLIENT_ID, AZURE_CLIENT_SECRET ve AZURE_TENANT_ID ortam değişkenleri ayarlandıktan sonra DefaultAzureCredential, AzureAppConfigurationClient kimliğini doğrulayabilecektir.

İstemciyi oluşturmak için yapılandırma deponuzun URL'sini de kullanmanız gerekir. Bu URL'yi Azure CLI veya Azure Portal'dan alabilirsiniz. Azure Portal'da URL,"Uç Nokta" hizmeti olarak listelenmiş olarak bulunabilir

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

credential = DefaultAzureCredential()

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

Önemli kavramlar

Yapılandırma Ayarı

Yapılandırma Ayarı, Yapılandırma Deposu içindeki temel kaynaktır. En basit biçimiyle bir anahtar ve değerdir. Ancak, değerin farklı şekillerde yorumlanıp ilişkilendirilmesine izin veren değiştirilebilir içerik türü ve etiket alanları gibi ek özellikler vardır.

Yapılandırma Ayarının Label özelliği, Yapılandırma Ayarlarını farklı boyutlara ayırmanın bir yolunu sağlar. Bu boyutlar kullanıcı tanımlıdır ve herhangi bir formu alabilir. Etiket için kullanılacak bazı yaygın boyutlara örnek olarak bölgeler, anlamsal sürümler veya ortamlar verilebilir. Birçok uygulamada, uygulama farklı boyutlarda mevcut olduğundan değişen değerlere sahip gerekli bir yapılandırma anahtarları kümesi vardır.

Örneğin, MaxRequests "NorthAmerica" içinde 100, "WestEurope" içinde 200 olabilir. "WestEurope" etiketinde maxRequests adlı bir "NorthAmerica" etiketine ve başka bir değere sahip başka bir Yapılandırma Ayarı oluşturarak, bir uygulama bu iki boyutta çalışırken Yapılandırma Ayarlarını sorunsuz bir şekilde alabilir.

Yapılandırma Ayarının Özellikleri:

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

Anlık Görüntü

Azure Uygulama Yapılandırması, kullanıcıların yapılandırma depolarının belirli bir noktaya anlık görüntüsünü oluşturarak ayarları tutarlı bir sürüm olarak değerlendirebilmelerini sağlar. Bu özellik, güncelleştirmeler yapıldıktan sonra okuma nedeniyle tek tek ayarlarda sürüm uyuşmazlığı olmamasını sağlayarak uygulamaların yapılandırmanın tutarlı bir görünümünü tutmasına olanak tanır. Anlık görüntüler sabittir ve bir sorun olması durumunda yapılandırmanın bilinen son iyi yapılandırmaya güvenle geri döndürülmesini sağlar.

Örnekler

Aşağıdaki bölümlerde, en yaygın Yapılandırma Hizmeti görevlerinden bazılarını kapsayan çeşitli kod parçacıkları sağlanır:

Yapılandırma Ayarı Oluşturma

Yapılandırma Deposu'nda depolanacak bir Yapılandırma Ayarı oluşturun. Yapılandırma Ayarını depolamanın iki yolu vardır:

  • add_configuration_setting yalnızca ayar depoda yoksa bir ayar oluşturur.
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 yoksa bir ayar oluşturur veya mevcut bir ayarı geçersiz kılar.
added_config_setting.value = "new value"
added_config_setting.content_type = "new content type"
updated_config_setting = client.set_configuration_setting(added_config_setting)

Yapılandırma Ayarı Alma

Daha önce depolanmış bir Yapılandırma Ayarı alın.

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

Yapılandırma Ayarını Silme

Var olan bir Yapılandırma Ayarını silin.

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

Yapılandırma Ayarlarını Listele

label_filter ve/veya key_filter filtrelenmiş tüm yapılandırma ayarlarını listeleyin.

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

Anlık Görüntü Oluşturma

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)

Anlık Görüntü Alma

received_snapshot = client.get_snapshot(name=snapshot_name)

Anlık Görüntüyü Arşivle

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

Anlık Görüntü Kurtarma

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

Anlık Görüntüleri Listeleme

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

Anlık Görüntünün Yapılandırma Ayarlarını Listeleme

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

Zaman Uyumsuz API'ler

Zaman uyumsuz istemci desteklenir. Zaman uyumsuz istemci kitaplığını kullanmak için azure.appconfiguration yerine azure.appconfiguration.aio paketinden AzureAppConfigurationClient'ı içeri aktarın

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)

Bu zaman uyumsuz AzureAppConfigurationClient, zaman uyumsuz olmaları dışında eşitleme imzalarıyla aynı yöntem imzalarına sahiptir. Örneğin, bir Yapılandırma Ayarını zaman uyumsuz olarak almak için async_client kullanılabilir:

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

list_configuration_settings kullanmak için zaman uyumlu olarak çağırın ve döndürülen zaman uyumsuz yineleyiciyi zaman uyumsuz olarak yineleyin

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)

Sorun giderme

Çeşitli hata senaryolarını tanılama hakkında ayrıntılı bilgi için sorun giderme kılavuzuna bakın.

Sonraki adımlar

Daha fazla örnek kod

Bu GitHub deposunda çeşitli Uygulama Yapılandırması istemci kitaplığı örnekleri sağlanır. Bu modüller şunlardır:

Daha fazla ayrıntı için bkz. BENİOKU örnekleri.

Katkıda bulunma

Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için bkz. https://cla.microsoft.com.

Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.

Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları hakkında SSS bölümüne bakın veya başka soru ya da görüşleriniz olursa opencode@microsoft.com ile iletişime geçin.