AWS S3-带HTTP帖子的存储桶策略

时间:2019-01-01 21:38:22

标签: amazon-web-services amazon-s3

我目前正在遵循此AWS tutorial来尝试让我的Web应用程序上的客户端上传到我的S3存储桶中。我有本教程中所述的POST政策(已删除一些详细信息):

{ "expiration": "2019-12-30T12:00:00.000Z",
  "conditions": [
    {"bucket": "<MY BUCKET NAME>"},
    ["starts-with", "$key", "images/"],
    {"acl": "public-read"},
    ["starts-with", "$Content-Type", "image/"],
    {"x-amz-algorithm": "AWS4-HMAC-SHA256"},
    {"x-amz-credential": "<AWSAccessKeyId>/20190101/eu-west-2/s3/aws4_request"},
    {"x-amz-date": "20190101T000000Z" }
  ]
}

我有一个指定的HTML表单:

  <form action="http://<bucket-name>.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
    Key to upload:
    <input type="input"  name="key" value="images/${filename}" /><br />
    <input type="hidden" name="acl" value="public-read" />
    Content-Type:
    <input type="input"  name="Content-Type" value="image/jpeg" /><br />
    <input type="text"   name="X-Amz-Credential" value="<AWSAccessKeyId>/20190101/eu-west-2/s3/aws4_request" />
    <input type="text"   name="X-Amz-Algorithm" value="AWS4-HMAC-SHA256" />
    <input type="text"   name="X-Amz-Date" value="20190101T000000Z" />

    Tags for File:
    <input type="input"  name="x-amz-meta-tag" value="" /><br />
    <input type="hidden" name="Policy" value='<MY BASE 64 policy>' />
    <input type="hidden" name="X-Amz-Signature" value="<SIGNATURE-VALUE>" />
    <!-- File:  -->
    <input type="file"   name="file" /> <br />
    <!-- The elements after this will be ignored -->
    <input type="submit" name="submit" value="Upload to Amazon S3" />
  </form>

关于我的签名制作代码,我使用了他们的python示例,当我用他们的字符串对其进行测试时,对64个示例进行了签名并得到了正确的结果。所以我不认为我的问题在那里,但是我也可以随时上传我的python代码。

但是,当我尝试提交此表单并上传图像时,在生成的XML页面上出现SignatureDoesNotMatch错误。

我应该在我的存储桶权限上上传POST策略吗?我不确定AWS如何计算签名,因为我认为我没有给它我的政策。我是在犯一个简单的错误吗?

0 个答案:

没有答案