【问题标题】:download_to_filename makes an empty file (google cloud storage)download_to_filename 创建一个空文件(谷歌云存储)
【发布时间】: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


【解决方案1】:

使用 API 时,重要的是授予对存储策略的所有权访问权限,而不仅仅是向连接到实例的 IAM 授予一般 API 所有权。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-31
    • 2016-02-14
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 2016-01-17
    相关资源
    最近更新 更多