介绍
一个团队将临时导出保留九十天,而同一个存储桶中的永久记录必须排除在这项策略之外。你将配置并查看限定范围的生命周期规则,然后清理练习资源。
请先完成 使用对象键和元数据组织文档,掌握前缀、属性、下载和清理。CLI 连接、存储桶、导出文件和永久记录已在这个全新 VM 中准备好。使用 Terminal 和旁边的 AWS View 标签页。你将检查已存储的配置,而不是等待未来按对象年龄执行的操作。
查看临时数据和永久数据
在本步骤中,你将确定策略的预定范围,并查看必须排除的永久记录。
生命周期规则(lifecycle rule)指定管理哪些对象,以及随着对象变旧执行什么操作。转换(transition)改变存储类别;到期删除(expiration)移除符合条件的存储对象。两种操作都不会改变本地文件。先确定哪些存储对象键属于这条规则。
使用更改目录的 cd 进入工作目录:
cd /home/labex/project
递归列出已准备好的存储桶,查看包含前缀的完整对象键:
aws s3 ls s3://labex-export-retention/ --recursive
有两个对象键:exports/monthly.csv 和 records/retention-policy.txt。导出文件大于 128 KB;永久记录是小型文本文件。前缀是对象键的开头,不是真实目录。过滤到 exports/ 的规则匹配导出文件,但排除 records/retention-policy.txt。
使用 cp 下载永久记录,再使用 cat 查看字节内容:
aws s3 cp s3://labex-export-retention/records/retention-policy.txt permanent-record.txt
cat permanent-record.txt
Permanent record: retain until approved removal.
在 AWS View 中展开 records/retention-policy.txt,查看相同的存储文本。配置规则后,你会比较这份记录。生命周期策略不应仅因无关数据位于同一个桶中,就意外将其到期删除。
编写并应用限定范围的生命周期规则
在本步骤中,你将存储一条描述团队保留要求的生命周期规则。
S3 Standard 是频繁访问数据的默认类别。S3 Standard-IA(不频繁访问)保持即时读取,但对读取收费,并有三十天的最短存储期限。这里的导出文件在三十天后变得不常访问,并保留到第九十天,因此会在 Standard-IA 中存储六十天。默认生命周期行为不会转换小于 128 KB 的对象;已准备好的导出文件大于这个阈值。这些是选型考虑,不是对具体节省金额的承诺。
九十天后到期删除适用于一次性导出,不适用于永久记录。这个桶未启用版本控制;到期删除可以永久移除符合条件的对象。在启用版本控制的桶中,当前版本到期与非当前版本删除具有不同效果,需要分别考虑相应操作。
示意图:规则作用于 exports/。天数阈值描述何时符合条件,并不保证在准确时刻执行。

JSON 使用对象({})、数组([])、带引号的字段名、字符串和数字天数描述配置。Rules 数组保存完整的存储桶策略。ID 为规则命名,Status 启用规则,Filter.Prefix 限定范围。Transitions 和 Expiration 指定两个操作。
Shell 的 cat > lifecycle.json <<'JSON' 将后续行写入文件,直到结束的 JSON。这叫作 here-document;带引号的分隔符让内容保持字面值。复制完整代码块,包括最后的分隔符:
cat > lifecycle.json <<'JSON'
{
"Rules": [
{
"ID": "temporary-export-retention",
"Status": "Enabled",
"Filter": {"Prefix": "exports/"},
"Transitions": [{"Days": 30, "StorageClass": "STANDARD_IA"}],
"Expiration": {"Days": 90}
}
]
}
JSON
应用前检查文件:
cat lifecycle.json
确认前缀为 exports/,包含末尾斜杠。空前缀会针对桶中全部对象,包括永久记录。
aws s3api 提供单个 S3 API 操作。put-bucket-lifecycle-configuration 写入配置;--bucket 选择存储桶,file://lifecycle.json 让 CLI 从本地文件读取 JSON 参数。这个操作替换桶的整个生命周期配置;更新已有配置时,应包含所有想保留的规则。本练习开始时没有生命周期配置:
aws s3api put-bucket-lifecycle-configuration --bucket labex-export-retention --lifecycle-configuration file://lifecycle.json
命令成功时,不打印响应正文。接下来查看服务实际存储的内容,不要只依赖本地文件。
检查已存储策略和未受影响的记录
在本步骤中,你将从 S3 读回策略,并确认新数据和排除在外的永久记录仍可访问。
读取存储桶的生命周期配置:
aws s3api get-bucket-lifecycle-configuration --bucket labex-export-retention
响应的 Rules 数组包含一条 Enabled 规则:前缀 exports/,三十天后转换到 STANDARD_IA,九十天后到期删除。服务可能包含额外响应字段;请将规则字段与要求比较。这个响应是权威配置证据,而单独的本地 JSON 文件不能说明规则已应用。
AWS View 在对象上方显示相同的存储规则。它不会显示已完成的转换或删除:那些阈值还在未来。

