介绍
作品站需要保存图片和作品清单。创建私有 S3 存储,上传素材并取回副本,确认保存的内容没有变化。
请先完成前三节。本节提供新网站与本地素材;下一节再通过实例角色连接私有图片。 每节使用独立的新环境,无需保留上一节的资源、文件或凭据。工具、连接和无关素材均已准备好。
认证考点
| 认证 | 考试任务 | 练习内容 |
|---|---|---|
| AWS Certified Cloud Practitioner (CLF-C02) | Task 3.6 | 使用 S3 对象存储保存应用素材,并区分存储与 EC2 计算。 |
实验概览

创建私有作品存储
本步骤,你将创建一个 S3 Bucket,并明确启用公开访问阻止。
EC2 运行网站代码。Amazon S3 将文件作为对象(object)保存在Bucket中。计算与存储分开后,素材不必只有服务器上的一份副本。
进入准备好的目录:
cd /home/labex/project
加载本节标识并显示 Bucket 名称:
source website.env
echo "$PORTFOLIO_BUCKET"
PORTFOLIO_BUCKET 是为本节准备的唯一名称,Bucket 尚未创建。S3 Bucket 名称在 AWS 分区中必须全局唯一,因此使用这个名称,不要改成常见的 portfolio。
CLI 的 s3 提供便捷文件操作;mb 表示创建 Bucket,s3:// 表示 S3 位置:
aws s3 mb "s3://$PORTFOLIO_BUCKET"
应出现 make_bucket 确认。当前连接使用 us-east-1,新 Bucket 也位于该 Region。
新的 S3 存储默认私有。Block Public Access 防止公开 ACL 或策略意外开放访问。查看提供好的四项配置:
cat private-access.json
每个 true 启用一项保护。通过较底层的 s3api 操作应用该文件:
aws s3api put-public-access-block --bucket "$PORTFOLIO_BUCKET" --public-access-block-configuration file://private-access.json
读回配置:
aws s3api get-public-access-block --bucket "$PORTFOLIO_BUCKET"
确认四项均为 true。AWS View 应出现你的 Bucket,显示 No objects。另一个 reference Bucket 保存无关数据,不要修改它。
上传并取回设计素材
本步骤,你将保存设计师网站的三张封面和作品列表,再取回与原文件完全一致的 AURA 封面。
准备好的 portfolio-assets/ 包含四个文件:images/aura-brand.webp 是 AURA 护肤品牌封面,images/forma-chair.webp 是蓝色家具封面,images/echo-record.webp 是唱片视觉封面,projects.json 提供作品详情的标题、说明和图片引用。
WebP 是网页使用的一种图片格式。网站代码、字体和编译好的 Tailwind CSS 已准备好,无需安装前端工具、生成图片或编写网页。
对象的 Key 是它在 Bucket 中的名称。images/aura-brand.webp 使用 images/ 前缀,但 S3 并不需要真正的文件夹。cp 表示复制,--recursive 复制本地目录内的所有文件,并保留相对路径作为对象名称:
aws s3 cp portfolio-assets/ "s3://$PORTFOLIO_BUCKET/" --recursive
应看到四条 upload,分别说明源文件与目标位置。读取对象列表:
aws s3api list-objects-v2 --bucket "$PORTFOLIO_BUCKET"
在 Contents 中确认上面的四个 Key,AWS View 应显示相同清单。大小与时间可以不同。
反向复制 AURA 封面到另一个本地文件名:
aws s3 cp "s3://$PORTFOLIO_BUCKET/images/aura-brand.webp" downloaded-aura.webp
cmp 比较文件字节,一致时没有输出:
cmp portfolio-assets/images/aura-brand.webp downloaded-aura.webp
没有输出并返回提示符,说明图片从存储原样取回。若不同,检查 Key 并重新上传提供好的原图。
私有存储任务已完成,网站暂时仍读取服务器上的本地图片与作品列表。下一节再为应用授权 S3 读取;不要公开 Bucket。

仅清理自己的作品存储
本步骤,你将删除四个上传对象、空 Bucket 和网站实例,保留参考数据。
只使用刚检查过的 PORTFOLIO_BUCKET。rm --recursive 删除这个自有 Bucket 的全部四个对象,不要把名称换成参考 Bucket:
aws s3 rm "s3://$PORTFOLIO_BUCKET/" --recursive
应看到四条 delete。rb 删除空 Bucket:
aws s3 rb "s3://$PORTFOLIO_BUCKET"
显示实例 ID,并对照 AWS View:
echo "$INSTANCE_ID"
仅终止该服务器:
aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"
等待完成:
aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"
AWS View 应不再显示自己的 Bucket,实例为 terminated。参考 Bucket 与 keep.txt 必须保留,准备好的网络也不删除。下一节提供独立的新资源。
总结
你创建私有 S3 Bucket,上传图片和作品清单,并确认下载副本与原图一致。你区分计算与存储,并仅清理指定资源。



