如何生成TTL永久有效的Amazon S3文件公开访问链接
根据官方文档说明,我生成的
presigned link(预签名链接)迟早都会过期,而我需要获取可存储在DB中的固定不变的访问链接,这么做的原因是这类链接支持缓存,可避免重复加载资源。
可用实现方案
预签名链接的设计本身就自带有效期属性,无法做到永久有效,要获取固定可缓存的访问链接可参考以下几种常用方案:
- 公开对象(适合无敏感数据的场景):直接将S3对象的访问权限设置为公开读,使用S3提供的原生静态访问路径即可,该路径固定不会变更,可直接存入数据库。如果要规避公开带来的安全风险,可搭配存储桶策略限制仅你的业务域名可访问该资源。
- 服务层代理(适合资源有访问权限控制的场景):数据库不存完整链接,仅存储S3对象的
object key,用户请求资源时由服务端实时生成有效的预签名链接,通过302跳转返回给前端即可。如果需要缓存,可在业务层前接入CDN,配置CDN按请求路径缓存资源即可。 - CloudFront分发(生产环境最推荐方案):将S3作为CloudFront的源站,配置源访问控制(OAC)限制S3仅允许CloudFront访问,无需公开S3对象,直接使用CloudFront的固定分发路径作为资源访问地址,天然支持CDN缓存,路径永久固定可直接存入数据库。
内容的提问来源于stack exchange,提问作者one_tit_shark
相关产品推荐
相关产品推荐

