【AWS】使用Amazon S3 实现静态网站托管
Amazon S3 (Simple Storage Service) 是一种对象存储服务,它以极高的可用性、耐久性、可扩展性和成本效益而闻名。
S3 最棒的一个功能就是它能够直接托管静态网站。
这意味着你不需要传统的 Web 服务器(如 Apache 或 Nginx),就可以通过 S3 直接提供 HTML、CSS、JavaScript 文件、图像和视频等静态内容。
如何使用 Amazon S3 托管静态网站
实现 S3 静态网站托管主要包括以下几个步骤:
创建一个 S3 存储桶 (Bucket):
存储桶名称必须与你的域名完全一致。例如,如果你的域名是 example.com,那么存储桶名称也必须是 example.com。如果你还想支持 www.example.com,则需要再创建一个名为 www.example.com 的存储桶,并将其配置为重定向到 example.com。
选择离你的用户最近的 AWS 区域。
禁用“阻止所有公共访问”设置:默认情况下,S3 存储桶会阻止所有公共访问。你需要禁用这个设置,以便网站内容可以被公开访问。
上传网站文件:
将你的所有静态网站文件(HTML、CSS、JavaScript、图片等)上传到你创建的 S3 存储桶中。
确保入口文件是 index.html:这是默认的首页文件。
确保错误页面是 error.html (可选):这是一个自定义的 404 错误页面。
配置存储桶策略 (Bucket Policy):
这是让你的网站文件可以被公开访问的关键一步。你需要编辑存储桶策略,允许所有用户("Principal": "*")对存储桶中的对象执行 s3:GetObject 操作。
示例存储桶策略:
JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::你的桶名/*"
]
}
]
}
请将 "你的桶名" 替换为你的实际存储桶名称。
启用静态网站托管:
在 S3 存储桶的“属性”选项卡中,找到“静态网站托管”部分,并选择“启用静态网站托管”。
指定你的索引文档(通常是 index.html)。
指定你的错误文档(例如 error.html,用于 404 错误)。
保存设置后,S3 会为你提供一个静态网站托管的端点 URL(例如 http://你的桶名.s3-website-区域.amazonaws.com)。现在,你就可以通过这个 URL 访问你的网站了。
配置自定义域名 (Custom Domain) 和 HTTPS (可选但推荐):
尽管 S3 提供了默认的网站端点 URL,但你通常会希望使用自己的自定义域名(如 example.com)。
为了实现自定义域名和 HTTPS,你需要使用 Amazon CloudFront (内容分发网络) 服务。
CloudFront 分配 (Distribution): 创建一个 CloudFront 分配,并将其源指向你的 S3 静态网站托管端点。
SSL/TLS 证书: 在 AWS Certificate Manager (ACM) 中为你的域名申请并配置免费的 SSL/TLS 证书。
Route 53 DNS 配置: 在 Amazon Route 53 (DNS 服务) 中为你的域名创建 CNAME 或 A 记录(如果使用别名记录),将其指向 CloudFront 分配的域名。
这样做的好处是:
HTTPS 加密: 提供安全的加密连接。
全球加速: CloudFront 会将你的内容缓存到全球各地的边缘站点,用户可以从离他们最近的边缘站点获取内容,大大提高网站加载速度。
更好的缓存控制和安全性: CloudFront 提供更高级的缓存策略和与 AWS WAF 集成以增强安全性。
过去考试题
静的Webサイトを低コストでホスティングしたい場合に使用できるサービスはどれですか。