通过CloudFront访问S3存储桶的指定内容
通过CloudFront访问S3存储桶的指定内容

通过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的准备和设置

  1. 首先我们先去创建一个S3的桶来方便我们测试, 权限我们可以设置为阻止所有公开访问即可。 其他都可以默认,然后直接创建存储桶。

    iShot_2023-12-12_14.03.13

  2. 然后我们随便创建一个文件夹,这里,我的名字取为tu,并在下面放了一张用于测试的图片(test.jpg)

    iShot_2023-12-12_14.06.24

    到这里,我们s3存储桶的准备工作就结束了。

设置CloudFront访问S3

要设置CloudFront来访问S3桶中的文件,主要有以下几个步骤:

  1. 在CloudFront控制台中,创建一个Web分发。作为源站,选择您的S3桶。

    iShot_2023-12-12_14.40.58

  2. 创建完成后会让我们配置权限在S3桶的权限设置中,编辑桶策略,允许CloudFront服务主体账户访问桶内的对象。
    iShot_2023-12-12_14.48.23

    {
           "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"
                       }
                   }
               }
           ]
         }

    iShot_2023-12-12_14.50.14

  3. 查看CloudFront为您的分发分配的域名,可以直接使用该域名来访问S3桶中文件。
    iShot_2023-12-12_14.52.03

  4. (可选)如果您想使用自定义域名,可以在CloudFront中设置CNAME,将您购买的域名指向CloudFront分发的域名。
    如果想制定S3存储桶的具体文件夹下面的内容,可以在S3桶里创建好对应的文件夹,行为里面进行设置。

    iShot_2023-12-12_14.53.07

配置完成后,您就可以通过CloudFront加速访问到S3桶中的所有文件对象了。

CloudFront高级功能

除了基本的访问加速功能,CloudFront还提供了许多高级功能,有助于提高性能、安全性和可管理性:

缓存控制:可以为文件路径设置缓存最短和最长时间,控制文件内容更新的缓存策略。

地理访问限制:通过设置黑名单或白名单,限制某些地区用户无法访问您的内容分发。

访问日志:CloudFront 访问日志可以记录用户访问信息,然后存放到S3中,用于数据分析。

HTTPS 加密传输:CloudFront可以为网站开启HTTPS,确保访问的安全性。

正确使用这些功能设置,可以进一步提升我们通过CloudFront代理S3中文件对象的好处。

总结

通过CloudFront访问S3中存储的文件,主要好处包括:

  • 加速文件访问速度,减少等待时间
  • 提高可用性和容错能力
  • 支持HTTPS传输保证访问安全
  • 实现访问日志分析和地域访问控制
  • 无需运维,自动扩展,简单方便

可以看到,作为S3完美的内容分发网络,CloudFront为我们访问S3中存储的文件提供了很多增强功能,是非常推荐的服务架构选择。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注