Google cloud platform 在gsutil中为GCP操作指定Google服务帐户
谷歌云SDK似乎要求通过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命令(请参阅文档)使用自
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的自动凭证传递行为。