Введение
Команда хранит документы finance и HR в одном бакете S3. Вы зададите им понятные имена и свойства, получите отчёт и удалите группу finance, сохранив 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.
Выберите ключи и загрузите документы команд
На этом шаге вы используете понятные ключи объектов, чтобы разделить документы двух отделов в одном бакете.
Локальный каталог хранит файлы на вашей машине; бакет хранит объекты в 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 со свойствами и содержимым, прочитанными из хранилища:

Скачайте файл, указав 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 не изменились. Успешный список и чтение подтверждают, что вы удалили нужную группу, сохранив документ другого отдела.
Удалите оставшиеся ресурсы работы
На этом шаге вы удалите оставшийся документ, принадлежащий работе, и пустой бакет.
Объект HR был защищён во время операции finance. Ресурсы обоих отделов принадлежат этому упражнению, поэтому теперь вы можете удалить оставшийся объект по точному ключу, не используя широкую рекурсивную цель:
aws s3 rm s3://labex-team-documents/hr/welcome.txt
Вывод подтверждает удаление ключа HR. Проверьте содержимое бакета перед удалением его контейнера:
aws s3 ls s3://labex-team-documents/ --recursive
Успешная команда не выводит строк объектов. Бакет должен быть пустым, прежде чем rb (remove bucket — удалить бакет) сможет удалить его:
aws s3 rb s3://labex-team-documents
Вывод — remove_bucket: labex-team-documents. Подтвердите, что хранилище по-прежнему отвечает:
aws s3 ls
В этой новой рабочей среде нет строк бакетов. AWS View показывает No buckets; сообщение Unavailable означало бы, что страница не может установить состояние. Ваши локальные исходные и скачанные документы остаются доступны для просмотра.
Резюме
Вы упорядочили документы двух отделов с помощью полных ключей объектов и префиксов, назначили стандартные и пользовательские метаданные, изучили свойства через API S3 и сравнили скачанные байты с источником. Вы также предварительно просмотрели удаление в границах префикса, сохранили посторонний документ и удалили оставшиеся ресурсы работы.
Используйте префиксы для предсказуемой группировки по имени, а метаданные — для описания объектов. Осознанно выбирайте границы удаления и проверяйте ресурсы, которые должны остаться.



