Python용 Azure App Configuration 클라이언트 라이브러리 - 버전 1.5.0

Azure App Configuration은 개발자가 애플리케이션 구성을 간단하고 안전하게 중앙 집중화하도록 도와주는 관리형 서비스입니다.

일반적으로 최신 프로그램, 특히 클라우드에서 실행되는 프로그램에는 사실상 많은 구성 요소가 분산되어 있습니다. 이러한 구성 요소에 구성 설정이 분산되어 있으면 애플리케이션을 배포하는 동안 오류를 쉽게 해결할 수 없습니다. App Configuration 사용하여 애플리케이션의 모든 설정을 한 곳에 안전하게 저장합니다.

App Configuration 클라이언트 라이브러리를 사용하여 애플리케이션 구성 설정을 만들고 관리합니다.

소스 코드 | 패키지(Pypi) | 패키지(Conda) | API 참조 설명서 | 제품 설명서

고지 사항

Python 2.7에 대한 Azure SDK Python 패키지 지원은 2022년 1월 1일에 종료되었습니다. 자세한 내용과 질문은 이 패키지를 사용하려면 https://github.com/Azure/azure-sdk-for-python/issues/20691Python 3.7 이상을 참조하세요. 자세한 내용은 Python용 Azure SDK 버전 지원 정책을 참조하세요.

시작

패키지 설치

pip를 사용하여 Python용 Azure App Configuration 클라이언트 라이브러리를 설치합니다.

pip install azure-appconfiguration

사전 요구 사항

  • 이 패키지를 사용하려면 Python 3.7 이상이 필요합니다.
  • 이 패키지를 사용하려면 Azure 구독구성 저장소 가 필요합니다.

구성 저장소를 만들려면 Azure Portal 또는 Azure CLI를 사용할 수 있습니다.

그런 다음 구성 저장소를 만듭니다.

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

클라이언트 인증

App Configuration 서비스와 상호 작용하려면 AzureAppConfigurationClient 클래스의 instance 만들어야 합니다. 이를 가능하게 하려면 구성 저장소의 연결 문자열 사용하거나 AAD 토큰을 사용할 수 있습니다.

연결 문자열 사용

자격 증명 가져오기

아래 Azure CLI 코드 조각을 사용하여 구성 저장소에서 연결 문자열 가져옵니다.

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

또는 Azure Portal에서 연결 문자열 가져옵니다.

클라이언트 만들기

연결 문자열 값이 있으면 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)

AAD 토큰 사용

여기서는 DefaultAzureCredential을 사용하여 서비스 주체로 인증하는 방법을 보여 줍니다. 그러나 AzureAppConfigurationClient모든 azure-identity 자격 증명을 허용합니다. 다른 자격 증명에 대한 자세한 내용은 azure-identity 설명서를 참조하세요.

서비스 주체 만들기(선택 사항)

Azure CLI 코드 조각은 새 서비스 주체를 만드는 방법을 보여줍니다. 사용하기 전에 "your-application-name"을 서비스 주체에 대한 적절한 이름으로 바꿉니다.

서비스 주체 만들기:

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

출력:

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

출력을 사용하여 AZURE_CLIENT_ID (위의 "appId"), AZURE_CLIENT_SECRET (위의 "암호") 및 AZURE_TENANT_ID (위의 "테넌트") 환경 변수를 설정합니다. 다음 예제에서는 Bash에서 이 작업을 수행하는 방법을 보여줍니다.

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

해당 App Configuration 역할 중 하나를 서비스 주체에 할당합니다.

클라이언트 만들기

AZURE_CLIENT_ID, AZURE_CLIENT_SECRETAZURE_TENANT_ID 환경 변수가 설정되면 DefaultAzureCredentialAzureAppConfigurationClient를 인증할 수 있습니다.

클라이언트를 생성하려면 구성 저장소의 URL도 필요합니다. 이 URL은 Azure CLI 또는 Azure Portal에서 가져올 수 있습니다. Azure Portal에서 URL을 서비스 "엔드포인트"로 나열할 수 있습니다.

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

credential = DefaultAzureCredential()

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

주요 개념

구성 설정

구성 설정은 구성 저장소 내의 기본 리소스입니다. 가장 간단한 형식으로 키와 값입니다. 그러나 값을 다른 방식으로 해석하거나 연결할 수 있도록 하는 수정 가능한 콘텐츠 형식 및 태그 필드와 같은 추가 속성이 있습니다.

