无法在数据流弹性模板运行时正确设置服务帐户

问题描述 投票:0回答:1

我想覆盖数据流工作人员使用的默认 SA,例如

[email protected]
,如果您不指定任何内容,则默认创建和使用默认 SA。但我想要自己的服务帐户,因此添加

gcloud dataflow flex-template run "flexing" \
  --project=$(PROJECT)\
  --template-file-gcs-location=$(JSON_PATH) \
  --service-account-email=$(MY_SA) \
  --region=europe-west1 \
  --parameters=source=$(MY_SOURCE) \
  --temp-location=$(TEMP_LOCATION) \
  --staging-location=$(STAGING_LOCATION)

这将按预期启动数据流作业,但随后失败并显示

Unable to open template file: gs://..../template_launches/..../operation_result.."
。由于我的图像位于另一个项目中,我知道默认 SA 将会失败(因为它在另一个项目上没有 artifact.reader)。

在日志资源管理器中查看似乎也是这种情况,因为我认为这意味着它会回退到默认值?

我找到我的 SA 的唯一地方是 request.ServiceAccounts.email 

log 我做错了什么让它一直回退到默认值?

google-cloud-platform google-cloud-dataflow service-accounts google-cloud-iam
1个回答
0
投票

-在 Google Cloud Console 中检查您的 IAM 权限

-找到您的服务帐户:格式为

[电子邮件受保护]

-SA 必须拥有对 BQ、云存储等数据流的适当权限。

-查看角色,探索每个角色详情页面查看

-在角色页面验证角色

-确保 Flex 模板和服务帐户与您的数据流位于同一区域

-检查 Google Cloud Console 中的作业配置设置,它可能具有可以覆盖您的命令行规范的默认设置。

-确保您在命令行中正确传递

compute.instances.insert.authenticationInfo.principalEmail = [email protected]

参数,示例如下:

–service-account

gcloud dataflow flex-template run JOB\_NAME

--template-file-gcs-location gs://YOUR\_TEMPLATE\_LOCATION

以下是运行具有特定 SA 的 Flex 模板的命令示例,可能会对您有所帮助:

--parameters serviceAccount=YOUR\_SERVICE\_ACCOUNT\_EMAIL,otherParam=value

gcloud dataflow flex-template run JOB\_NAME

--template-file-gcs-location gs://YOUR\_TEMPLATE\_LOCATION

    

© www.soinside.com 2019 - 2024. All rights reserved.