文档中心 CDN Pro AWS S3存储桶加速

AWS S3存储桶加速

更新时间:2022-07-18 19:42:53

AWS S3存储桶加速

在CDN Pro上加速一个AWS S3存储桶

CDN Pro支持与AWS S3配合使用,实现资源云端加速分发与存储。特别地,CDN Pro支持访问私有AWS存储桶。以下我们将以一个简单的示例为您介绍如何在AWS和CDN Pro上配置实现AWS S3存储桶加速。

假设我们有一个域名waytoo.digital,并且我们希望在名为files.waytoo.digital的子域名上设置一个 Amazon Web Services (AWS) 存储桶,以便用户可以通过该子域名访问该存储桶中的文件资源。

以下我们将为您介绍如何创建并访问公开 AWS 存储桶,然后我们将进一步介绍如何访问私有 AWS 存储桶。

步骤1:创建并配置公开的AWS S3 存储桶

  1. 登录 AWS S3 控制台并创建一个新存储桶。存储桶创建向导如下:

网宿科技前三季度净利润4.26亿元,同比增长142.85%

  1. 输入以下存储桶名称(合法的存储桶 DNS 前缀):files-waytoo-digital

  2. 单击下一步“Next”。

  3. 跳过配置选项“Configure options”。

网宿科技前三季度净利润4.26亿元,同比增长142.85%

  1. 默认勾选阻止所有公开访问的权限 “Block all pubilc access”(创建存储桶的时候,AWS默认会希望您创建一个私有桶,你可以在创建完后将其设置为公开从存储桶;否则,AWS 会阻止您继续下一步“Next”)。

  2. 单击下一步“Next”,然后单击保存“Save”。此处您已成功创建您的存储桶。

  3. 为刚创建的存储桶适当地分配内容访问控制权限。权限配置面板“Permissions”如下:

网宿科技前三季度净利润4.26亿元,同比增长142.85%

  1. 取消勾选阻止所有公开访问的权限 “Block all pubilc access”,然后单击保存“Save”。

网宿科技前三季度净利润4.26亿元,同比增长142.85%

  1. 通过复制以下代码并将其粘贴到CORS配置编辑器“CORS configuration”中来设置跨域资源共享 (CORS):
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>

  1. 将文件上传到存储桶以测试我们的存储桶配置,并对上传对象进行读写访问权限授权。

网宿科技前三季度净利润4.26亿元,同比增长142.85%

  1. 点击存储桶中上传的文件,查看上传的文件对象URL“Object URL”。

网宿科技前三季度净利润4.26亿元,同比增长142.85%

Amazon S3 默认会按照一定的格式生成访问存储桶文件的URL,您可以看到我们得到的文件URL是 https://files-waytoo-digital.s3.amazonaws.com/file_1m.bin。其中,对Amazon S3文件的访问域名格式一般为:<BUCKET_NAME>.<REGION>.amazonaws.com,在此处的示例中,Amazon S3 没有返回区域,而是返回S3。但无论如何,我们可以使用这个存储桶域名来作为 CDN Pro的回源访问地址,稍后我们将会使用到这个域名 files-waytoo-digital.s3.amazonaws.com

步骤2:创建并配置测试 CDN Pro 加速项目

登录CDN Pro控制台。并按照我们在快速入门这篇文章中介绍,开始逐步配置并验证测试加速项目。

2.1 配置调度域名

  1. 在调度域名页面中,创建一个边缘调度域名files-waytoo-digital.qtlcdn.com

网宿科技前三季度净利润4.26亿元,同比增长142.85%

  1. 创建边缘调度域名后,在终端访问测试它以确保它能正常工作。
$ping files-waytoo-digital.qtlcdn.com
PING files-waytoo-digital.qtlcdn.com (14.0.119.186): 56 data bytes
64 bytes from 14.0.119.186: icmp_seq=0 ttl=56 time=3.775 ms
64 bytes from 14.0.119.186: icmp_seq=1 ttl=56 time=3.953 ms
64 bytes from 14.0.119.186: icmp_seq=2 ttl=56 time=3.739 ms
64 bytes from 14.0.119.186: icmp_seq=3 ttl=56 time=4.733 ms

