Упорядочьте документы с помощью ключей и метаданных

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

Введение

После сохранения файла его имя и свойства помогают команде найти нужный документ. Организуйте документы финансового отдела и HR в одном бакете, проверьте финансовый отчёт и удалите только его префикс, сохранив документ HR.

Сначала выполните работу Храните и получайте файлы в S3. Эта новая VM предоставляет подключение CLI и локальные документы; прежние ресурсы или личные учётные данные не нужны. Используйте Terminal для команд и AWS View вверху, чтобы сравнивать сохранённые ключи, свойства и содержимое.

Связь с сертификацией

Сертификация Задача экзамена Практика
Cloud Practitioner (CLF-C02) Задача 3.6 Ключи, префиксы и метаданные объектов S3.
Solutions Architect – Associate (SAA-C03) Задача 3.1 Ключи, префиксы и метаданные объектов S3.
Developer – Associate (DVA-C02) Задача 1.3 Ключи, префиксы и метаданные объектов S3.

Обзор лабораторной работы

Концептуальная схема: финансовые документы и документы HR хранятся в одном бакете S3; ключи и метаданные определяют финансовый отчёт для проверки, скачивания и ограниченного удаления, сохраняя HR без изменений.

Выберите ключи и загрузите документы команд

На этом шаге вы используете понятные ключи объектов, чтобы разделить документы двух отделов в одном бакете.

Локальный каталог хранит файлы на вашей машине; бакет хранит объекты в S3. Перейдите в подготовленный рабочий каталог с помощью cd (change directory — сменить каталог):

cd /home/labex/project

Предоставленный каталог documents содержит два небольших текстовых файла. cat выводит их содержимое, чтобы вы знали, что собираетесь сохранить:

cat documents/revenue.csv
month,revenue
2026-09,42000

Файл CSV использует запятые для разделения столбцов. Здесь два столбца — month и revenue; каждая следующая строка является записью.

cat documents/welcome.txt
Welcome to the reporting team.

Создайте бакет с помощью aws s3 mb (make bucket — создать бакет). s3:// указывает место в хранилище, а не локальный путь:

aws s3 mb s3://labex-team-documents

Команда сообщает make_bucket: labex-team-documents.

Ключ finance будет finance/2026-09/revenue.csv. Косые черты упрощают группировку имени, но S3 не создаёт каталоги файловой системы: вся строка является одним ключом объекта. Его префикс finance/ группирует документы finance; более длинный префикс finance/2026-09/ сужает группу до одного месяца.

Content-Type — стандартные метаданные, описывающие формат содержимого файла. text/csv обозначает текст, разделённый запятыми. Пользовательские метаданные содержат ваши собственные описательные пары ключ–значение. Здесь department=finance и period=2026-09 описывают отчёт; они не предоставляют разрешений и не меняют содержимое.

Ключи, префикс и метаданные — Этот пример отделяет префикс ключа от остального имени; метаданные относятся к объекту.

aws s3 cp копирует первый путь во второй. --content-type явно задаёт формат. --metadata принимает пары name=value, разделённые запятыми. Кавычки сохраняют аргумент метаданных целым. Обратная косая черта в конце строки продолжает ту же команду на следующей строке:

aws s3 cp documents/revenue.csv s3://labex-team-documents/finance/2026-09/revenue.csv \
  --content-type text/csv \
  --metadata 'department=finance,period=2026-09'

Сообщение загрузки называет ключ назначения. Загрузите приветственный документ с собственным ключом и свойствами. text/plain означает обычный текст без специального формата документа:

aws s3 cp documents/welcome.txt s3://labex-team-documents/hr/welcome.txt \
  --content-type text/plain \
  --metadata 'department=hr'

Используйте ls (list — список) и --recursive, чтобы показать полные ключи во всём бакете вместо группировки в префиксы, похожие на папки:

aws s3 ls s3://labex-team-documents/ --recursive

Две строки заканчиваются на finance/2026-09/revenue.csv и hr/welcome.txt; временные метки могут отличаться. AWS View показывает оба ключа в одном бакете. Вы упорядочили объекты по имени, не создавая отдельные бакеты для каждого отдела.

Изучите свойства и получите отчёт

