【问题标题】:Authenticate Google Cloud Storage Python client with gsutil-generated boto file使用 gsutil 生成的 boto 文件对 Google Cloud Storage Python 客户端进行身份验证
【发布时间】:2022-06-11 00:55:12
【问题描述】:
【问题讨论】:
标签:
python
authentication
google-cloud-platform
google-cloud-storage
【解决方案1】:
这并不完全是您问题的直接答案,但最好的方法是在 GCP 中创建一个服务帐户,然后使用该服务帐户的 JSON 密钥文件与 GCS 进行交互。请参阅this documentation,了解如何生成所述密钥文件。
注意: 您应该将此密钥文件视为密码,因为它具有您在以下步骤中授予的访问权限。因此,例如,不要上传到公共 github 存储库。
您还必须为服务帐户授予Storage Object Viewer 权限,或者一个具有更多权限的帐户。
注意: 出于安全考虑,请始终使用最少的权限。
此代码非常简单。请注意,这与链接中提到的生成密钥文件的方法非常相似,但客户端实例化的方式除外。
requirements.txt
google-cloud-storage
代码
from google.cloud import storage
cred_json_file_path = 'path/to/file/credentials.json'
client = storage.Client.from_service_account_json(cred_json_file_path)
如果您想使用通用的Google API Python client library,您可以使用this library 使用 JSON 密钥文件对凭证对象进行类似的实例化,但是对于 GCS,google-cloud-storage 库是非常受欢迎的,因为它确实如此幕后有一些魔力,因为 API python 客户端库是一个非常通用的库,(理论上)可以与所有 Google API 一起使用。
【解决方案2】:
gsutil 将在调用它的用户的主目录中查找 .boto 文件,因此对于 Linux 和 macOS,为 ~/.boto,对于 Windows,在 %HOMEDRIVE%%HOMEPATH% 中查找。
或者,您可以将 BOTO_CONFIG 环境变量设置为您要使用的 .boto 文件的路径。这是一个例子:
BOTO_CONFIG=/path/to/your_generated_boto_file.boto gsutil -m cp files gs://bucket
您可以使用“-e”标志和 config 命令生成带有服务帐户的 .boto 文件:gsutil config -e。
另外请注意,如果 gsutil 与 gcloud 命令一起安装,gcloud 将与 gsutil 共享其身份验证配置,除非您使用以下命令禁用该行为:gcloud config set pass_credentials_to_gsutil false。
https://cloud.google.com/storage/docs/boto-gsutil