Введение
Команда хранит временные экспорты девяносто дней, а постоянные записи в том же бакете должны оставаться вне этой политики. Вы настроите и изучите правило жизненного цикла в заданных границах, затем удалите учебные ресурсы.
Сначала выполните работу Упорядочьте документы с помощью ключей и метаданных, чтобы освоить префиксы, свойства, скачивание и очистку. Подключение CLI, бакет, экспорт и постоянная запись подготовлены в этой новой VM. Используйте Terminal и расположенную рядом вкладку AWS View. Вы проверите сохранённую конфигурацию, а не будете ждать будущих действий по возрасту объектов.
Связь с сертификацией
Эта лабораторная работа помогает на практике изучить следующие темы экзаменов.
- Cloud Practitioner (CLF-C02) · Задача 3.6: Классы хранения S3 и настройка жизненного цикла в заданной области.
- Solutions Architect – Associate (SAA-C03) · Задача 4.1: Классы хранения S3 и настройка жизненного цикла в заданной области.
- Developer – Associate (DVA-C02) · Задача 1.3: Классы хранения S3 и настройка жизненного цикла в заданной области.
- CloudOps Engineer – Associate (SOA-C03) · Задача 1.3: Классы хранения S3 и настройка жизненного цикла в заданной области.
- Security – Specialty (SCS-C03) · Задача 5.2: Базовая практика: Классы хранения S3 и настройка жизненного цикла в заданной области.
- Data Engineer – Associate (DEA-C01) · Задача 2.3: Базовая практика: Классы хранения S3 и настройка жизненного цикла в заданной области.
Изучите временные и постоянные данные
На этом шаге вы определите предполагаемые границы политики и изучите постоянную запись, которую нужно исключить.
Правило жизненного цикла определяет, какими объектами управлять и что делать по мере их старения. Переход меняет класс хранения; истечение срока удаляет подходящие сохранённые объекты. Ни одно действие не меняет локальный файл. Начните с определения сохранённых ключей, которые должны входить в это правило.
Перейдите в рабочий каталог с помощью cd, который меняет каталог:
cd /home/labex/project
Рекурсивно выведите подготовленный бакет, чтобы видеть полные ключи объектов, включая префиксы:
aws s3 ls s3://labex-export-retention/ --recursive
Есть два ключа: exports/monthly.csv и records/retention-policy.txt. Экспорт больше 128 КБ; постоянная запись — небольшой текстовый файл. Префикс является началом ключа объекта, а не настоящим каталогом. Правило с фильтром 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 (infrequent access — редкий доступ) сохраняет немедленное получение, но взимает плату за получение и имеет минимальный срок хранения тридцать дней. Здесь экспорты становятся редко используемыми через тридцать дней и сохраняются до девяностого дня, поэтому проводят шестьдесят дней в Standard-IA. Объекты меньше 128 КБ не переводятся при поведении жизненного цикла по умолчанию; подготовленный экспорт больше этого порога. Это соображения выбора, а не обещание определённой экономии.
Истечение срока через девяносто дней подходит временным экспортам, а не постоянным записям. В этом бакете версионирование выключено; истечение срока может навсегда удалить подходящие объекты. В бакете с версиями истечение срока текущей версии и удаление нетекущих версий имеют разные эффекты и требуют отдельно продуманных действий.
Схема: правило применяется к exports/. Дневные пороги описывают соответствие условиям; они не гарантируют выполнение в точный момент.

JSON описывает конфигурацию с помощью объектов ({}), массивов ([]), имён полей в кавычках, строк и числовых значений дней. Массив Rules содержит полную политику бакета. ID называет правило, Status включает его, а Filter.Prefix ограничивает область. Transitions и Expiration задают два действия.
Команда оболочки 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 предоставляет отдельные операции API S3. 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 и подтвердили, что постоянная запись осталась вне его префикса и без изменений.
Свидетельство конфигурации отличается от будущего планового выполнения. В завершение вы удалили политику и явно удалили ресурсы хранилища работы, не ожидая действий по возрасту объектов.



