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

创建私有作品存储
本步骤,你将为作品素材创建私有 S3 Bucket,并应用公开访问保护。
EC2 运行网站应用。Amazon S3 把文件作为对象(object)保存在 Bucket(存储桶)中,Bucket 是有名称的存储容器。这样,素材与运行网站的服务器分开管理。本节提供新的独立网站和本地文件,作品 Bucket 由你创建。
进入准备好的项目目录:
cd /home/labex/project
加载本节标识,显示要创建的 Bucket 名称:
source website.env
echo "$PORTFOLIO_BUCKET"
PORTFOLIO_BUCKET 是本节提供的唯一名称,Bucket 尚未创建。S3 要求存储桶名称唯一,因此使用提供的值,而不是常见的 portfolio。
CLI 的 s3 命令便于操作文件。mb 表示创建 Bucket,s3:// 表示 S3 中的位置:
aws s3 mb "s3://$PORTFOLIO_BUCKET"
应出现 make_bucket 确认。当前连接使用 us-east-1,新 Bucket 也在该 Region。到 AWS View 找到它的名称。
新存储默认私有。Block Public Access(公开访问阻止)增加保护,防止意外授予公开权限。查看提供好的 JSON 文件,四项设置都应为 true:
cat private-access.json
每个 true 启用一项保护。CLI 的 s3api 提供具体的 S3 操作,包括访问设置。像 launch.json 一样,file:// 从本地配置文件读取值,不必逐项输入:
aws s3api put-public-access-block \
--bucket "$PORTFOLIO_BUCKET" \
--public-access-block-configuration file://private-access.json
更新成功后会直接返回提示符,没有输出。再从 S3 读回设置,确认已经保存:
aws s3api get-public-access-block --bucket "$PORTFOLIO_BUCKET"
确认四项均为 true。AWS View 应显示你的 Bucket 和 No objects。另一个 reference Bucket 存放无关的 keep.txt,保持它不变。现在可以存入作品素材了。
上传并取回设计素材
本步骤,你将保存三张作品封面和作品列表,再取回 AURA 封面,与原文件逐字节比较。
准备好的 portfolio-assets/ 目录包含四个文件。WebP 是图片格式;projects.json 保存作品详情中的标题、说明和图片引用。素材和网站均已提供,你可以专注于存储操作。
| 文件 | 网站用途 |
|---|---|
images/aura-brand.webp |
AURA |
images/forma-chair.webp |
FORMA |
images/echo-record.webp |
ECHO |
projects.json |
作品标题、说明和图片引用 |
对象的 Key 是它在 Bucket 中的名称。images/aura-brand.webp 带有 images/ 前缀,但 S3 内不需要真正的文件夹。cp 用于复制,--recursive 复制本地目录中的所有文件,并保留相对路径作为 Key:
aws s3 cp portfolio-assets/ "s3://$PORTFOLIO_BUCKET/" --recursive
应看到四条 upload,每条对应一个文件。再用 s3 ls 列出存储的对象;这里的 --recursive 会包含 images/ 前缀下的 Key:
aws s3 ls "s3://$PORTFOLIO_BUCKET/" --recursive
四行输出分别显示修改时间、大小和 Key。确认三个图片名称及 projects.json 即可,不必关注顺序和具体时间。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
没有输出并返回提示符,表示文件一致。你已经把真实封面存入 S3,再原样取回。若不同,检查 Key,并重新上传提供好的原图。
私有存储任务已完成。网站仍读取准备好的本地文件,所以此时上传到 S3 不会改变页面。下一节从新环境开始,提供已经存好的同类素材,让你专注于为应用授予读取权限。
总结
你创建了私有 S3 存储,应用公开访问保护,上传三张封面和作品列表,再取回与原文件一致的副本。你区分了存储的对象和将来使用它们的网站应用。



