Google cloud platform 在gsutil中为GCP操作指定Google服务帐户

Google cloud platform 在gsutil中为GCP操作指定Google服务帐户,google-cloud-platform,gcloud,gsutil,Google Cloud Platform,Gcloud,Gsutil,谷歌云SDK似乎要求通过gcloud auth…激活服务帐户。没有它,gsutil cp或gsutil rsync将无法工作。这在持续集成环境或其他基于cron的环境中效果不佳,因为一个环境中可能同时运行多个作业,因此当不同的脚本试图并行使用不同的帐户时,可能会产生冲突 是否可以将google服务帐户作为参数传递给gsutil?谢谢 为了避免在运行gsutil命令时出现争用情况,我建议创建单独的安装,并使用其绝对路径运行每个安装。然后,您可以使用gsutil config命令(请参阅文档)使用自

谷歌云SDK似乎要求通过
gcloud auth…
激活服务帐户。没有它,
gsutil cp
gsutil rsync
将无法工作。这在持续集成环境或其他基于cron的环境中效果不佳,因为一个环境中可能同时运行多个作业,因此当不同的脚本试图并行使用不同的帐户时,可能会产生冲突


是否可以将google服务帐户作为参数传递给
gsutil
?谢谢

为了避免在运行gsutil命令时出现争用情况,我建议创建单独的安装,并使用其绝对路径运行每个安装。然后,您可以使用
gsutil config
命令(请参阅文档)使用自己的凭据配置每个安装


请注意,默认情况下,配置文件将写入~/.boto,新配置将替换以前的配置。但是,您可以使用
-o
选项指定不同的目标文件。

这个答案很接近,但不太准确。默认情况下,单独的gsutil安装将全部写入相同的状态目录(
$HOME/.gsutil
),并加载相同的默认boto配置文件。为了避免竞争条件,您可以(也应该)使用相同的gsutil安装,但为可能重叠的调用指定不同的
state_dir
和/或boto config文件。这可以在boto配置文件级别进行设置,也可以使用
-o
选项进行设置,例如
gsutil-o“gsutil:state_dir=$HOME/.gsutil2”cp src dst
。另外值得注意的是,如果您使用与gcloud捆绑的gsutil安装,gcloud会将其当前活动的凭据传递给gsutil。如果要避免这种情况并使用多个不同的凭据/帐户进行重叠调用,则应直接通过gsutil(使用单独的boto配置文件)而不是gcloud来管理凭据。您可以通过运行
gcloud config set pass\u credentials\u to\u gsutil false
来禁用gcloud的自动凭证传递行为。