为DELETE操作生成预签名的s3 Url

时间:2018-01-11 21:48:57

标签: php amazon-web-services amazon-s3

您好我正在使用https://gist.github.com/kelvinmo/d78be66c4f36415a6b80

修改的代码生成s3预先签名的“GET”网址以显示图片

理想情况下,我还应该能够生成预先签名的删除URL,将其放入浏览器中,图像将被删除。

我想修改这个删除操作,似乎没有关于如何使用预先设定的URL的在线信息,除了aws文档,这是模糊的,但说它是可能的。我还没有找到任何使用预先签名的网址进行删除的在线教程。

https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html

我尝试在请求中更改Get to Delete,因为许多文档都说,但这会创建一个错误的签名:

SignatureDoesNotMatch我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法

看起来s3正在将DELETE签名与PUT签名匹配并说它不匹配,那么如何删除?!

任何线索或链接都会有所帮助。我假设当前的GET脚本发送了错误的参数或其他东西。

2 个答案:

答案 0 :(得分:2)

Operations on Objects

支持预签名网址:

  • GET
  • PUT

不支持:

  • LIST
  • COPY
  • DELETE

您获得SignatureDoesNotMatch的原因是该操作是签名的一部分。您无法将操作从GET更改为DELETE并期望签名匹配。

答案 1 :(得分:0)

使用授权标题

这不是您可以共享的URL,但它可能会满足您通过简单工具执行操作的意图。

根据AWS文档,您可以使用正确的授权标头执行此操作:

            DELETE /my-second-image.jpg HTTP/1.1
            Host: bucket.s3.amazonaws.com
            Date: Wed, 12 Oct 2009 17:50:00 GMT
            Authorization: authorization string
            Content-Type: text/plain

在这种情况下,您需要设置的标题或多或少是预签名的URL:

待办事项:当我知道了更多信息后,就会回来...