На этом шаге вы выберете объекты одного отдела, изучите метаданные и докажете, что скачанный отчёт совпадает с источником.

aws s3api предоставляет отдельные операции API S3. Команды более высокого уровня aws s3 выполняют распространённые операции с файлами; оба варианта работают с теми же объектами. list-objects-v2 выводит записи объектов. --bucket называет контейнер, а --prefix ограничивает возвращаемые S3 ключи теми, которые начинаются с этой строки:

aws s3api list-objects-v2 --bucket labex-team-documents --prefix finance/

Найдите finance/2026-09/revenue.csv в Contents. В этом ответе нет объекта HR, поскольку hr/welcome.txt не начинается с finance/. Префикс фильтрует имена, а не пользовательские метаданные: одно лишь department=finance не включило бы ключ с другим именем в этот результат.

head-object получает свойства объекта без скачивания его тела. Укажите полный ключ, включая префикс:

aws s3api head-object --bucket labex-team-documents --key finance/2026-09/revenue.csv

Ответ включает ContentType со значением text/csv, ContentLength (сохранённые байты) и объект Metadata, содержащий department и period. Другие поля, например временные метки и ETag, описывают сохранённый объект. Метаданные связаны с сохранённой копией, а не с исходным локальным файлом.

В AWS View нажмите finance/2026-09/revenue.csv. Раскрытая карточка показывает его Content-Type, пользовательские метаданные и фактическое сохранённое содержимое CSV. Сравните их с ответом CLI.

Ключ finance, метаданные и содержимое CSV — Этот пример показывает раскрытый объект finance со свойствами и содержимым, прочитанными из хранилища:

Скачайте файл, указав URI S3 как источник, а новое локальное имя файла как назначение. Его имя не обязано совпадать с ключом:

aws s3 cp s3://labex-team-documents/finance/2026-09/revenue.csv retrieved-revenue.csv

Изучите полученное содержимое:

cat retrieved-revenue.csv

Вы должны увидеть те же две строки CSV, которые изучали ранее. cmp сравнивает два локальных файла байт за байтом; при совпадении он ничего не выводит. Оператор оболочки && запускает сообщение только при успешном сравнении:

cmp documents/revenue.csv retrieved-revenue.csv && echo 'Report content matches'
Report content matches

Это доказывает, что получение сохранило байты отчёта. Ваш локальный файл содержит данные; используйте head-object, когда нужно изучить свойства, сохранённые в S3.

Удалите только префикс finance

На этом шаге вы удалите документы finance, сохранив документ HR.

Общий бакет может содержать постороннюю работу. Удаление всего бакета или использование его корня как цели рекурсивного удаления затронуло бы оба отдела. Вместо этого выберите конкретный префикс finance/. Завершающая косая черта является частью префикса и оставляет имена вроде finance-archive.csv за его пределами.

aws s3 rm удаляет объекты. --recursive применяет операцию ко всем подходящим ключам, а --dryrun перечисляет предполагаемые операции, не выполняя их. Сначала просмотрите точные границы:

aws s3 rm s3://labex-team-documents/finance/ --recursive --dryrun

Вывод пробного запуска называет только finance/2026-09/revenue.csv. Он не должен называть hr/welcome.txt. В этот момент объекты всё ещё существуют.

Уберите --dryrun, чтобы выполнить проверенную операцию:

aws s3 rm s3://labex-team-documents/finance/ --recursive

Вывод подтверждает удаление ключа finance. Снова запросите бакет:

aws s3 ls s3://labex-team-documents/ --recursive

Остаётся только hr/welcome.txt. В AWS View раскройте этот оставшийся объект: его приветственное сообщение и метаданные department=hr не изменились. Успешный список и чтение подтверждают, что вы удалили нужную группу, сохранив документ другого отдела.

Резюме

Вы организовали объекты с помощью ключей, префиксов, типов содержимого и пользовательских метаданных, затем побайтово проверили скачанный отчёт. dry run помог проверить удаление только финансового префикса; заключительный запрос и AWS View подтвердили сохранность документа HR и его свойств.

Подробнее см. в документации AWS: Ключи и префиксы объектов S3; Метаданные объектов S3.