
关于
Azure App Configuration Python SDK。用于集中式配置管理、功能标志和动态设置。
name: azure-appconfiguration-py description: 用于 Python 的 Azure App Configuration SDK。用于集中式配置管理、功能标志和动态设置。 risk: unknown source: community date_added: '2026-02-27'
用于 Python 的 Azure App Configuration SDK
具有功能标志和动态设置的集中式配置管理。
安装
pip install azure-appconfiguration
环境变量
AZURE_APPCONFIGURATION_CONNECTION_STRING=Endpoint=https://<name>.azconfig.io;Id=...;Secret=...
# Or for Entra ID:
AZURE_APPCONFIGURATION_ENDPOINT=https://<name>.azconfig.io
认证
连接字符串
from azure.appconfiguration import AzureAppConfigurationClient
client = AzureAppConfigurationClient.from_connection_string(
os.environ["AZURE_APPCONFIGURATION_CONNECTION_STRING"]
)
Entra ID
from azure.appconfiguration import AzureAppConfigurationClient
from azure.identity import DefaultAzureCredential
client = AzureAppConfigurationClient(
base_url=os.environ["AZURE_APPCONFIGURATION_ENDPOINT"],
credential=DefaultAzureCredential()
)
配置设置
获取设置
setting = client.get_configuration_setting(key="app:settings:message")
print(f"{setting.key} = {setting.value}")
带标签获取
# Labels allow environment-specific values
setting = client.get_configuration_setting(
key="app:settings:message",
label="production"
)
设置配置
from azure.appconfiguration import ConfigurationSetting
setting = ConfigurationSetting(
key="app:settings:message",
value="Hello, World!",
label="development",
content_type="text/plain",
tags={"environment": "dev"}
)
client.set_configuration_setting(setting)
删除设置
client.delete_configuration_setting(
key="app:settings:message",
label="development"
)
列出设置
所有设置
settings = client.list_configuration_settings()
for setting in settings:
print(f"{setting.key} [{setting.label}] = {setting.value}")
按键前缀过滤
settings = client.list_configuration_settings(
key_filter="app:settings:*"
)
按标签过滤
settings = client.list_configuration_settings(
label_filter="production"
)
功能标志
设置功能标志
from azure.appconfiguration import ConfigurationSetting
import json
feature_flag = ConfigurationSetting(
key=".appconfig.featureflag/beta-feature",
value=json.dumps({
"id": "beta-feature",
"enabled": True,
"conditions": {
"client_filters": []
}
}),
content_type="application/vnd.microsoft.appconfig.ff+json;charset=utf-8"
)
client.set_configuration_setting(feature_flag)
获取功能标志
setting = client.get_configuration_setting(
key=".appconfig.featureflag/beta-feature"
)
flag_data = json.loads(setting.value)
print(f"Feature enabled: {flag_data['enabled']}")
列出功能标志
flags = client.list_configuration_settings(
key_filter=".appconfig.featureflag/*"
)
for flag in flags:
data = json.loads(flag.value)
print(f"{data['id']}: {'enabled' if data['enabled'] else 'disabled'}")
只读设置
# Make setting read-only
client.set_read_only(
configuration_setting=setting,
read_only=True
)
# Remove read-only
client.set_read_only(
configuration_setting=setting,
read_only=False
)
快照
创建快照
from azure.appconfiguration import ConfigurationSnapshot, ConfigurationSettingFilter
snapshot = ConfigurationSnapshot(
name="v1-snapshot",
filters=[
ConfigurationSettingFilter(key="app:*", label="production")
]
)
created = client.begin_create_snapshot(
name="v1-snapshot",
snapshot=snapshot
).result()
列出快照设置
settings = client.list_configuration_settings(
snapshot_name="v1-snapshot"
)
异步客户端
from azure.appconfiguration.aio import AzureAppConfigurationClient
from azure.identity.aio import DefaultAzureCredential
async def main():
credential = DefaultAzureCredential()
client = AzureAppConfigurationClient(
base_url=endpoint,
credential=credential
)
setting = await client.get_configuration_setting(key="app:message")
print(setting.value)
await client.close()
await credential.close()
客户端操作
| 操作 | 描述 |
|-----------|-------------|
| get_configuration_setting | 获取单个设置 |
| set_configuration_setting | 创建或更新设置 |
| delete_configuration_setting | 删除设置 |
| list_configuration_settings | 带过滤器列出 |
| set_read_only | 锁定/解锁设置 |
| begin_create_snapshot | 创建时间点快照 |
| list_snapshots | 列出所有快照 |
最佳实践
- 使用标签区分环境(开发、预发布、生产)
- 使用键前缀组织设置(如
app:database:*) - 使用快照进行版本化配置发布
- 使用只读保护关键设置不被意外修改
- 使用异步客户端处理高并发场景
- 使用 Entra ID而非连接字符串以获得更好的安全性
兼容工具
Claude CodeCursor
标签
后端开发
