通过CloudFront访问S3存储桶的指定内容
简介
Amazon CloudFront可以作为Amazon S3的缓存层,通过Edge Location节点来加速用户访问S3桶中文件对象的速度。使用CloudFront访问S3中存储的文件,可以提供更快的速度,同时也可以添加其他功能,比如地理访问限制、访问日志等。 这次我将通过Amazon CloudFront的一些设置来访问S3存储桶里面指定的一些内容。 这样不仅不需要开放S3的所有权限,还能提高一定的安全性。
CloudFront简介
CloudFront是亚马逊的内容分发网络服务,作用是在全球各地部署缓存节点,加速用户访问来自S3、EC2等亚马逊服务或外部源站的文件。 简单地说就是我们平时使用的CDN。
CloudFront的工作原理是当用户请求访问文件时,就近的Edge Location节点会试图匹配缓存的文件。如果匹配到就直接响应,如果没有匹配的缓存就会从源站获取文件,然后写入到该节点并同步到其它节点,最后响应给用户。随后的用户请求可以直接从边缘节点获取文件,极大地提升访问速度。
使用CloudFront主要有以下好处:
- 速度快:就近访问边缘节点,文件传输更快
- 可靠安全:CloudFront整合了S3、自定义域名的安全配置
- 可扩展性强:自动应对突发流量,无需运维
- 更多功能:如地理访问控制、访问日志分析等
前提条件
要完成本文的操作,需要准备以下前提条件:
- AWS账号:需要注册AWS账号并登录控制台。
- S3桶:在S3服务中创建存放静态网站内容的桶。
- IAM权限:确保您的IAM用户有操作CloudFront和S3的权限。
- 域名(可选):如果要使用自定义域名访问CloudFront,需要准备您已拥有的域名。
S3的准备和设置
-
首先我们先去创建一个S3的桶来方便我们测试, 权限我们可以设置为阻止所有公开访问即可。 其他都可以默认,然后直接创建存储桶。
-
然后我们随便创建一个文件夹,这里,我的名字取为tu,并在下面放了一张用于测试的图片(test.jpg)
到这里,我们s3存储桶的准备工作就结束了。
设置CloudFront访问S3
要设置CloudFront来访问S3桶中的文件,主要有以下几个步骤:
-
在CloudFront控制台中,创建一个Web分发。作为源站,选择您的S3桶。
-
创建完成后会让我们配置权限在S3桶的权限设置中,编辑桶策略,允许CloudFront服务主体账户访问桶内的对象。
{ "Version": "2008-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipal", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::cloudfront-s3-123/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::账号ID:distribution/E2YJ0VFUAGVI83" } } } ] }
-
查看CloudFront为您的分发分配的域名,可以直接使用该域名来访问S3桶中文件。
-
(可选)如果您想使用自定义域名,可以在CloudFront中设置CNAME,将您购买的域名指向CloudFront分发的域名。
如果想制定S3存储桶的具体文件夹下面的内容,可以在S3桶里创建好对应的文件夹,行为里面进行设置。
配置完成后,您就可以通过CloudFront加速访问到S3桶中的所有文件对象了。
CloudFront高级功能
除了基本的访问加速功能,CloudFront还提供了许多高级功能,有助于提高性能、安全性和可管理性:
缓存控制:可以为文件路径设置缓存最短和最长时间,控制文件内容更新的缓存策略。
地理访问限制:通过设置黑名单或白名单,限制某些地区用户无法访问您的内容分发。
访问日志:CloudFront 访问日志可以记录用户访问信息,然后存放到S3中,用于数据分析。
HTTPS 加密传输:CloudFront可以为网站开启HTTPS,确保访问的安全性。
正确使用这些功能设置,可以进一步提升我们通过CloudFront代理S3中文件对象的好处。
总结
通过CloudFront访问S3中存储的文件,主要好处包括:
- 加速文件访问速度,减少等待时间
- 提高可用性和容错能力
- 支持HTTPS传输保证访问安全
- 实现访问日志分析和地域访问控制
- 无需运维,自动扩展,简单方便
可以看到,作为S3完美的内容分发网络,CloudFront为我们访问S3中存储的文件提供了很多增强功能,是非常推荐的服务架构选择。