Введение
Команде отчётности нужно сохранить ежедневный отчёт о продажах и получить его текущую копию. Вы создадите бакет S3, загрузите и обновите отчёт, проверите скачанный файл и удалите свои учебные ресурсы.
Сначала выполните работу Первые шаги с AWS на LabEx. Подключение CLI и report.txt подготовлены в этой новой VM; личный вход в AWS или прежние ресурсы не нужны. Используйте 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, загрузка, обновление и скачивание объектов.
- Data Engineer – Associate (DEA-C01) · Задача 1.1: Базовая практика: Объектное хранилище S3, загрузка, обновление и скачивание объектов.
Создайте бакет хранилища
На этом шаге вы создадите бакет для ежедневного отчёта о продажах и увидите его в AWS View.
Перейдите в рабочий каталог. cd меняет текущий каталог терминала; все локальные файлы этой работы используют этот каталог.
cd /home/labex/project
Подтвердите подготовленную версию официального CLI:
aws --version
Вывод начинается с aws-cli/2.37.6. Образ уже предоставляет инструменты, поэтому вы можете сосредоточиться на операциях хранения.
Amazon S3 хранит содержимое файлов в виде объектов. Бакет содержит эти объекты, а ключ задаёт имя одного объекта внутри него. Сначала вы создадите контейнер, затем загрузите отчёт.
Создайте labex-backups. В aws s3 mb часть s3 выбирает объектное хранилище, а mb означает make bucket — создать бакет. Префикс s3:// указывает место в хранилище, а не локальную папку.
aws s3 mb s3://labex-backups
Ожидаемый вывод:
make_bucket: labex-backups
Выведите бакеты с помощью ls, что означает list — список:
aws s3 ls
Вы должны увидеть строку, заканчивающуюся на labex-backups; её дата и время могут отличаться. В представлении AWS View появляется карточка labex-backups без объектов. Стрелки показывают, как CLI связан с хранилищем; узел бакета отражает фактический запрос ресурса.
Загрузите и изучите отчёт
На этом шаге вы сохраните отчёт как объект S3 и прочитаете его фактическое сохранённое содержимое через предварительный просмотр.
Локальный файл и его сохранённая копия существуют отдельно; загрузка и скачивание связывают их.

Изучите подготовленный локальный файл. cat выводит содержимое текстового файла:
cat report.txt
Ожидаемый вывод:
Daily sales: 120 orders
cp означает copy — копировать. Первый путь ниже — локальный источник, а второй — назначение. Часть после имени бакета, report.txt, является ключом объекта.
aws s3 cp report.txt s3://labex-backups/report.txt
Вывод сообщает о загрузке из report.txt в s3://labex-backups/report.txt.
Выведите объекты бакета:
aws s3 ls s3://labex-backups/
Строка для report.txt показывает время изменения, размер и ключ. Загрузка создаёт отдельную сохранённую копию: одно лишь редактирование локального файла не изменило бы её.
В AWS View карточка бакета показывает 1 объект. Нажмите report.txt в карточке, чтобы раскрыть содержимое. Предварительный просмотр должен показывать Daily sales: 120 orders. Он читает сохранённый объект, а не локальный исходный файл.
Пример ниже показывает загруженный отчёт, раскрытый в карточке бакета. Содержимое прочитано из хранилища.

Обновите и получите сохранённую копию
На этом шаге вы замените отчёт, скачаете текущую сохранённую версию и докажете, что содержимое сохранилось при передаче туда и обратно.
Обновлённый отчёт содержит 145 заказов. printf записывает текст; \n добавляет перевод строки. Оператор оболочки > заменяет содержимое указанного локального файла.
printf 'Daily sales: 145 orders\n' > report.txt
Посмотрите на предварительный просмотр отчёта перед повторной загрузкой. Он по-прежнему показывает 120 orders, поскольку сохранённая копия не изменилась.
Загрузите файл по тому же ключу, чтобы заменить его текущее содержимое:
aws s3 cp report.txt s3://labex-backups/report.txt
Теперь предварительный просмотр показывает 145 orders, а количество объектов остаётся 1. Повторное использование ключа обновляет этот объект; в этой работе оно не создаёт второй именованный объект.
Скачайте файл, поменяв направление cp: теперь путь S3 является источником, а downloaded.txt — новым локальным назначением.
aws s3 cp s3://labex-backups/report.txt downloaded.txt
Изучите скачанный файл:
cat downloaded.txt
Ожидаемый вывод:
Daily sales: 145 orders
cmp сравнивает два файла байт за байтом. Он ничего не выводит и завершается успешно, когда они одинаковы. && запускает следующую команду только при успешном сравнении.
cmp report.txt downloaded.txt && echo 'Round trip verified'
Ожидаемый вывод:
Round trip verified
Это сравнение доказывает, что полученное содержимое совпадает с обновлённым источником. Проверка шага независимо читает S3 и сравнивает сохранённое и скачанное содержимое.
Удалите своё хранилище
На этом шаге вы узнаете, почему нельзя удалить непустой бакет, затем удалите объекты и бакет этой работы.
rb означает remove bucket — удалить бакет. Сначала попробуйте удалить его, пока отчёт ещё существует:
aws s3 rb s3://labex-backups
Ожидается, что эта команда завершится ошибкой BucketNotEmpty. Ошибка показывает зависимость ресурсов: бакет содержит объекты, поэтому удалите объекты перед удалением их контейнера. Бакет и объект должны остаться видимыми в предварительном просмотре.
rm удаляет объект по точному пути S3:
aws s3 rm s3://labex-backups/report.txt
Вывод подтверждает delete: s3://labex-backups/report.txt. Объект исчезает из предварительного просмотра; бакет остаётся пустым.
Теперь удалите пустой бакет:
aws s3 rb s3://labex-backups
Ожидаемый вывод:
remove_bucket: labex-backups
Подтвердите, что сервис по-прежнему отвечает и не перечисляет оставшихся бакетов:
aws s3 ls
Команда завершается без строк бакетов. AWS View показывает No buckets без карточек ресурсов. Это состояние получено успешным запросом к сервису; отключённая страница не доказала бы очистку. Ваши локальные файлы отчётов остаются доступны, а ресурсы хранилища удалены.
Представление очистки ниже показывает отсутствие карточек бакетов после успешного запроса состояния.

Резюме
Вы использовали официальный AWS CLI, чтобы создать бакет, загрузить и заменить объект, скачать его, сравнить содержимое файлов и удалить ресурсы хранилища. AWS View связал ваши команды с наблюдаемыми изменениями ресурсов, а предварительный просмотр показал фактическое сохранённое содержимое.
Вы отработали полный процесс хранения отчёта: разместить файлы в бакете, различать локальную и сохранённую копии, проверить скачивание и удалить объекты перед удалением их бакета.



