Настройте правила жизненного цикла для временных экспортов

AWSBeginner
Практиковаться сейчас

Введение

Команда хранит временные экспорты девяносто дней, а постоянные записи в том же бакете должны оставаться вне этой политики. Вы настроите и изучите правило жизненного цикла в заданных границах, затем удалите учебные ресурсы.

Сначала выполните работу Упорядочьте документы с помощью ключей и метаданных, чтобы освоить префиксы, свойства, скачивание и очистку. Подключение 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 показывает то же сохранённое правило над объектами. Он не отображает завершённый переход или удаление: эти пороги находятся в будущем.

Пример: правило жизненного цикла только для exports и неизменённая постоянная запись.

Этот пример показывает сохранённую конфигурацию и текущие байты записи. Он не представляет завершённое действие по возрасту объекта.

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 и подтвердили, что постоянная запись осталась вне его префикса и без изменений.

Свидетельство конфигурации отличается от будущего планового выполнения. В завершение вы удалили политику и явно удалили ресурсы хранилища работы, не ожидая действий по возрасту объектов.