如何获取适用于AWS CLI的S3存储桶文件夹路径以执行CloudFront缓存失效操作
获取AWS CLI中用于CloudFront缓存失效的S3文件夹路径方法
我来帮你理清楚怎么拿到正确的路径,让CloudFront缓存失效精准命中你的目标目录和所有子内容:
核心前提:S3没有真正的“文件夹”
首先要明确,AWS S3本质是对象存储,没有传统意义上的文件夹——所谓的“文件夹”其实是对象键的前缀。比如你在S3控制台看到的assets/images/文件夹,实际对应的是所有键以assets/images/开头的对象(比如assets/images/logo.png、assets/icons/btn.svg这类)。CloudFront的缓存失效路径就是基于这个前缀来构造的。
步骤1:确认S3对象的前缀结构
先用AWS CLI命令查看目标存储桶里的对象键,确认你要失效的目录对应的前缀:
aws s3 ls s3://your-bucket-name/ --recursive
执行后会列出所有对象的完整键,比如:
2024-05-20 10:00:00 0 docs/reports/ 2024-05-20 10:05:00 12345 docs/reports/2024/q1.pdf 2024-05-20 10:10:00 67890 docs/reports/2024/q2.pdf 2024-05-20 10:15:00 1234 docs/reports/2023/annual.pdf
这里目标“目录”对应的前缀就是docs/reports/。
步骤2:构造CloudFront缓存失效路径
按照你提到的格式要求,把S3前缀转换成CloudFront能识别的失效路径:
- 给前缀加上开头的斜杠(因为CloudFront的路径是从分发根目录开始的)
- 最后加上
*,表示匹配该路径下的所有子目录和文件
比如上面的前缀docs/reports/就变成:
/docs/reports*
注意:不需要包含S3存储桶名,因为CloudFront的路径是相对于你的分发原点(如果原点是S3桶,路径直接对应对象键的前缀部分)。
步骤3:验证并执行缓存失效
用构造好的路径执行CloudFront失效命令:
aws cloudfront create-invalidation --distribution-id YOUR-CLOUDFRONT-DIST-ID --paths "/docs/reports*"
执行成功后,CloudFront会把所有匹配/docs/reports*的路径缓存标记为失效,用户就能访问到S3里的最新文件了。
额外注意事项
- 如果你的CloudFront分发配置了自定义原点路径(比如原点路径设为
/static),那要调整失效路径:比如S3里的static/assets/前缀,对应CloudFront的路径就是/assets*,因为原点路径会自动加上前缀映射到S3对象。 - 避免末尾多斜杠:比如不要写成
/docs/reports/*,这样只会匹配docs/reports/下直接的文件,不会包含子目录;而/docs/reports*会匹配所有以docs/reports开头的路径,包括子目录里的内容。
内容的提问来源于stack exchange,提问作者Urvesh Ghelani
相关产品推荐
相关产品推荐

