启动Multipart上传到amazon s3,期待x-amz-content-sha256标头

时间:2014-05-01 13:59:52

标签: amazon-s3 libcurl

我正在尝试使用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   凭证= XXXXXXX / 20140501 / US-东-1 / S3 / aws4_request,SignedHeaders =宿主,签名= 1a3fd6195040494dd95507455a3b1eefef40346485e3fdafbe6cc136192365a2

我得到以下回复

  

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

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

我在这里缺少什么?这里的任何建议都会非常有用。

由于

3 个答案:

答案 0 :(得分:3)

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

  

的x AMZ-内容-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不是同一个东西,但也许这个值也适用于分段上传请求,或者会生成一个新的更有用的错误消息。遗憾的是,在这种情况下,文档似乎很少。

答案 1 :(得分:2)

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

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

使用awscli时,对我有用的是将文件〜/ .aws / config (我正在使用Ubuntu)中的正确设置为我们 - 东 - 1 即可。 US 只是不起作用,也不适用美国标准。返回的错误并不能真正表明。

答案 2 :(得分:1)

STREAMING-AWS4-HMAC-SHA256-PAYLOAD似乎不再有效。我能够通过传递空字符串e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

的SHA256哈希来使其工作