使用PublishProfile从GitHub部署Azure Function遇401未授权错误求助
解决GitHub Action部署Azure Function时的401未授权错误
问题背景
按微软官方教程完成以下配置后,GitHub Action流水线执行时出现401未授权错误:
- 创建工作流
- 创建Azure Function实例
- 将Azure Function的发布配置文件添加为GitHub Action仓库密钥
- 在工作流中通过
publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}调用配置文件
错误日志:
Error: Execution Exception (state: ValidateAzureResource) (step: Invocation) Error: When request Azure resource at ValidateAzureResource, Get Function App Settings : Failed to acquire app settings from https://<scmsite>/api/settings with publish-profile Error: Failed to fetch Kudu App Settings. Unauthorized (CODE: 401) Error: Error: Failed to fetch Kudu App Settings.
已确认不存在网络访问限制,以下是针对性的解决步骤:
重新获取并验证发布配置文件
进入Azure门户的目标Function App,依次点击「部署中心」→「FTP/部署用户」→「获取发布配置文件」,下载最新的配置文件。旧的配置文件可能因权限变更或过期导致认证失败。确保GitHub密钥内容完整
将新下载的发布配置文件内容完整复制到GitHub仓库的Actions密钥中(路径:仓库Settings → Secrets and variables → Actions → New repository secret)。注意不要遗漏任何字符,包括XML格式的首尾标签,避免复制时出现换行、空格丢失或截断。检查发布配置文件关联用户的权限
在Azure门户的Function App页面,进入「访问控制(IAM)」,确认发布配置文件对应的内置用户(格式通常为$<your-function-app-name>)拥有「网站参与者」或更高权限。若权限不足,点击「添加角色分配」,为该用户分配对应角色。切换至Azure RBAC认证方式
如果发布配置文件方式仍无法解决问题,可以改用RBAC认证替代:- 在Azure门户中创建一个服务主体,为其分配「网站参与者」权限到目标Function App。
- 将服务主体的
AZURE_CLIENT_ID、AZURE_TENANT_ID、AZURE_SUBSCRIPTION_ID分别添加为GitHub仓库密钥。 - 修改工作流文件,替换发布配置文件的调用逻辑,示例如下:
- name: Deploy to Azure Functions uses: Azure/functions-action@v1 with: app-name: 'your-function-app-name' slot-name: 'Production' package: '.' azure-subscription: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
内容的提问来源于stack exchange,提问作者emrich
相关产品推荐
相关产品推荐

