【问题标题】:Google Cloud Storage support of S3 multipart uploadGoogle Cloud Storage 支持 S3 分段上传
【发布时间】:2021-09-04 00:31:51
【问题描述】:

目前,我在“互操作性模式”下使用 GCS 以使其接受 S3 API 请求。通过使用官方的分段上传示例here(+设置相应的endpoint),第一次发起POST请求:

POST /bucket/object?uploads HTTP/1.1
Host: storage.googleapis.com
Authorization: AWS KEY:SIGNATURE
Date: Wed, 07 Jan 2015 13:34:04 GMT
User-Agent: aws-sdk-java/1.7.5 Linux/3.13.0-43-generic Java_HotSpot(TM)_64-Bit_Server_VM/24.72-b04/1.7.0_72
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Transfer-Encoding: chunked
Connection: Keep-Alive

导致此响应:

HTTP/1.1 400 Bad Request
Content-Length: 55
Date: Wed, 07 Jan 2015 13:34:05 GMT
Server: UploadServer ("Built on Dec 19 2014 ...")
Content-Type: text/html; charset=UTF-8
Alternate-Protocol: 443:quic,p=0.02

The request's content type is not accepted on this URL.

这可能是 AWS 客户端问题还是 GCS 还不支持 S3 的分段上传?

我尝试过的大多数其他操作(下载对象、列出存储桶对象等)似乎都可以正常工作。

【问题讨论】:

    标签: file-upload google-cloud-storage aws-sdk


    【解决方案1】:

    谷歌云存储 (GCS) now supports the S3-style multipart upload API。因此,像这个问题中的用例应该可以正常工作。

    【讨论】:

      【解决方案2】:

      更新:自 2021 年 5 月起,Google Cloud Storage (GCS) 支持与 S3 兼容的分段上传。
      https://cloud.google.com/storage/docs/multipart-uploads

      配置适当的终端节点后,AWS SDK 将无缝运行。

      GSC 不支持 S3 分段上传接口。 如果您想执行块并行上传,您可以使用对象组合 - 请参阅 https://cloud.google.com/storage/docs/composite-objects

      【讨论】:

      • 谢谢迈克。我猜这个“对象组合”XML API 只在 GCS(而不是 S3)上可用,对吧?如果是这样,我应该检查是否直接使用GCS原生resumablemultipart上传API更好。
      • 是的,对象组合 API 是特定于 GCS 的。顺便说一句,另一条评论:GCS JSON API 确实支持分段上传接口 (cloud.google.com/storage/docs/json_api/v1/how-tos/…),但它与 S3 并行上传 API 不同。
      猜你喜欢
      • 2014-04-16
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      • 2016-10-19
      相关资源
      最近更新 更多