通过CloudFront访问S3存储桶的指定内容
通过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中存储的文件提供了很多增强功能,是非常推荐的服务架构选择。