【发布时间】:2020-01-18 06:20:04
【问题描述】:
我们将文档上传到 AWS S3 并使用 boto3 生成了一个预签名 URL,有效期为 100 年。
我们检索到的预签名 URL 是 http://my_document.s3.amazonaws.com/my_document.htm?Signature=AWS_GENERATED_SIGNATURE&Expires=4732867559&AWSAccessKeyId=MY_ACCESS_KEY
但是,当我们使用 URL 访问文档时,我们会收到以下错误:
<Error>
<Code>AccessDenied</Code>
<Message>
Invalid date (should be seconds since epoch): 4732867559
</Message>
<RequestId>D7F5624326124615</RequestId>
<HostId>
AWS_HOST_ID
</HostId>
</Error>
为什么 AWS S3 由于到期时间值而拒绝打开文档,它本身允许我们使用它来生成预签名 URL?
这里有人在使用 boto3 与 AWS S3 集成时遇到过类似的问题吗?
【问题讨论】:
-
预签名 URL 最长 7 天过期。
-
@ArunK 注意到 Jarmod 在该答案中的评论。这仅适用于 Signature V4。上面的示例是 Sig V2,因为它使用
AWSAccessKeyId而不是X-Amz-Credential,如 V4 中所示。 V2 使用 Unix 纪元,结束于 2038-01-19T03:14:08Z。
标签: amazon-web-services amazon-s3 boto3 pre-signed-url