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

使用gcloud部署Gen2函数时遭遇“Unsupported service account”错误

GCP Cloud Functions Gen2 CLI部署服务账号格式错误排查与解决

环境信息

gcloud --version
Google Cloud SDK 488.0.0
alpha 2024.08.09
beta 2024.08.09
bq 2.1.8
core 2024.08.09
gcloud-crc32c 1.0.0
gsutil 5.30
istioctl 1.20.47

问题描述

  • Gen1函数可通过CLI正常部署,但Gen2部署时触发服务账号相关错误
  • 执行初始Gen2部署命令:
gcloud functions deploy sdfsdfsd \
    --gen2 \
    --project="sdfsdf" \
    --region="us-central1" \
    --entry-point=my_func \
    --no-allow-unauthenticated \
    --runtime=python312 \
    --build-service-account="my-cloud-build-acct@my-project-id.iam.gserviceaccount.com" \
    --trigger-http

返回错误:

ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Deployment failed: ["params.service_account: must be empty or a service account of format: projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}"]. Check your build configuration.
  • 添加--service-account="myacct@my-project-id.iam.gserviceaccount.com"参数后,仍触发相同错误
  • 改用提示的完整资源路径格式时,出现新错误:
ERROR: (gcloud.functions.deploy) ResponseError: status=[400], code=[Ok], message=[Could not create Cloud Run service sdfsdfsd. serviceAccountName: Unsupported service account: projects/my-project-id/serviceAccounts/myacct@my-project-id.iam.gserviceaccount.com]
  • 目标服务账号已分配对应角色,且通过GCP UI可正常部署Gen2函数

解决方案

1. 清理gcloud默认服务账号配置

执行命令检查当前gcloud配置中是否存在默认服务账号:

gcloud config get-value functions/service_account

若返回非空值,说明配置中存在冲突的默认设置,执行以下命令清空:

gcloud config unset functions/service_account

2. 使用邮箱格式指定服务账号参数

Gen2 CLI部署要求--service-account和--build-service-account均使用纯邮箱格式(而非完整资源路径),修正后的部署命令示例:

gcloud functions deploy sdfsdfsd \
    --gen2 \
    --project="sdfsdf" \
    --region="us-central1" \
    --entry-point=my_func \
    --no-allow-unauthenticated \
    --runtime=python312 \
    --build-service-account="my-cloud-build-acct@my-project-id.iam.gserviceaccount.com" \
    --service-account="myacct@my-project-id.iam.gserviceaccount.com" \
    --trigger-http

3. 验证服务账号权限与存在性

确认目标服务账号已在项目中存在,且至少具备以下角色:

  • Cloud Functions Developer
  • Service Account User
  • Cloud Run Developer

4. 更新gcloud SDK版本

旧版本SDK可能存在Gen2参数解析bug,执行更新命令:

gcloud components update

关键说明

Gen2函数底层依赖Cloud Run,CLI部署对服务账号格式的解析逻辑与UI不同:UI会自动转换格式,但CLI需严格使用邮箱格式。同时需确保gcloud配置中无冲突的默认服务账号设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:40:08