2.2 配置证书

  1. 创建证书。在证书页面中,单击 “新建证书” 按钮,创建一本新证书,并使用 Let’s Encrypt 自动更新这本证书。其中:1)填写 “证书名称” 和 “证书说明” 字段;2)将 “自动更新” 设置为 “Let’s Encrypt” 选择 “创建方法” 为 “自动生成”,选择公钥算法 “RSA2048” ,然后在 “授权域名” 和“SAN” 字段中分别输入 files.waytoo.digital;3)单击“保存”按钮以保存配置并创建一本新证书。

网宿科技前三季度净利润4.26亿元,同比增长142.85%

  1. 将证书部署到演练环境。在前面的步骤中我们已经创建了证书,现在我们可以部署它。为了确保这本证书可以符合我们的预期,我们将在将证书发布到生产环境之前将其部署到演练环境进行测试。

网宿科技前三季度净利润4.26亿元,同比增长142.85%

2.3 配置加速项目

  1. 创建加速项目。在加速项目页面中,点击 “新建加速项目” 。其中:1)输入 “项目名称” 、 “项目描述” 、“服务类型” ;2)在 “加速域名” 中输入至少一个域名。CDN Pro将提取客户端请求中的 Host 头部来匹配加速加速域名,以读取加速项目配置来进行加速分发。

网宿科技前三季度净利润4.26亿元,同比增长142.85%

  1. 添加Amazon S3存储桶源站。在 “源站” 下点击 “添加” 按钮,添加一个 AWS S3 存储桶,以将其作为CDN Pro的回源地址。其中:1) “源站名称” :这里面我们设置为 aws_origin ,稍后我们将会在边缘逻辑配置中引用这个源站;2) “主机名/IP地址” :设置添加AWS S3存储桶的访问域名 files-waytoo-digital.s3.amazonaws.com ,并点击 “验证” 按钮,验证源站的联通性;3)“Host请求头” :展开 “高级配置” ,在 “Host请求头” 字段中填写 files-waytoo-digital.s3.amazonaws.com ;4)点击“保存” 按钮,即成功创建了Amazon S3 Bucket源。

注意:HOST请求头必须配置为Amazon S3 Bucket的文件访问域名,如果缺省该配置,则CDN Pro回到Amazon S3存储桶源的请求HOST头将会默认携带加速域名 files.waytoo.digital ,此时Amazon S3 存储桶将会响应错误 “Bucket not found” 。

网宿科技前三季度净利润4.26亿元,同比增长142.85%
网宿科技前三季度净利润4.26亿元,同比增长142.85%

  1. 边缘逻辑配置。在边缘逻辑配置页下点击“默认缓存模板”按钮,我们选择导入一个全站加速的基础配置。其中:1)缓存模板中所有路径资源的源站,我们均选择为 aws_origin ;2)指定路径缓存中,我们新增勾选强制忽略来自源站的请求头,以控制CDN Pro上的缓存行为;3)点击“确定”按钮完成缓存模板导入,此时您就可以在边缘逻辑编写器中看到边缘逻辑脚本(您也可以自行配置编辑此脚本以符合您的业务预期)。
