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

ARM模板获取Function App指定函数密钥的报错及实现咨询

问题1:优先使用host密钥的原因
  • 兼容性更高:host密钥的拉取API适配所有密钥存储类型(无论是默认的Blob存储还是Files存储),不会出现你遇到的存储类型不支持的报错,部署成功率更高。
  • 运维成本更低:单个host密钥可以访问同一个Function App下的所有函数,不需要为每个函数单独获取、分发、维护密钥,新增函数时也不需要调整密钥配置。
  • 适配多数场景安全需求:只有当你需要为不同函数配置独立的访问权限、做细粒度权限隔离的时候,才需要用到单函数专属密钥,普通业务场景下host密钥的安全等级完全够用。
问题2:获取指定函数专属密钥的实现方案

方案1:修改密钥存储类型适配ARM直接拉取

你遇到的报错是因为当前Function App默认把密钥存在Blob存储中,单函数密钥的listSecretsAPI不支持该存储类型,按如下步骤调整即可:

  1. 在ARM模板中Function App的siteConfig.appSettings配置段新增如下配置:
{
  "name": "AzureWebJobsSecretStorageType",
  "value": "Files"
}
  1. 等Function App部署完成、配置生效后,使用你测试的第二种写法即可正常获取密钥:
"outputs": {
    "function_key": {
        "type": "string",
        "value": "[listsecrets(resourceId('Microsoft.Web/sites/functions', parameters('functionAppName'), variables('theFunction_Name')),'2020-06-01').default]"
    }
}

方案2:不修改存储类型,通过部署后脚本拉取

如果不想更改默认的Blob存储密钥配置,可以在ARM部署完成后,通过Azure CLI或PowerShell命令拉取对应函数的专属密钥:

  • Azure CLI 示例:
    az functionapp function keys list -g <资源组名> -n <Function App名> --function-name <函数名> --query default
  • PowerShell 示例:
    Get-AzFunctionAppKey -ResourceGroupName <资源组名> -Name <Function App名> -FunctionName <函数名> -KeyName default

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:48:03