使用自定义域名访问 AWS S3

  1. 1. 直接绑定 S3
    1. 1.1. 命名存储桶
    2. 1.2. 启用公有访问
    3. 1.3. 配置存储桶策略
    4. 1.4. 设置域名 CNAME
  2. 2. 借助 CloudFront 实现域名访问
    1. 2.1. 配置 S3
    2. 2.2. 配置 CloudFront
    3. 2.3. 设置域名 CNAME

写在前面

使用自定义域名访问 AWS S3 有两种实现方式,一种是直接将域名和 S3 关联,另一种是使用 CloudFront 。本教程将同时介绍这两种方法。

直接绑定 S3

AWS S3 有一个神奇的特性,域名会和 S3 的存储桶名称绑定,这在 AWS 存储桶命名规则 中并未明确指出,但在示例存储桶名称中出现了以域名格式命名的存储桶。
下面进入教程:

命名存储桶

创建一个存储桶,将存储桶以你的域名命名
例如这里的域名是 example.owo.cab ,地区为 亚太地区(新加坡) ap-southeast-1 ,创建成功后的默认分配域名就是 example.owo.cab.s3.ap-southeast-1.amazonaws.com

启用公有访问

找到 阻止所有公开访问 选项并取消勾选,在下方警告中勾选 我了解,当前设置可能会导致此存储桶及其中的对象被公开

在完成了上面两步操作后点击创建存储桶,等待创建成功后继续进行下面的操作。

配置存储桶策略

进入存储桶,切换至上方权限选项卡,在下面找到存储桶策略,点击编辑并将下方内容全部粘贴,注意将下方 BUCKETNAME 替换为你存储桶的名称。

1
2
3
4
5
6
7
8
9
10
11
12
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKETNAME/*"
}
]
}

设置域名 CNAME

前往你的域名托管商,将域名直接设置 CNAME 解析至 S3 的分配域名即可使用。

借助 CloudFront 实现域名访问

2021年11月 AWS 将 CloudFront 的免费额度修改为 1T 流量1000万次请求 ,并且不再局限于前12个月的试用期,因此使用 CloudFront 还是相当划算的。
这种方式也适用于已经创建了存储桶并且不方便进行数据迁移的用户。
下面进入教程:

配置 S3

参考上方直接绑定,配置存储桶名称,设置公有访问。 (注意:这里的存储桶名称不再局限于域名,可以任意设置)

配置 CloudFront

在源域中选择 Amazon S3 的域名,来源访问选择 公开 。

在下方 缓存键和源请求 选项中按下图配置。

接下来找到 备用域名(CNAME) 和 自定义SSL证书,如下图。

在备用域名中输入自己的域名,然后在 自定义SSL证书 下方点击 请求证书 按钮。这时会打开一个新的页面,请注意打开的页面右上角地区必须为 弗吉尼亚北部 ,选择 请求公有证书 并点击下一步。
证书支持通配符域名,按下图配置即可,然后需要验证 DNS 以确认域名所有权。

验证成功后如下图所示。

然后返回刚刚的 CloudFront 配置页,点击 自定义SSL证书 右侧的刷新按钮,就可以在选框中看到刚刚申请的证书,按下图配置。(安全策略根据实际需求选择即可,可以选择先前的以获得更好的兼容性)

最后,到页面下方点击 创建分配 ,等待创建完成后就可以看到 xx.cloudfront.net 的 CloudFront 分配域名。

设置域名 CNAME

前往你的域名托管商,将域名直接设置 CNAME 解析至 CloudFront 的分配域名即可使用。