1. 这篇文章主要是记录如何配置CloudFront将S3的静态和动态 Web 内容(如 .html、.css、.js 和图像文件)缓存到Edge Locations。详细的CloudFront介绍可以参考官方文档。
2. 假设我们有一个名为“bastriver”的bucket,testCloudFront下有两张图片,如图:
3. 首先是进入AWS Console CloudFront的界面,如图:
1) 在CloudFront创建Distribution的界面设置Origin Domain Name时,能够直接选择S3的bucket,如图:
2) Origin Path指的是我们需要发布哪些路径下的文件,如图:
3) Restrict Bucket Access指的是如果我们需要限制/testCloudFront路径下的资源只能通过CloudFront生成的URL访问而不是用S3 Object的URL,选择Yes,如图:
4) 上一步的Restrict Bucket Access如果选择Yes,那么接下来需要配置的Origin Access Identity就是为你的Origin分配一个特殊的CloudFront用户,如图:
而Grant Read Permissions on Bucket将会帮你更新bucket的policy,如图:
5) 下面的Default Cache Behavior Settings这里就不需要配置了,都可以使用默认值,配置介绍可以参考这里。
6) 创建后等几分钟就可以用了,如图:
4. 尝试直接通过上面的Domain Name访问资源。
1) d27k880sp.cloudfront.net/img1.jpg
2) 接下来需要修改bucket的配置,如图:
3) 如果还是不能访问,修改Object的Permissions,如图:
5. 通过以上步骤就能够访问到资源了。
注: 因为CloudFront将资源缓存到了Edge Location,所以当你现在又把bucket的policy改回来,还是能继续访问资源。
6. CloudFront缓存默认是一天,如图:
进入Edit界面:
7. 如果需要flush资源,可以手动Invalidate这些资源 ,如图:
附:
1. CloudFront signed url和S3 pre-signed url的区别。