1 简介
Amazon CloudFront 是亚马逊云服务的内容分发网络服务,即CDN(Content Delivery Network),
详细介绍 https://aws.amazon.com/cn/cloudfront/
价格介绍 https://aws.amazon.com/cn/cloudfront/pricing/
CloudFront 一般主要为两种 Origin 提供内容分发, 即 Amazon S3 和 Elastic Load Balance。
2 为 Amazon S3 设置CloudFront
2.1 设置 Amazon S3
可以使用默认设置创建一个 S3 Bucket, 创建的Bucket默认将不允许被公开访问, 详细其他设置可搜寻并参见具体设置方法。
在 Amazon S3 上传一个文件如 1.txt, 上传后, 点击该文件, 点击 Permissions -> Edit, 在 Everyone (public access) 为 Objects 勾上 Read, 设置该文件为公开访问。
2.2 设置 CloudFront
CloudFront 里点击 ‘Create Distribution', 打开后在 'Origin domain' 里选择你创建的 Amazon S3 名字, 在 'Name' 里为你的 CloudFront 定义一个名字 mycloudfront。
如果只使用 HTTPS, 在 Defaut cache behavior -> Viewer -> Viewer protocol policy 选择 HTTPS only。
在 Cache key and origin requests 选择 Cache policy and origin request policy, Cache plicy 选择为S3 默认的 CachingOptimized。
如果要使用自定义的域名, 在 ’Altermate domain name (CNAME)' 部分点击 ‘Add item', 输入域名如 www.mys3cloudfront.com, 在 ’Custom SSL certificate' 里上传SSL 证书。
其他为默认设置,点击最下方按钮 Create distribution, 返回等待它部署完成。
为了用自定义的域名直接访问, 在你的 DNS 服务商那建立 www.mycloudfront.com 与 这个 CloudFront 的域名, 如 xxxxxxxx.cloudfront.net 的映射。 映射生效后,可在浏览器上输入 https://www.mys3cloudfront.com/1.txt 下载之前创建的 Amazon S3 里上传的 1.txt。 如果没有自定义域名, 可在浏览器上输入 https://xxxxxxxx.cloudfront.net/1.txt 下载 1.txt。
2.3 更新文件
Amazon S3 里上传的文件为静态文件, 如果需要 CloudFront 的所有结点更新该文件要让原来的文件无效 (Invalidation), 否则只在 Amazon S3 上传更新了文件后, 用户通过 CloudFront 链接下载的仍然是旧文件。 步骤为:
- 在Amazon S3 上传一个新的 1.txt
- 在 CloudFront 里点击创建的 mycloudfront -> Invalidations -> Create invalidation, 输入 /1.txt ,
- 点击 Create invalidation
等待重新部署后, 即可下载最新的 1.txt
3 为 Elastic Load Balance 设置 CloudFront
3.1 设置 EC2
建立 EC2 的一个 Instance, 在该 Instance 里设置自定义域名(需要有该域名的SSL证书) www.myelbcloudfront.com。
3.2 设置 Target groups
在 Load Balancing -> Target Groups 里点击 Create target group, 打开后输入名称 mytg, 在 VPC 里选择 Instance 在的 VPC 地址, Health checks -> Health check path 里设置一个健康检查的URL。
3.3 设置 Load balance
在 Load Balancing -> Load balancers 里点击 Create load balancer, 点击 Network Load Balancer 下的 Create。 打开后在 Load balancer name 里输入名称 mybl。
在 VPC 里选择 Instance 在的 VPC 地址, Mappings 里选择 Instance 在的 Avalibility Zone, 选择一个 Subnet 。 如需要Elastic IP address (静态 IP地址), 在 IPv4 settings 里选择一个空余有效的。
在 Listener -> Protocol 选择 TLS (如只需要 HTTPS) , 在 Default action 里选择刚创建的 Target group : mytg。
点击最下方 Create load balancer。
3.4 设置 CloudFront
设置与 Amazon S3 的 CloudFront 基本一致, 不一致的为:
- 在 Origin domain' 里选择你创建的 Load balancer 名称
- Allowed HTTP methods 里选择 GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
- Cache key and origin requests 选择 Legacy cache settings -> Headers -> Include the following headers, Add header 里选择 Host, Query strings 里选择 All 或者你指定的 Query String,这样在 CloudFront 里请求的 Host 和 Get 的请求参数都能传递到 EC2。
为了用自定义的域名直接访问, 在你的 DNS 服务商那建立 www.myelbcloudfront.com 与 这个 CloudFront 的域名, 如 xxxxxxxx.cloudfront.net 的映射。 映射生效后,可在浏览器上输入 www.myelbcloudfront.com 访问该网站。 如果没有自定义域名, 可在浏览器上输入 https://xxxxxxxx.cloudfront.net 访问它。
参考: AWS 云产品 CloudFront + ELB + EC2 + S3 构建虚拟主机动+静分离站点_wzlinux的博客