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

使用PublishProfile从GitHub部署Azure Function遇401未授权错误求助

解决GitHub Action部署Azure Function时的401未授权错误

问题背景

按微软官方教程完成以下配置后,GitHub Action流水线执行时出现401未授权错误:

  1. 创建工作流
  2. 创建Azure Function实例
  3. 将Azure Function的发布配置文件添加为GitHub Action仓库密钥
  4. 在工作流中通过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认证替代:

    1. 在Azure门户中创建一个服务主体,为其分配「网站参与者」权限到目标Function App。
    2. 将服务主体的AZURE_CLIENT_ID、AZURE_TENANT_ID、AZURE_SUBSCRIPTION_ID分别添加为GitHub仓库密钥。
    3. 修改工作流文件,替换发布配置文件的调用逻辑,示例如下:
      - 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:15:04