【发布时间】:2019-08-26 02:24:33
【问题描述】:
回答: 我需要授予对存储策略的所有权访问权限,而不仅仅是向连接到我的实例的 IAM 授予一般 API 所有权。
我只是按照网站上的教程进行操作:https://cloud.google.com/storage/docs/downloading-objects#storage-download-object-python
说什么
def download_blob(bucket_name, source_blob_name, destination_file_name):
"""Downloads a blob from the bucket."""
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(source_blob_name)
blob.download_to_filename(destination_file_name)
print('Blob {} downloaded to {}.'.format(
source_blob_name,
destination_file_name))
download_blob([BUCKETNAME],[FILENAME],"/home/me/documents/file.png")
我没有收到错误,但要执行的最后一行是 blob.download_to_filename(destination_file_name)
这会创建一个空文件。
附加信息: 我的存储桶格式为“mybucketname” 我的文件格式为“sdg-1234-fggr-34234.png”
我希望任何人都知道我的问题。 是编码吗?还是 download_to_filename 不执行?还是别的什么?
【问题讨论】:
-
我认为这可能是我的“source_blob_name”,但我只是使用存储桶中的名称。这太令人沮丧了..
-
我尝试使用该代码从存储桶中下载文件,并且成功了。在您的情况下,它应该将文件“sdg-1234-fggr-34234.png”从您的存储桶“mybucketname”下载到名为“file.png”的“/home/me/documents/”目录中。是在您提到的目录上创建一个空文件“file.png”?
-
感谢您测试我的代码。是的,它在我的目录中创建了一个空文件。我认为这可能是我的授权失败,但我没有收到任何错误。我想我会去探索。
-
请问您如何处理身份验证?我正在使用计算引擎来运行上面的代码。该实例使用对所有 API 具有完全访问权限的默认服务帐户。我通过控制台 ssh 访问实例。据我所知,它应该是直截了当的。我只是在导入: from google.cloud import storage 没有别的。我需要在代码的开头进行身份验证吗?
-
我终于解决了这个问题。我在一般级别上将 IAM 帐户设置为所有者,但不在特定存储菜单中。这解决了它,它现在下载文件。感谢您帮助解决问题。
标签: python google-cloud-platform google-cloud-storage