跳至内容

如何解决我在尝试访问 S3 对象时收到的“Request has expired”错误?

1 分钟阅读
0

当我尝试访问 Amazon Simple Storage Service (Amazon S3) 中的对象时,我收到错误消息“Request has expired”。

解决方法

当您尝试访问已过指定到期日期的预签名 URL 时,Amazon S3 会返回此错误消息。

例如,在以下响应中,预签名 URL 的到期日期为 2022 年 10 月 28 日。如果您在 2022 年 10 月 28 日之后尝试访问该预签名 URL,则会收到一条错误消息:

<Error>
    <Code>AccessDenied</Code>
    <Message>Request has expired</Message>
    <Expires>2022-10-28T07:13:14Z</Expires>
    <ServerTime>2022-10-28T20:03:02Z</ServerTime>
    <RequestId>87E1D2CFAAA7F9A6</RequestId>
    <HostId>
    A9BEluTV2hk3ltdFkixvQFa/yUBfUSgDjptwphKze+jXR6tYbpHCx8Z7y6WTfxu3rS4cGk5/WTQ=
    </HostId>
</Error>

要解决此问题,必须创建一个新的预签名 URL 来访问对象。当您使用 Amazon S3 控制台设置到期时间时,您可以将 URL 的到期时间设置为 1 分钟到 12 小时之间。或者,当您使用 AWS 命令行界面 (AWS CLI) 或 AWS SDK 时,您可以将到期时间设置为 7 天。

要创建新的预签名 URL,请使用以下凭证之一:

  • AWS Identity and Access Management (IAM) 实例配置文件
  • AWS Security Token Service
  • IAM 用户

**注意:**如果您使用临时令牌创建预签名 URL 时,该 URL 会在令牌到期时过期。当用于创建预签名 URL 的凭证被撤销、删除或停用时,该 URL 将过期。即使将 URL 的到期时间设置为晚于凭证的到期时间,也是如此。

相关信息

预签名 URL 的到期时间

为什么我的 Amazon S3 存储桶的预签名 URL 会在我指定的到期时间之前过期?