如何使用Terraform失效上传至S3的本地文件对应的CloudFront缓存?
针对S3+CloudFront的本地文件变更缓存失效方案
我自己的场景是把本地文件上传到S3桶后通过CloudFront分发,需要在文件更新时触发CloudFront缓存失效,下面是我在用的方案——虽然有不少局限,但刚好能满足我的需求:
实现方式
- 写个简单的本地脚本,把文件上传S3和缓存失效操作绑在一起:
- 先用AWS CLI把本地文件同步到S3:
aws s3 cp ./updated-file.js s3://my-static-bucket/assets/ - 紧接着调用CloudFront失效API,指定刚上传的文件路径:
aws cloudfront create-invalidation --distribution-id XXXXXXX --paths "/assets/updated-file.js"
- 先用AWS CLI把本地文件同步到S3:
- 如果是批量更新文件,可以把失效路径设为通配符(比如
"/assets/*"),减少API调用次数
方案局限
- 单文件失效会产生CloudFront API调用成本,批量操作更经济但我场景里用不上
- 缓存失效不是实时的,通常要等1-5分钟才会生效
- 依赖本地环境已经配置好AWS CLI的权限和凭证,换机器得重新配置
内容的提问来源于stack exchange,提问作者Algamest
相关产品推荐
相关产品推荐

