【问题标题】:Initiating Multipart upload to amazon s3 expecting x-amz-content-sha256 header启动分段上传到亚马逊 s3 需要 x-amz-content-sha256 标头
【发布时间】:2014-06-18 00:31:41
【问题描述】:

我正在尝试使用 libcurl 将分段上传到 s3。我的发起多部分请求看起来像这样

POST /my_new_file.mbi?uploads HTTP/1.1 接受:/ 主机: test_bucket.s3.amazonaws.com 日期:2014 年 5 月 1 日星期四 13:35:17 GMT 授权:AWS4-HMAC-SHA256 Credential=XXXXXXX/20140501/us-east-1/s3/aws4_request,SignedHeaders=host,Signature=1a3fd6195040494dd95507455a3b1eefef40346485e3fdafbe6cc136192365a2

我收到以下回复

提供的“x-amz-content-sha256”标头必须是有效的 SHA256。

s3 文档说我们不需要任何其他标头来发起分段上传调用 (POST)。尝试了各种签名空内容的组合,但没有运气。

我在这里缺少什么?这里的任何建议都会很有帮助。

谢谢

【问题讨论】:

    标签: amazon-s3 libcurl


    【解决方案1】:

    我还没有使用版本 4 auth 进行分段上传(我的代码使用 v2),但我确实找到了这个:

    x-amz-content-sha256

    当使用签名版本 4 对请求进行身份验证时,此标头提供请求负载的哈希。有关详细信息,请参阅Authenticating Requests by Using the Authorization Header (Compute Checksum of the Entire Payload Prior to Transmission) - Signature Version 4。在分块上传对象时,您将值设置为STREAMING-AWS4-HMAC-SHA256-PAYLOAD 以指示签名仅涵盖标头并且没有有效负载。如需更多信息,请参阅Authenticating Requests Using HTTP Authorization Header (Chunked Upload)

    http://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html

    显然,chunked 和 multipart 不是一回事,但也许这个值也适用于多部分上传请求,或者会生成一个新的更有用的错误消息。不幸的是,在这种情况下,文档似乎很少。

    【讨论】:

      【解决方案2】:

      对于遇到此错误的 Google 员工:

      Missing required header for this request: x-amz-content-sha256
      

      在使用 awscli 时,对我有用的是将文件 ~/.aws/config(我使用的是 Ubuntu)中的区域 正确 设置为 us-east-1US 仅不起作用,美国标准也不起作用。返回的错误并没有真正表明这一点。

      【讨论】:

        【解决方案3】:

        STREAMING-AWS4-HMAC-SHA256-PAYLOAD 似乎不再起作用。我能够通过传递空字符串的 SHA256 哈希来使其工作,e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-02-20
          • 2016-01-13
          • 2013-10-29
          • 2012-03-30
          • 2012-07-07
          • 1970-01-01
          • 2015-03-22
          相关资源
          最近更新 更多