如何为Visual Studio开发的只读Azure Function创建Function Key
解决只读状态下Azure Function Key的创建问题
我完全懂你现在的麻烦:本地用Visual Studio开发Azure Function导致门户里的Function管理变成只读,现在要把通用webhook连到Event Grid,还得处理SubscriptionValidationEvent,要求webhook URL里的code必须是Function Key,试过Kudu的PowerShell方法又没奏效,还没法用预发布的EventGrid绑定。下面给你两个可行的方案:
方案一:用Azure CLI直接创建Function Key
这是官方支持的稳定方法,步骤很清晰:
- 先登录Azure CLI:
az login - 如果你有多个Azure订阅,切换到Function App所在的订阅:
az account set --subscription <你的订阅ID/名称> - 为目标Function生成密钥,把占位符换成你的实际信息:
执行完这条命令后,CLI会返回生成的密钥,直接把它放到webhook URL的az functionapp function keys set --name <Function App名称> --resource-group <资源组名称> --function-name <具体Function的名称> --key-name <自定义密钥名,比如eventgrid-validation> --key-value <可选:自己指定密钥值,不填会自动生成安全的随机值>code参数里就行。
方案二:手动在Kudu中创建secrets文件
如果CLI访问受限,也可以通过Kudu的文件系统手动添加密钥:
- 打开你的Function App的Kudu控制台:
https://<Function App名称>.scm.azurewebsites.net,用发布凭据登录进去。 - 导航到
site/wwwroot/<你的Function所在文件夹>/secrets路径——如果secrets文件夹不存在,自己新建一个。 - 创建一个名为
<你的Function名称>.json的文件,内容按下面的格式写:{ "keys": { "eventgrid-validation": "<你自己设置的复杂密钥字符串>" }, "lastModified": "<当前UTC时间,比如2024-05-20T14:20:00Z>" } - 保存文件后,Function App会自动加载这个密钥,你就可以用它来配置Event Grid的webhook了。
小提醒
- 手动设置密钥时,尽量用复杂的字符串(至少16位,混合大小写、数字和符号),避免安全风险。
- 验证完成后,这个密钥要保留好,后续Event Grid推送事件都会用它来校验请求的合法性。
内容的提问来源于stack exchange,提问作者ThatCreole
相关产品推荐
相关产品推荐

