gpt4 book ai didi

google-cloud-storage - 您可以将 keyfile.json 传递给 gsutil 吗?

转载 作者:行者123 更新时间:2023-12-04 16:30:52 26 4
gpt4 key购买 nike

我在运行的某些 Python 脚本中有一个(也许是独一无二的?)用例。也就是说,我想要 gsutil 的平行威力所以我不做 from google.cloud import storage ,而是我使用 subprocess调用,例如:

subprocess.Popen(["gsutil", "-q", "-m", "-o", "GSUtil:parallel_process_count=8,GSUtil:parallel_thread_count=8", "cp", files, destination])

为了从存储桶上传和下载文件。

在实例组模板中,我可以通过 -scopes 传入服务帐户,但我希望在应用程序级别处理身份验证。我尝试设置环境变量并将其传递给 subprocess :
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "keyfile.json"
tmp_env = os.environ.copy()
subprocess.Popen(['gsutil', ...], env=tmp_env)

但无济于事。运行:
gcloud auth activate-service-account --key-file /path/to/keyfile.json --project my-project -q

似乎是使用不需要 Python API 的 json key 文件进行身份验证的最佳方法。但是如果我把它放在我的 Dockerfile 的末尾,它就不起作用,虽然我当然可以把它放在我在实例组模板嵌入式 bootstrap 末尾执行的 startup.sh 脚本的末尾.sh 脚本,两者都没有真正完成我想要的。也就是说,两者都偏离了我在应用程序级别进行“gsutil 身份验证”的最初目标。

tl;dr 有没有办法将 keyfile.json 凭据传递给 gsutil ?这是 gsutil 团队讨论过的功能吗?如果我没有足够好地寻找 Cloud Platform 和 gsutil 文档,我深表歉意。

最佳答案

您可以提供指向 gsutil 的 JSON key 文件的指针。在您的 .boto配置文件如下:

[Credentials]
gs_service_key_file = /path/to/your/keyfile.json

这相当于运行 gsutil config -e对于独立(非 gcloud)安装。

如果你想在命令行上提供这个而不是在你的 .boto配置文件,可以使用 -o参数类似于您在命令行中配置进程和线程计数的方式。以机智:
subprocess.Popen(["gsutil", "-q", "-m", "-o", "Credentials:gs_service_key_file=/path/to/your/keyfile.json",
"-o", "GSUtil:parallel_process_count=8", "-o", GSUtil:parallel_thread_count=8", "cp", files, destination])

请注意,您需要确保可以从容器内访问 key 文件路径。

关于google-cloud-storage - 您可以将 keyfile.json 传递给 gsutil 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43531595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com