<kbd>![image.png](https://www.wangsu.com/wos/draft/help_doc/zh_cn/22365/25423/1658143559259_image.png)</kbd>

location / {
    proxy_cache_bypass 1;
    proxy_no_cache 1;
    origin_pass aws_origin;
}
location ~* \.(exe|wmv|mp3|wma|ogg|swf|flv|mp4|avi|mpg|mpeg|f4v|rmvb|rm|3gp|img|cur|gif|png|jpe|ico|bmp|jpeg|jpg|rpm|deb|tar|gz|bin|bz2|zip|rar|ipa|apk|jar|sis|xap|msi|cab|7z|pdf|doc|docx|xls|xlsx|ppt|pptx|txt|css)$ {
    set $cache_misc $cache_misc$sorted_querystring_args;
    if ( $args = '' )
    { set $cache_time 24h; }
    else
    { set $cache_time 10m; }
    proxy_cache_valid 200 206 $cache_time;
    proxy_ignore_headers Expires Cache-Control Set-Cookie;
    origin_pass aws_origin;
}
location ~* \.(html/htm/js)$ {
    set $cache_misc $cache_misc$sorted_querystring_args;
    if ( $args = '' )
    { set $cache_time 12h; }
    else
    { set $cache_time 0m; }
    proxy_cache_valid 200 206 $cache_time;
    proxy_ignore_headers Expires Cache-Control Set-Cookie;
    origin_pass aws_origin;
}
location ~* \.(shtml/html/htm/js)$ {
    set $cache_misc $cache_misc$sorted_querystring_args;
    if ( $args = '' )
    { set $cache_time 12h; }
    else
    { set $cache_time 0m; }
    proxy_cache_valid 200 206 $cache_time;
    proxy_ignore_headers Expires Cache-Control Set-Cookie;
    origin_pass aws_origin;
}

  1. 为加速项目配置证书。接下去我们需要为加速项目配置一本TLS证书以支持https安全分发。在TLS配置页面下,点击 “TLS证书” 字段,下拉选择我们刚刚创建并部署在演练环境中的证书。

网宿科技前三季度净利润4.26亿元,同比增长142.85%

  1. 保存/验证并测试。以上配置完成后,点击页面下方的 “保存” 按钮,以提交创建加速项目的表单配置。假设保存和验证后没有出现问题,您就可以将该加速项目部署到演练环境进行测试。

网宿科技前三季度净利润4.26亿元,同比增长142.85%

2.4 在演练环境中测试

要在演练环境中测试,您应该知道演练环境服务器的 IP 地址,您可以通过以下指令获取:

$ dig staging.qtlgslb.com
...
;; ANSWER SECTION:
staging.qtlgslb.com.    59  IN  A   163.171.228.89
staging.qtlgslb.com.    59  IN  A   163.171.230.47
...

选择一个返回的 IP 地址,并检查我们配置和部署的内容是否能正常工作,如果正常工作,则第一次访问,CDN Pro会回到Amazon S3源站获取内容并缓存,同时正常响应200给客户端。

❯ curl -I https://files.waytoo.digital/file_1m.bin --resolve files.waytoo.digital:443:163.171.228.89
HTTP/2 200
content-type: application/octet-stream
content-length: 1024000
x-amz-id-2: eQa0SXtgPk3A+jASSyarZLw6FgFtXg+7m+Br6Xr/YBXQ0aot/dBTKBf5QSoE0x8TwzqBKXJ+MBw=
x-amz-request-id: 4Z0SEN8YER8PBYAG
date: Fri, 16 Oct 2020 03:30:16 GMT
last-modified: Fri, 16 Oct 2020 02:36:45 GMT
etag: "fcaebe20d9b3e73086dcb0ba5def8e52"
x-cache-status: MISS
x-qtl-request-id: 4c394e8fd8cc514c5f1e437ac3daf969
x-via: 2.0 na-us-iad1-cache-0003 [MISS 200]
age: 19
server: QTL_Cache/1.2.03
accept-ranges: bytes

再次请求相同的项目,因为在第一次请求测试中,CDN Pro上已经有对应的缓存资源,因此我们将看到缓存状态为为命中 “HIT”。

❯ curl -I https://files.waytoo.digital/file_1m.bin --resolve files.waytoo.digital:443:163.171.228.89
HTTP/2 200
content-type: application/octet-stream
content-length: 1024000
x-amz-id-2: eQa0SXtgPk3A+jASSyarZLw6FgFtXg+7m+Br6Xr/YBXQ0aot/dBTKBf5QSoE0x8TwzqBKXJ+MBw=
x-amz-request-id: 4Z0SEN8YER8PBYAG
date: Fri, 16 Oct 2020 03:30:16 GMT
last-modified: Fri, 16 Oct 2020 02:36:45 GMT
etag: "fcaebe20d9b3e73086dcb0ba5def8e52"
x-cache-status: HIT
x-qtl-request-id: dfa55f3549ee4fd0824472f83d06c6c5
x-via: 2.0 na-us-iad1-cache-0003 [HIT]
age: 13
server: QTL_Cache/1.2.03
accept-ranges: bytes

以上我们测试配置按预期工作,因此我们可以将它部署到生产环境中。

2.5 部署到生产

要将配置部署到生产环境,需要先到证书页面和加速项目页面下,分别将其部署到生产环境中。

网宿科技前三季度净利润4.26亿元,同比增长142.85%

2.6 在生产环境中测试

在我们将域名的用户访问流量引流到CDN Pro生产环境之前,我们可以先在生产环境中检查配置是否如期运行,若响应正常,则恭喜您已成功将加速项目部署到生产环境中:

❯ curl -I https://files.waytoo.digital/file_1m.bin --resolve files.waytoo.digital:443:14.0.119.186
HTTP/2 200
content-type: application/octet-stream
content-length: 1024000
x-amz-id-2: gdpoBl4Uk1FbJ6i8tMHXYZRcPxAAR9NTY/EziqHr6Kbrni887rU+suUINzNof4sltrCRCq4I4TE=
x-amz-request-id: C30F30F6BE2B081E
date: Fri, 16 Oct 2020 03:21:14 GMT
last-modified: Fri, 16 Oct 2020 02:36:45 GMT
etag: "fcaebe20d9b3e73086dcb0ba5def8e52"
x-cache-status: HIT
x-qtl-request-id: 16a3be4dfdc381e44b90c86bec087f47
x-via: 2.0 as-kr-icn1-cache-0003 [HIT]
age: 5575
server: QTL_Cache/1.2.03
accept-ranges: bytes

测试业务如期运行之后,我们可以创建/更改域名的 DNS CNAME 记录,并将其指向我们之前创建的边缘调度域名 files-waytoo-digital.qtlcdn.com

❯ dig files.waytoo.digital
...
;; ANSWER SECTION:
files.waytoo.digital.   299 IN  CNAME   files-waytoo-digital.qtlcdn.com.
files-waytoo-digital.qtlcdn.com. 19 IN  A   14.0.119.186
...

到这里,所有访问域名 files.waytoo.digital 的请求都会经过CDN Pro进行加速分发,并回源到Amazon S3 Bucket files-waytoo-digital.s3.amazonaws.com 获取文件资源!

步骤3:访问私有存储桶

前面我们已经创建一个公开的存储桶并实现对其上文件资源的加速分发。现在,让我们将这个存储桶设置为私有存储桶,并设置允许 CDN Pro 来访问它。

3.1 将Amazon S3 Bucket设置为私有存储桶

前面我们将存储桶设置为公开的存储桶。现在,我们想将存储桶设置为私有存储桶,以限制费授权的外部请求访问存储桶的资源。我们回到AWS S3的存储桶配置页面中,在权限设置页面下(Permissons),勾选阻止所有公开访问的权限 “Block all pubilc access”,以将存储桶设为私有桶。此时,从私有桶获取文件资源时,需要携带秘钥,AWS S3鉴权通过后才会允许访问。

网宿科技前三季度净利润4.26亿元,同比增长142.85%

3.2 CDN Pro上开启回源身份验证

现在我们可以编辑我们的加速项目,并设置AWS S3回源鉴权。在此之前,您需要先自行从AWS S3上了解并获取如下信息:

  • AWS 存储桶地区
  • AWS 访问密钥ID(Access Key)
  • AWS 访问密钥加密串(Secret Key)
  1. 在加速项目页面,选择您之前创建配置的加速项目,克隆出一个新的版本。

  2. 编辑这个版本,并编辑修改前面设置的 aws_origin 源站。

  3. 在源站高级配置中,我们开启配置AWS S3回源鉴权:1) “认证”:选择为 AWS S3 选项;2)“地区”:选择我们创建的AWS S3 Bucket的存储地区;3)“Access Key”:填写AWS S3 访问密钥ID;4)“Secret Key” :填写AWS S3 访问密钥加密串。填写完成后点击“保存”按钮。

网宿科技前三季度净利润4.26亿元,同比增长142.85%

  1. 将加速项目版本部署到演练环境并确保其运行符合预期。
curl -I https://files.waytoo.digital/file_1m.bin --resolve files.waytoo.digital:443:163.171.228.89
HTTP/2 200
content-type: application/octet-stream
content-length: 1024000
x-amz-id-2: oTixActu2B9rtfEvOUDkmelQxPIgFYfRdC4T950YuXL/tv7Zu+pSHgkCXiAuouaRpjLpqTyf3xE=
x-amz-request-id: AQ7S4P0H1K0H0R9G
date: Fri, 16 Oct 2020 09:04:34 GMT
last-modified: Fri, 16 Oct 2020 09:04:10 GMT
etag: "fcaebe20d9b3e73086dcb0ba5def8e52"
x-cache-status: HIT
x-qtl-request-id: 105b10794ee438213fac428c0ef60379
x-via: 2.0 na-us-iad1-cache-0003 [HIT]
age: 16
server: QTL_Cache/1.2.03
accept-ranges: bytes

  1. 现在您可以将其部署到生产环境中。

到这里,就完成了我们的AWS S3私有桶配置,并实现其资源的加速分发。

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!