首页 > 解决方案 > 如何从谷歌云存储桶下载文件?

问题描述

我刚刚收到了对 Google Cloud Storage 上存储桶 gs://asdasdasdasdd-sadasdasd 的访问权限,其中包含用于测试练习的文件。

他们说我可以访问我的谷歌帐户。

但是我应该如何在 python 中下载文件 rom 呢?有哪些凭据?

我创建了服务帐户并使用我的凭据下载了 json 文件,但我被禁止从存储桶下载文件。

我应该如何进一步处理?

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from io import BytesIO

os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="account.json"

from google.cloud import storage

storage_client = storage.Client()
bucket = storage_client.get_bucket('asdasdasdasdd-sadasdasd')
blob = bucket.blob('streams/2017/09/09/allcountries')
path = "gs://asdasdasdasdd-sadasdasd/streams/2017/09/09/allcountries.csv"
df = pd.read_csv(path)

我可以下载文件,gsutil但我需要对 python 做同样的事情。不知何故,我需要验证我的电子邮件,因为我被授权在我的谷歌电子邮件上下载文件。

标签: pythongoogle-cloud-platformcloudgoogle-cloud-storage

解决方案


我假设您被授予访问存储桶的角色。如果是这样,您不需要服务帐户密钥(.json 文件),因为此密钥已由您生成,因此它授予您项目下资源的权限,而不是其他人的。

确保您获得的roles/storage.admin角色是从指定存储桶下载文件所需的角色。

另一种选择是确实使用包含相同角色的服务帐户密钥,但它必须由存储桶的所有者提供给您。

最后,我尝试了您的代码,并在能够连接到存储桶后遇到了错误。如果您遇到 IOError 告诉您该文件不存在,请查看这篇文章以获得可能的解决方案。


推荐阅读