Google Cloud Platform-使用多项服务帐户

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

我正在尝试使用bq cli使用大查询将数据导出到GCS。当前有两个项目,每个项目都有其自己的服务帐户。我已经使用验证了服务帐户通过传递密钥json文件,gcloud auth active-service-account。在运行我的工作时,我使用以下命令显式设置项目和帐户

在JOB1之内

gcloud配置设置帐户account1

gcloud配置设置项目project1

bq提取--destination_format NEWLINE_DELIMITED_JSON table1 gs:// path1

在JOB2之内

gcloud配置设置帐户account2

gcloud配置设置项目project2

bq提取--destination_format NEWLINE_DELIMITED_JSON table2 gs:// path2

[当job1和job2都并行运行时,JOB1失败,错误帐户2无法访问project1,类似地,在某些情况下,JOB2失败,错误帐户1无法访问project2。我们已经确定发生了这种情况,因为在设置帐户时,它更改了服务器内(而不是会话内)的默认帐户,因此更改了并行运行的其他作业。您能否提供帮助,以帮助我们如何在同一台服务器中使用多个服务帐户并行执行bq命令?

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

让我先解释该过程,然后再深入解决方案。在BigQuery上执行操作时,大多数情况下是异步操作。 cli让您认为它是同步的,但不是同步的。

cli执行此操作

  • 启动工作并获取jobId
  • 循环定期拉出jobId状态
  • 最后打印作业结果(状态完成,错误)

如果更改凭据,则CLI不能完成Loop Pull,因为它不再被授权在项目上检查此JobId。

现在,您有2个解决方案:

  • 在cli中,工作结果对您很重要,您无法更改凭据。摘录必须是顺序的
  • 作业结果不是导入的,您更喜欢并行性,执行提取时可以使用--nosynchronous_mode参数

注意:我非常确定,如果您使用多个用户和SUDO命令,您可以在同步模式下实现所需的功能。但是,我不是linux专家,对此我无能为力。

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