【问题标题】:Does an S3 signed url expire during the action?S3 签名的 url 在操作期间是否过期?
【发布时间】:2019-12-12 18:21:58
【问题描述】:

我有一个流程,我可以在其中获得一个在 5 分钟后过期的存储桶的签名 URL。一旦我得到签名的 url,我就开始将文件上传到存储桶。

比方说,完全上传文件需要 6 分钟。会发生什么?

到期时间是指操作(例如下载、上传)可以开始的时间还是操作完成的时间?

【问题讨论】:

  • 当您创建预签名 URL 时,该 URL 仅在您在创建时提到的持续时间内有效。这是上传操作后应该完成的时间
  • 你有来源吗?
  • 这里提到了一点,预签名的 URL 仅在指定的持续时间内有效,这意味着上传应该在该持续时间内完成。
  • 可以,但没有说明上传过程中网址是否失效。

标签: amazon-web-services amazon-s3 pre-signed-url


【解决方案1】:

到期时间是指操作(例如下载、上传)可以开始的时间还是操作完成的时间?

两者:-)
当动作是原子的并且在链接有效时启动,即使在此过程中链接变为无效,此动作也会完成。
但是,如果动作是多步骤的(例如,多部分文件上传),那么使用无效链接执行的步骤将失败。

Source of truth.

【讨论】:

    【解决方案2】:

    根据您的用例,我模拟了环境,在启动上传时,没有错误,但一旦 url 过期,上传失败。

    所以下面是我使用预签名 URL 上传并且上传 url 过期时得到的响应:

        <?xml version="1.0" encoding="UTF-8"?>
    <Error>
        <Code>AccessDenied</Code>
        <Message>Request has expired</Message>
        <Expires>2019-12-13T06:45:29Z</Expires>
        <ServerTime>2019-12-13T06:45:33Z</ServerTime>
        <RequestId>8D0F75A23E9A1EC2</RequestId>
        <HostId>CNhlDK4RRVowLZSHdSF7pPJksIhnZdh99M3Sc9aBqnyCxLDlGG3XYMV0GMIdpz1pgM+HKLxsKVE=</HostId>
    </Error>
    

    所以很明显,无论是 POST 还是 PUT,在上传时,如果 url 在那里过期,将不会在 AWS s3 存储桶控制台中创建文件,并且 AWS 也会给出一个响应,告诉 Request Expired

    【讨论】:

    • 这是不正确的,或者在其术语中可能不清楚。如果 URL 在“上传时”过期 - 即上传开始后 - 允许上传继续并成功。
    猜你喜欢
    • 2018-04-02
    • 2021-07-25
    • 1970-01-01
    • 2020-12-12
    • 2020-10-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    相关资源
    最近更新 更多