You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python函数实现Azure App Service环境变量引用值拉取更新

用Python实现密钥引用值的自动拉取(替代手动点击"Pull reference values")

问题本质

你碰到的情况是:Azure App Service里的Key Vault密钥引用不会自动同步更新,重启部署槽也没用,必须手动点门户里的"Pull reference values"才行。下面直接给你Python实现的方案,原理就是调用Azure官方API模拟这个手动操作。

前置准备

  • 安装必要的Azure管理库:pip install azure-mgmt-web azure-identity
  • 确保执行代码的账号/服务主体拥有Microsoft.Web/sites/slots/sync/action权限,直接分配「网站参与者」角色即可满足需求。

完整代码实现

from azure.identity import DefaultAzureCredential
from azure.mgmt.web import WebSiteManagementClient
import os

def pull_secret_references(resource_group, app_name, slot=None):
    # 初始化Azure服务客户端
    credential = DefaultAzureCredential()
    sub_id = os.getenv("AZURE_SUBSCRIPTION_ID")
    web_client = WebSiteManagementClient(credential, sub_id)

    # 针对指定部署槽或默认生产槽触发引用值拉取
    target_slot = slot if slot else "production"
    web_client.web_apps.sync_slot_configuration(
        resource_group_name=resource_group,
        name=app_name,
        slot_name=target_slot
    )
    print(f"已触发{target_slot}槽的密钥引用值拉取操作")

# 调用示例
if __name__ == "__main__":
    pull_secret_references(
        resource_group="你的资源组名称",
        app_name="你的App Service名称",
        slot="你的部署槽名称(可选)"
    )

关键说明

  • sync_slot_configuration接口:这就是门户中"Pull reference values"按钮背后调用的核心API,调用后会强制App Service重新拉取所有配置引用(包括Key Vault密钥)的最新值,和手动点击效果完全一致。
  • 权限验证:本地开发时,用Azure CLI登录你的账号即可完成身份验证;生产环境使用服务主体时,需配置环境变量AZURE_CLIENT_ID、AZURE_CLIENT_SECRET、AZURE_TENANT_ID。
  • 自动化触发:可以把这个函数封装成Azure Function,设置每周定时触发,或者绑定Key Vault的密钥更新事件,实现完全自动的引用值同步。

为什么重启部署槽没用?

重启操作仅会重启应用进程,不会触发App Service主动拉取最新的密钥引用值。只有调用配置同步API,才会触发这个主动拉取的动作。

内容的提问来源于stack exchange,提问作者Benjamin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 06:51:05