如何通过CLI提取并迁移Azure Function App的函数配置及密钥?
自动化迁移Azure Function App密钥(函数密钥/主机密钥)的CLI方案
你遇到的核心问题是:函数密钥、主机密钥这类敏感配置并不在应用设置(appsettings)里,而是存储在Function App绑定的存储账户中,所以需要针对存储账户进行导出导入操作,以下是完整的CLI自动化步骤:
一、导出现有Function App的密钥数据
- 获取现有Function App关联的存储账户信息
# 替换为你的旧函数应用名和资源组 STORAGE_ACCOUNT=$(az functionapp show --name <旧函数应用名> --resource-group <旧资源组名> --query storageAccount -o tsv) STORAGE_KEY=$(az storage account keys list --account-name $STORAGE_ACCOUNT --query "[0].value" -o tsv)
- 下载存储账户中
azure-webjobs-secrets容器的所有密钥文件到本地
# 创建本地目录存储密钥文件 mkdir function-secrets az storage blob download-batch --source azure-webjobs-secrets --destination function-secrets --account-name $STORAGE_ACCOUNT --account-key $STORAGE_KEY
本地目录会包含两类关键文件:
host/secrets.json:存储主机级密钥- 每个函数对应的
<函数名>/secrets.json:存储该函数的专属密钥
二、导入密钥到新的Function App
- 获取新Function App关联的存储账户信息
# 替换为你的新函数应用名和资源组 NEW_STORAGE_ACCOUNT=$(az functionapp show --name <新函数应用名> --resource-group <新资源组名> --query storageAccount -o tsv) NEW_STORAGE_KEY=$(az storage account keys list --account-name $NEW_STORAGE_ACCOUNT --query "[0].value" -o tsv)
- 上传本地密钥文件到新存储账户的对应容器
az storage blob upload-batch --source function-secrets --destination azure-webjobs-secrets --account-name $NEW_STORAGE_ACCOUNT --account-key $NEW_STORAGE_KEY
- 重启新Function App使密钥生效
az functionapp restart --name <新函数应用名> --resource-group <新资源组名>
三、验证密钥有效性
可以通过CLI查询新应用的密钥,确认与旧应用一致:
# 查询主机密钥 az functionapp keys list --name <新函数应用名> --resource-group <新资源组名> --query masterKey # 查询特定函数的密钥 az functionapp function keys list --name <新函数应用名> --resource-group <新资源组名> --function-name <函数名> --query default
补充说明
- 如果你的Function App启用了Azure Key Vault集成存储密钥,需直接操作Key Vault:导出密钥后导入到新Key Vault(或更新现有Key Vault的权限),再配置新Function App关联该Key Vault。
- 上述存储账户操作也可用Azure Storage Explorer手动完成,但CLI更适合编写自动化脚本批量执行。
内容的提问来源于stack exchange,提问作者Westy
相关产品推荐
相关产品推荐

