【问题标题】:Generate presigned s3 Url for DELETE operation为 DELETE 操作生成预签名的 s3 Url
【发布时间】:2018-01-11 21:48:57
【问题描述】:

您好,我正在生成 s3 预签名“GET”网址以使用从 https://gist.github.com/kelvinmo/d78be66c4f36415a6b80 修改的代码显示图像

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

我想为删除操作修改它,除了模糊但说有可能的 aws 文档之外,似乎没有关于如何使用预签名 url 执行此操作的在线信息。我还没有找到任何使用预签名 url 进行删除的在线教程。

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

正如许多文档所说,我尝试将请求中的 Get 更改为 Delete 但这会产生不正确的签名:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    Operations on Objects

    预签名 URL 支持:

    • 获取

    不支持:

    • 列表
    • 复制
    • 删除

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

    【讨论】:

    • 哦,有道理,谢谢!这意味着我不得不使用 API 来删除?!无赖。
    【解决方案2】:

    使用授权标头

    这不是您可以共享的 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:

    TODO:等我弄明白后会回来提供更多信息...

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 2019-12-14
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2023-01-19
      • 2021-12-28
      相关资源
      最近更新 更多