구성 설정의 Label 속성은 구성 설정을 다른 차원으로 구분하는 방법을 제공합니다. 이러한 차원은 사용자 정의이며 모든 형식을 사용할 수 있습니다. 레이블에 사용할 차원의 몇 가지 일반적인 예로는 지역, 의미 체계 버전 또는 환경이 있습니다. 많은 애플리케이션에는 애플리케이션이 서로 다른 차원에 존재할 때 다양한 값을 갖는 필수 구성 키 집합이 있습니다.

예를 들어 MaxRequests는 "NorthAmerica"에서 100, "WestEurope"에서 200일 수 있습니다. "NorthAmerica" 레이블이 있는 MaxRequests라는 구성 설정을 만들고 다른 값만 있는 MaxRequests라는 구성 설정을 "WestEurope" 레이블에서 만들면 애플리케이션은 이러한 두 차원에서 실행되는 구성 설정을 원활하게 검색할 수 있습니다.

구성 설정의 속성:

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

스냅샷

Azure App Configuration 사용하면 사용자가 구성 저장소의 특정 시점 스냅샷 만들어 설정을 하나의 일관된 버전으로 처리할 수 있습니다. 이 기능을 사용하면 애플리케이션이 구성을 일관되게 볼 수 있으므로 업데이트가 수행된 대로 읽기로 인해 개별 설정에 대한 버전 불일치가 없도록 할 수 있습니다. 스냅샷은 변경할 수 없으므로 문제가 발생할 경우 구성을 마지막으로 알려진 양수 구성으로 자신 있게 롤백할 수 있습니다.

예제

다음 섹션에서는 다음을 포함하여 가장 일반적인 구성 서비스 작업 중 일부를 다루는 몇 가지 코드 조각을 제공합니다.

구성 설정 만들기

구성 저장소에 저장할 구성 설정을 만듭니다. 구성 설정을 저장하는 방법에는 두 가지가 있습니다.

  • add_configuration_setting 설정이 저장소에 아직 없는 경우에만 설정을 만듭니다.
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 없는 경우 설정을 만들거나 기존 설정을 재정의합니다.
added_config_setting.value = "new value"
added_config_setting.content_type = "new content type"
updated_config_setting = client.set_configuration_setting(added_config_setting)

구성 설정 가져오기

이전에 저장된 구성 설정을 가져옵니다.

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

구성 설정 삭제

기존 구성 설정을 삭제합니다.

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

구성 설정 나열

label_filter 및/또는 key_filter 필터링된 모든 구성 설정을 나열합니다.

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

스냅샷 만들기

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)

스냅샷 가져오기

received_snapshot = client.get_snapshot(name=snapshot_name)

스냅샷 보관

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

스냅샷 복구

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

스냅샷 나열

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

스냅샷의 구성 설정 나열

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

비동기 API

비동기 클라이언트가 지원됩니다. 비동기 클라이언트 라이브러리를 사용하려면 azure.appconfiguration 대신 azure.appconfiguration.aio 패키지에서 AzureAppConfigurationClient를 가져옵니다.

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)

이 비동기 AzureAppConfigurationClient에는 비동기임을 제외하고 동기화 서명과 동일한 메서드 서명이 있습니다. instance 경우 구성 설정을 비동기적으로 검색하려면 async_client 사용할 수 있습니다.

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

list_configuration_settings 사용하려면 동기적으로 호출하고 반환된 비동기 반복기를 비동기적으로 반복합니다.

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)

문제 해결

다양한 오류 시나리오를 진단하는 방법에 대한 자세한 내용은 문제 해결 가이드 를 참조하세요.

다음 단계

추가 샘플 코드

이 GitHub 리포지토리에서 몇 가지 App Configuration 클라이언트 라이브러리 샘플을 사용할 수 있습니다. 이러한 개체는 다음과 같습니다.

자세한 내용은 샘플 추가 정보를 참조하세요.

참여

이 프로젝트에 대한 기여와 제안을 환영합니다. 대부분의 경우 기여하려면 권한을 부여하며 실제로 기여를 사용할 권한을 당사에 부여한다고 선언하는 CLA(기여자 라이선스 계약)에 동의해야 합니다. 자세한 내용은 https://cla.microsoft.com 을 참조하세요.

끌어오기 요청을 제출하면 CLA-bot은 CLA를 제공하고 PR을 적절하게 데코레이팅해야 하는지 여부를 자동으로 결정합니다(예: 레이블, 설명). 봇에서 제공하는 지침을 따르기만 하면 됩니다. 이 작업은 CLA를 사용하여 모든 리포지토리에서 한 번만 수행하면 됩니다.

이 프로젝트는 Microsoft 오픈 소스 준수 사항을 채택했습니다. 자세한 내용은 준수 사항 FAQ를 참조하거나 opencode@microsoft.com에 추가 질문 또는 의견을 알려주세요.