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

1 分钟阅读
0

我使用临时令牌为 Amazon Simple Storage Service (Amazon S3) 存储桶创建了预签名 URL。但是,此 URL 在我指定的过期时间之前过期。为什么会出现这种情况? 如何创建具有更长有效时间的预签名 URL?

解决方法

如果您使用临时令牌创建了预签名 URL,则该 URL 将在令牌过期时过期。即使 URL 的过期时间较晚,URL 也会过期。

可用于创建预签名 URL 的凭证包括:

  • **AWS Identity and Access Management(IAM)实例配置文件:**有效期长达 6 小时。
  • **AWS Security Token Service(STS):**由 AWS Identity and Access Management(IAM)用户签名时有效期最长为 36 小时,或者由根用户签名时有效期最长为一小时。
  • **IAM 用户:**在使用 AWS 签名版本 4 时,有效期长达 7 天。

要创建有效期长达 7 天的预签名 URL,请为开发工具包指定 IAM 用户凭证(访问密钥和秘密访问密钥)。然后,使用 AWS 签名版本 4 生成预签名 URL。有关示例,请参阅 AWS 签名版本 4 中的签名计算

创建预签名 URL 时,请记住以下几点:

  • 代入角色的服务(例如 AWS Lambda 执行角色)不一定符合该角色的会话持续时间设置
  • 由于预签名 URL 向拥有 URL 的任何人授予 Amazon S3 存储桶访问权限,因此最佳实践是适当保护它们。
  • 如果您使用临时令牌创建了预签名 URL,则该 URL 将在令牌过期时过期。即使 URL 的过期时间较晚,也是如此。

要允许用户访问 Amazon S3 存储桶中超过 7 天的对象,请考虑使用以下选项之一:


相关信息

使用预签名 URL 分享对象

GetSessionToken

从实例元数据中检索安全凭证

验证请求:使用查询参数(AWS 签名版本 4)

Boto 3 文档:S3

AWS 官方
AWS 官方已更新 2 年前