动手实验 | 在 AWS 中使用 S3 服务配置静态网站托管


  实验目标

本实验旨在通过 AWS 管理控制台配置 S3服务实现静态网站托管,包括创建存储桶、上传网站文件、配置静态网站托管属性及访问权限设置。实验将覆盖从零开始搭建可公开访问的静态网站全流程,帮助用户掌握 S3作为低成本、高可用静态网站托管方案的核心操作,适用于个人博客、产品展示页等轻量级 Web 应用场景。

  功能说明

存储桶管理:S3存储桶作为网站根目录,支持无限量文件存储,自动按区域冗余存储(默认3AZ)。
静态托管:启用静态网站托管后,S3可直接返回 HTML/CSS/JS 等静态文件,支持自定义错误文档(如404.html)。
访问控制:通过存储桶策略(Bucket Policy)和 ACL 实现公开访问,支持 HTTPS 加密传输(需配合 CloudFront)。
全球访问:存储桶默认区域部署,可通过 AWS 全球基础设施实现低延迟访问(跨区域需配置 CloudFront)。

  作业步骤

步骤一:创建 S3存储桶
登录 AWS 控制台,进入 S3服务,点击“创建存储桶”。
命名存储桶(需全局唯一,如 my-static-website-2024),选择区域(如“亚太东京”)。
在“对象所有权”中取消勾选“阻止所有公共访问”,保留默认 ACL 设置。
启用“版本控制”(可选,用于文件历史管理),点击“创建存储桶”。

步骤二:上传网站文件
在存储桶页面点击“上传”,添加以下文件:
index.html(主页面,内容示例:Welcome to My Static Website)
error.html(404页面,内容示例:Page Not Found)
确认文件上传后,在“权限”选项卡中为每个文件添加公开读取权限:
选择文件 → “权限” → 编辑“对象 ACL” → 添加“所有人(公开)”的“读取”权限。

步骤三:配置静态网站托管
进入存储桶属性页面,找到“静态网站托管”模块,点击“编辑”。
启用“静态网站托管”,输入:
主文档:index.html
错误文档:error.html
保存配置后,记录系统生成的“端点 URL”(如 http://my-static-website-2024.s3-website-ap-northeast-1.amazonaws.com)。

步骤四:设置存储桶策略
在存储桶“权限”选项卡中,点击“存储桶策略”。
粘贴以下策略(替换存储桶名称为实际名称):

json
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Sid": "PublicReadGetObject",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::存储桶名称/*"
      }
    ]
  }

点击“保存策略”,确认无权限错误提示。

  结果验证

1. 网站访问测试
在浏览器中打开记录的端点 URL,应显示 index.html 内容(“Welcome to My Static Website”)。
手动输入错误路径(如/nonexistent.html),应跳转至 error.html 页面。
2. 权限验证
使用 curl 命令测试(如 curl -I http://端点 URL),返回头应包含 x-amz-request-id 和200 OK 状态码。
检查 S3访问日志(需提前启用存储桶日志记录),确认无拒绝访问的记录。
3. 性能与可用性
通过多地区浏览器访问,验证页面加载时间(S3默认提供99.99%可用性)。
使用 AWS CloudWatch 监控存储桶请求指标,确认无异常错误率。
4. 资源清理
实验完成后,在 S3控制台选中存储桶,点击“删除”,确认删除所有文件后完成存储桶删除,避免持续产生存储费用。
通过以上步骤,可以成功掌握使用 S3部署可公开访问的静态网站,后续可扩展至自定义域名绑定(通过 Route 53)或 HTTPS 加密(通过 CloudFront+ACM 证书)。