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

使用指定SA从Cloud Build部署Dataflow管道失败求助

问题与解决方案

问题描述

尝试通过Cloud Build使用指定服务账号(SA)而非默认Cloud Build服务账号部署Dataflow管道,但部署失败。已为目标SA配置Dataflow Admin、Dataflow Worker、Logs Writer、Service Account User、Storage Admin、Storage Object Admin等角色,并遵循官方文档完成Cloud Build配置。

部署命令如下:

os.system("python3.7 /workspace/runner.py \
    --runner=DataflowRunner \
    --job_name=test \
    --project=XXXXXX \
    --temp_location=gs://staging/tmp \
    --region=europe-west1 \
    --environment=dev \
    --max_num_workers=20 \
    --autoscaling_algorithm=THROUGHPUT_BASED \
    --setup_file=/workspace/setup.py \
    --service_account_email=XXXX@XXXX.iam.gserviceaccount.com \
    ")

执行后出现403权限错误:

apitools.base.py.exceptions.HttpForbiddenError: HttpError accessing <https://dataflow.googleapis.com/v1b3/projects/my-prj/locations/europe-west1/jobs?alt=json>: response: <{'vary': 'Origin, X-Origin, Referer', 'content-type': 'application/json; charset=UTF-8', 'date': 'Tue, 18 Apr 2023 14:03:30 GMT', 'server': 'ESF', 'cache-control': 'private', 'x-xss-protection': '0', 'x-frame-options': 'SAMEORIGIN', 'x-content-type-options': 'nosniff', 'transfer-encoding': 'chunked', 'status': '403', 'content-length': '812', '-content-encoding': 'gzip'}>, content <{
  "error": {
    "code": 403,
    "message": "(3b12042024f17c98): 当前用户无法扮演服务账号XXXXXXX@XXXXXX.iam.gserviceaccount.com。请为你的用户账号授予[Owner, Editor, Service Account Actor]角色之一,或其他包含iam.serviceAccounts.actAs权限的角色。Causes: (3b12042024f17239): 当前用户无法扮演服务账号XXXX@XXXX.iam.gserviceaccount.com。请为你的用户账号授予[Owner, Editor, Service Account Actor]角色之一,或其他包含iam.serviceAccounts.actAs权限的角色。",
    "status": "PERMISSION_DENIED"
  }
}

点击错误中的链接后返回401未授权(该问题为链接需身份验证,不影响核心错误排查):

{
  "error": {
    "code": 401,
    "message": "请求缺少必需的身份验证凭据。预期OAuth 2访问令牌、登录Cookie或其他有效的身份验证凭据。",
    "status": "UNAUTHENTICATED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "CREDENTIALS_MISSING",
        "domain": "googleapis.com",
        "metadata": {
          "service": "dataflow.googleapis.com",
          "method": "google.dataflow.v1beta3.JobsV1Beta3.ListJobs"
        }
      }
    ]
  }
}

解决方案

核心问题是Cloud Build运行时使用的服务账号没有权限扮演你在Dataflow命令中指定的目标SA,错误提示明确要求授予iam.serviceAccounts.actAs权限。

操作步骤

  1. 确定Cloud Build使用的服务账号:
    • 若使用默认账号,格式为[你的项目编号]@cloudbuild.gserviceaccount.com
    • 若已配置自定义Cloud Build服务账号,使用该账号的邮箱
  2. 为上述Cloud Build服务账号授予Service Account Actor角色(或直接授予iam.serviceAccounts.actAs权限),授权对象为你在--service_account_email参数中指定的目标SA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:35:26