这个示例展示已存储配置和当前记录字节,不代表按对象年龄执行的操作已完成。
head-object 读取对象属性,不下载正文。查看新创建的导出文件:
aws s3api head-object --bucket labex-export-retention --key exports/monthly.csv
它的 ContentLength 大于 131072 字节。今天它仍在 Standard 中;对于这个默认类别,可能省略 StorageClass 字段。启用规则不会立即改写新对象的存储类别。符合条件后的调度处理是异步的,并不是从运行命令时开始的秒表倒计时。
再次下载排除在外的永久记录:
aws s3 cp s3://labex-export-retention/records/retention-policy.txt permanent-record-after.txt
cmp 逐字节比较文件。&& 只在比较成功后打印消息:
cmp permanent-record.txt permanent-record-after.txt && echo 'Permanent record unchanged'
消息确认内容保持完整。两个对象键仍出现在桶中:
aws s3 ls s3://labex-export-retention/ --recursive
存储的前缀证明永久记录不在这条规则范围内。今天它仍存在,也确认你配置策略时没有意外删除或覆盖它;但仅凭存在,不能证明未来调度器的行为。
删除策略和练习资源
在本步骤中,你将删除存储的策略,再删除实验对象和存储桶,无需等待未来到期。
删除生命周期配置会使该策略不再管理存储桶,但本身不会删除对象。使用单个 API 操作删除策略:
aws s3api delete-bucket-lifecycle --bucket labex-export-retention
检查已不再配置策略:
aws s3api get-bucket-lifecycle-configuration --bucket labex-export-retention
这个命令预期会失败,错误为 NoSuchLifecycleConfiguration。存储桶仍存在,但生命周期策略已不存在。AWS View 移除规则摘要,并保留两个对象。
永久记录被排除在自动到期删除之外。现在,你将使用准确对象键,有意将其删除,作为这个一次性练习清理的一部分。先删除临时导出:
aws s3 rm s3://labex-export-retention/exports/monthly.csv
aws s3 rm s3://labex-export-retention/records/retention-policy.txt
确认成功的列表查询没有对象行:
aws s3 ls s3://labex-export-retention/ --recursive
使用 rb 删除空桶,再确认存储仍响应:
aws s3 rb s3://labex-export-retention
aws s3 ls
remove_bucket 消息包含本练习的存储桶名称;最终列表中没有存储桶,AWS View 显示 No buckets。本地策略文件和记录副本仍可检查。你配置了未来保留策略,又显式清理了练习资源;这是两个独立操作。
总结
你将临时数据要求转化为范围明确的 S3 生命周期规则,结合访问模式和最短存储期限选择存储类别,并配置了到期删除。你从 S3 读回规则,确认永久记录位于前缀范围之外且未变。
配置证据与未来调度执行不同。最后,你删除策略,并显式删除实验存储资源,无需等待按对象年龄执行的操作。



