

通过自定义域名访问 Amazon S3 中的图像资源
source link: https://blog.51cto.com/jiemei/10245490
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在这篇博文中,我们将学习如何使用 Amazon CloudFront 和 Amazon S3 搭建一个安全的静态内容分发网络,并通过自定义域名 img.example.com
访问存储在 S3 中的图像资源。
准备工作:
- 一个 AWS 账户
- 一个已注册的域名
example.com
- 一个已创建ssl证书
*.example.com
步骤 1: 创建 S3 存储桶
- 登录 AWS 管理控制台,进入 S3 服务页面。
- 创建一个新的存储桶,命名为
img-bucket
。 - 将您的图像资源上传到
img-bucket
存储桶中。 - 在存储桶的"权限"选项卡中,点击"存储桶策略"按钮,并添加以下策略:
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "AllowCloudFrontServicePrincipal",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::img-bucket/*",
"Condition": {
"StringLike": {
"AWS:SourceArn": "arn:aws:cloudfront::<your-account-id>:distribution/*"
}
}
}
]
}
请将 <your-account-id>
替换为您自己的 AWS 账户 ID。这个策略将只允许 CloudFront 服务访问 img-bucket
存储桶中的对象。
步骤 2: 创建 CloudFront Web 分发
- 在 AWS 管理控制台中,进入 CloudFront 服务页面。
- 点击"创建分发"按钮,选择"Web"分发类型。
- 在"源设置"步骤中,选择"S3 存储桶"作为源,并选择
img-bucket
。 - 在"默认缓存行为设置"步骤中,根据您的需求进行配置。
- 在"分发设置"步骤中,选择"Web"作为分发方式,并输入自定义域名
img.example.com
。 - 在"限制访问"步骤中,选择"使用签名 URL 或签名 Cookie"选项。
- 在"源访问控制"步骤中,选择"创建新的 OAC"选项,命名为
img-oac
。 - 在"查看器协议策略"步骤中,选择"Redirect HTTP to HTTPS"选项。
- 在"备用域名(CNAME)"步骤中,输入
img.example.com
。 - 在"自定义 SSL 证书"步骤中,选择"自定义 SSL 证书"选项,并上传您的
*.example.com
证书。 - 完成其他配置,然后点击"创建分发"按钮。
步骤 3: 配置 Route 53
- 在 AWS 管理控制台中,进入 Route 53 服务页面。
- 选择托管区域
example.com
。 - 点击"创建记录集"按钮,添加一个新的记录集。
- 设置记录名称为
img
。 - 选择记录类型为
A - IPv4 地址
。 - 在"值"字段中,输入 CloudFront 分发的域名,例如
d365i1v0qrxr6m.cloudfront.net
。 - 点击"创建记录集"按钮。
步骤 4: 测试访问
- 等待 DNS 记录生效,这可能需要一些时间。
- 在浏览器中访问
https://img.example.com
。如果一切配置正确,您应该能够看到存储在img-bucket
中的图像资源。
通过这种架构,您的图像资源将通过 CloudFront 的全球边缘网络进行分发,从而提供更快的响应速度和更好的用户体验。同时,源访问控制策略确保了只有 CloudFront 可以访问您的 S3 存储桶,有效地保护了您的内容不被未经授权的访问。
值得注意的是,我们还配置了 HTTPS 协议和自定义 SSL 证书,以确保图像资源的传输过程中受到加密保护,提高了安全性。
总结一下,通过自定义域名访问 Amazon S3 中的图像资源包括以下主要步骤:
- 创建 S3 存储桶并上传图像资源。
- 配置存储桶策略,只允许 CloudFront 访问。
- 创建 CloudFront Web 分发,并配置源访问控制、自定义域名和 SSL 证书。
- 在 Route 53 中配置 DNS 记录,将自定义域名指向 CloudFront 分发。
- 通过自定义域名访问图像资源。
通过这种方式,您可以充分利用 AWS 的云服务,为您的静态内容提供安全、高性能和可扩展的分发服务。
Recommend
-
30
Nginx配置多端口多域名访问 Nov 18th, 2019 | Comments
-
19
临时处理OCSP域名无法访问的问题 之前的文章有提到过OCSP,现在本站用的 SSL 证书换成了 Let's Encrypt ,近期由于众所周知的原因,
-
12
V2EX › 程序员 求助! MacOs 访问不同域名用不同的网络接口 yitingbai · 4 小时...
-
9
Nginx 禁止未绑定域名或 IP 访问 80 和 443 端口实践小结nginx 在决定请求由哪个 server 块执行时,主要关注的是 server 块中的 listen 和 server_name 两个字段,如果根据 listen 指令无法得到最佳匹配,将会开始解析 server_name 指令。nginx 会检查请求中的...
-
13
解决 nextcloud 通过不被信任的域名访问 问题 前置条件:本文讨论的是通过docker安装的nextcloud。如果是直接在宿主机上安装,那么改好配置文件不需要重启容器。 这个问题很好解决,进入到容器,
-
10
一开始不论怎么配置 /opt/etc/nginx/nginx.conf 总是不生效,在 /opt/etc/nginx/vhost/qbit.conf 下配置了 Hello World 的静态文件也不能访问。后来终于想到了 80 端口被其他服务占用的可能 这是在 openwrt 系统下,很多程序...
-
6
V2EX › 问与答 内网主机通过域名访问路由器流量会过外网吗?
-
10
V2EX › 问与答 有那种访问域名,但域名内容是自己自定义网址的方法吗?
-
3
局域网通过DDNS域名+端口访问自建服务的解决方案 2024-02-19...
-
7
V2EX › NAS [教程] 随时随地通过域名远程访问 nas、openwrt、alist 等家庭内网设备
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK