AWS S3预先签名的URL没有到期日期

sri*_*nka 42 amazon-s3 amazon-web-services pre-signed-url

有没有办法可以生成预签名URL而没有任何到期日期?我正在开发一个电子邮件应用程序,我的附件将保存在S3中.另请告诉我通过JavaScript SDK下载附件的最佳方式是什么.

我正在使用下面的代码

var params = {Bucket: 'bucket', Key: 'key', Expires: 60};
var url = s3.getSignedUrl('getObject', params);
console.log('The URL is', url);
Run Code Online (Sandbox Code Playgroud)

yot*_*ytt 55

预签名网址的最长到期时间是创建时间的一周.所以没有预先设定的URL没有到期时间.

  • 很酷,谢谢.我后来发现[这里](http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html):*"你可以设置的最小值是1,并且最大值为604800(七天)."* (17认同)
  • 您是否有指向该文档的链接?我无处可寻.这将非常有帮助.谢谢. (4认同)
  • 我在任何文档中都没有看到。我在aws sdk随附的presign_v4文件的源代码中的注释中找到了。就我而言,它是通过安装ruby aws sdk gem v 1.58获得的ruby sdk。确切的位置是Home / Library / Ruby / Gems / 2.0.0 / gems / aws-sdk-v1-1.58.0 / lib / aws / s3 / presign_v4.rb (3认同)
  • 最长期限取决于其他一些因素。这里有很好的解释:https://aws.amazon.com/premiumsupport/knowledge-center/presigned-url-s3-bucket-expiration/ (3认同)
  • 当您使用签名 v4 时,7 天的限制适用。 (2认同)

jar*_*mod 19

这取决于您如何生成 S3 预签名 URL。具体来说,您使用的签名版本以及您使用的 IAM 凭证类型。

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

  • IAM 实例配置文件(临时、轮换凭证):有效期最长为 6 小时
  • STS(临时凭证):有效期长达 36 小时
  • IAM 用户(长期凭证):使用签名 v4 时有效期最长为 7 天
  • IAM 用户(长期凭证):在使用签名 v2 时有效至纪元结束

特别注意:

  • 签名 v2可能已弃用
  • 签名 v2 的到期限制与签名 v4 不同
  • 签名 v4比 v2提供了一些安全和效率优势
  • 如果您使用 STS 凭据生成预签名 URL,则该 URL 将在 STS 凭据过期时过期,如果该过期时间早于您为预签名 URL 请求的显式过期时间
  • 创建在纪元结束前有效的预签名 URL 不是最佳安全实践

有关更多信息,请参阅:

  • 事实上,IAM 实例配置文件每 6 小时回收一次,这让我非常头疼。谢谢你! (2认同)

Rav*_*ker 9

对您来说,一种解决方案可能是制作为您的 S3 存储桶提供服务的 AWS CloudFront 分配,仅对分配源访问身份进行有限访问,然后使用 CloudFront 签名 URL。哪个到期时间甚至可以是几年。所以对于无限或半无限的网址,我会推荐这样的解决方案。