【问题标题】:Downloading multiple files from a Cloud Storage bucket从 Cloud Storage 存储分区下载多个文件
【发布时间】:2021-12-10 20:10:58
【问题描述】:

我有一个处理 CSV 文件并返回一些分析的应用程序。我的用户将文件存储在 GCP Cloud Storage 存储桶中,我想让他们向我传递存储桶 URL 和一些身份验证令牌/签名 URL,然后应用程序将下载文件并根据需要解析它们。

阅读 GCP 文档后,我发现了以下 gsutil 命令:

gsutil cp -r gs://my_bucket

这正是我所需要的,但是我正在通过一些 REST API HTTP 请求来寻找同样的功能。我确信存在这样的东西,但似乎找不到。或者,如果我可以“列出”存储桶中的所有文件并逐个下载它们,这也可以,但显然不太方便。

【问题讨论】:

    标签: google-cloud-platform google-cloud-storage gsutil


    【解决方案1】:

    不幸的是,无法实现您的要求,唯一的解决方案,正如您所建议的那样,是列出文件并逐个下载(这是 gsutil 命令在后台执行的操作)。

    即使是code samples documentation 状态

    要轻松下载存储桶或子目录中的所有对象,请使用 gsutil cp 命令。

    但是,您可以使用 subprocess 在您的 python 脚本中调用 gsutil 命令。

    【讨论】:

      【解决方案2】:

      api参考可以在这里找到:https://cloud.google.com/storage/docs/apis

      您可能需要结合“向 API 进行身份验证”和“JSON API -> API 参考 -> 对象 -> 获取”中的信息。

      您也可以在云存储操作指南中找到此信息:https://cloud.google.com/storage/docs/downloading-objects#rest-download-object

      【讨论】:

        【解决方案3】:

        您可以调用以下两种 REST API 中的任何一种:JSON 或 XML。 要从公共 Google Cloud Storage 存储桶下载文件,请使用 cURL 发出 GET Object 请求以 https://www.googleapis.com/storage/v1/b/<bucket>/o/<object>,其中<bucket> 是您的 Google Cloud Storage 存储桶的名称,<object> 是存储桶中文件的名称。这应该与来自OAuth 2.0的授权访问令牌一起使用

        JSON API:

        curl -X GET \ -H "Authorization: Bearer [OAUTH2_TOKEN]" \ -o "[SAVE_TO_LOCATION]" \ "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]/o/[OBJECT_NAME]?alt=media"
        

        XML API:

        curl -X GET \ -H "Authorization: Bearer [OAUTH2_TOKEN]" \ -o "[SAVE_TO_LOCATION]" \ "https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]"
        

        您可以阅读有关此 API 请求 here 的文档。我们提供了包含多种客户端库/语言(Python API、Node.js、Java)的代码示例,以展示我们如何从 Cloud Storage 中的存储桶下载对象。

        请注意,对于多个文件,您必须对请求进行编程,因此如果您想轻松下载存储桶或子目录中的所有对象,最好使用gsutil。同样对于传输,您可能希望使用gsutil -m 选项来执行并行(多线程/多处理)复制:

        gsutil -m cp -R gs://your-bucket 
        

        如果要复制到特定目录,请注意该目录必须先存在,因为 gsutils 不会自动创建它。

        mkdir my-bucket-local-copy && gsutil -m cp -r gs://your-bucket my-bucket-local-copy
        

        下载文件的时间可以显着减少。有关 GCS cp 命令的完整信息,请参阅此Cloud Storage documentation。 另请查看stackoverflow thread,了解我们如何从 Cloud Storage 存储桶下载文件夹。

        如果您需要执行经过身份验证的下载,Google Cloud Storage 还支持下载签名 URL。这些 URL 描述了 Google Cloud Storage 上的特定操作,例如下载,并带有时间敏感的签名。任何拥有该 URL 的人都可以在 Google Cloud Storage 上执行指定的操作。它们可以安全地从服务器传递到客户端,但是在使用签名 URL 时,我们必须记住一些 considerations。我们有一些带有client libraries/languages which create signed URLs to download object 的代码示例。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-23
          • 1970-01-01
          • 2017-11-15
          • 2019-06-17
          • 2020-04-29
          • 2014-03-02
          • 1970-01-01
          • 2017-11-08
          相关资源
          最近更新 更多