繁体   English   中英

从 python (pandas) 写入云存储 (GCP) 所需的角色

[英]Roles Required to write to Cloud Storage (GCP) from python (pandas)

我有一个问题要问你们中间的 GCP 鉴赏家。

我有一个问题,我可以通过 UI 和gsutil上传到存储桶 - 但如果我尝试通过 python 执行此操作

df.to_csv('gs://BUCKET_NAME/test.csv')

我收到 403 权限不足错误。

我目前的猜测是python通过 API 执行此操作,并且需要一个额外的角色 - 让事情变得更加混乱桶。

我通过 pyenv 和 pandas '1.4.2' 使用 python 3.9.1

任何人都有同样的问题/知道我缺少什么角色?

  1. 我检查了我是否拥有通过 UI 和 gsutil 上传的主要权利
  2. 我使用相同的虚拟 python 环境从 bigquery 读取和写入,以检查我原则上可以在 python 中使用 GCP 数据 - 这有效

gsutilgcloud共享凭据。

这些凭据与本地运行的其他代码共享。

快速修复但次优的解决方案是:

gcloud auth application-default login

并再次运行代码。

然后它将使用您配置为运行的gcloud ( gsutil ) 用户凭据,就像您使用服务帐户一样。

这些凭据存储(在 Linux 上)在${HOME}/.config/gcloud/application_default_credentials.json中。

更好的解决方案是专门为您的应用创建一个服务帐户,并为其授予所需的最小 IAM 权限集(BigQuery、GCS 等)。

出于测试目的(.),您可以在本地下载服务帐户密钥。

然后,您可以通过(在 Linux 上)使用 Google 的应用程序默认凭据 (ADC)验证您的代码:

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/key.json
python3 your_app.py

当您将利用 ADC 的代码部署到 Google Cloud 计算服务(Compute Engine、Cloud Run 等)时,它可以按原样部署,因为计算资源的凭据将自动从元数据服务获取。

您可以通过 Google 例如“Google IAM BigQuery”来查找列出角色的文档:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM