Введение
Создайте закрытый bucket, загрузите картинки и проекты, получите идентичную копию и очистите свои ресурсы.
Сначала выполните предыдущие работы портфолио. Среда предоставляет собственные ресурсы и необходимые возможности прежних этапов. Переносите знания, а не экземпляры, файлы или учётные данные.
Связь с сертификацией
| Сертификация | Задачи | Практика |
|---|---|---|
| AWS Certified Cloud Practitioner (CLF-C02) | Task 3.6 | Использовать хранилище объектов S3 отдельно от вычислений EC2. |
Обзор

Создайте закрытое хранилище
На этом шаге вы создадите закрытый bucket S3 для материалов и примените защиту от публичного доступа.
EC2 выполняет сайт. Amazon S3 хранит файлы как объекты в bucket, именованном контейнере. Так материалы отделены от сервера. Это задание предоставляет новый сайт и локальные файлы; bucket создадите вы.
Перейдите в подготовленный проект:
cd /home/labex/project
Загрузите идентификаторы и покажите имя bucket:
source website.env
echo "$PORTFOLIO_BUCKET"
PORTFOLIO_BUCKET — уникальное имя упражнения; bucket ещё не существует. S3 требует уникальные имена, поэтому используйте указанное, а не обычное вроде portfolio.
Команды s3 удобны для файлов. mb создаёт bucket, а s3:// обозначает расположение S3:
aws s3 mb "s3://$PORTFOLIO_BUCKET"
Ожидайте подтверждение make_bucket. Подключение использует us-east-1, Region нового bucket. Найдите его имя в AWS View.
Новое хранилище закрыто по умолчанию. Block Public Access защищает от случайных публичных разрешений. Прочитайте готовый JSON: четыре настройки должны быть true:
cat private-access.json
Каждое true включает защиту. s3api предоставляет отдельные операции S3, в том числе настройки доступа. Как для launch.json, file:// читает локальный файл без отдельного ввода каждого значения:
aws s3api put-public-access-block \
--bucket "$PORTFOLIO_BUCKET" \
--public-access-block-configuration file://private-access.json
Успешное обновление возвращает приглашение без вывода. Прочитайте настройки из S3, чтобы проверить сохранение:
aws s3api get-public-access-block --bucket "$PORTFOLIO_BUCKET"
Проверьте четыре true и No objects в AWS View. Reference bucket содержит независимый keep.txt; не меняйте его. Хранилище готово к материалам.
Загрузите и получите материалы
На этом шаге вы сохраните три обложки и список проектов, получите AURA и сравните байты с оригиналом.
В portfolio-assets/ четыре файла. WebP — формат изображения; projects.json содержит названия, описания и ссылки на изображения. Сайт и материалы готовы, чтобы вы сосредоточились на хранении.
| Файл | Назначение |
|---|---|
images/aura-brand.webp |
AURA |
images/forma-chair.webp |
FORMA |
images/echo-record.webp |
ECHO |
projects.json |
Названия, описания и ссылки |
Ключ — имя объекта внутри bucket. images/aura-brand.webp имеет префикс images/, а не настоящую папку S3. cp копирует файлы, а --recursive — весь каталог, сохраняя относительные пути как ключи:
aws s3 cp portfolio-assets/ "s3://$PORTFOLIO_BUCKET/" --recursive
Ожидайте четыре строки upload. Затем покажите объекты через s3 ls; --recursive включает ключи под images/:
aws s3 ls "s3://$PORTFOLIO_BUCKET/" --recursive
Четыре строки показывают время, размер и ключ. Проверьте три изображения и projects.json; порядок и точное время не важны. AWS View показывает те же имена.

Измените направление копирования, чтобы получить AURA под другим локальным именем:
aws s3 cp "s3://$PORTFOLIO_BUCKET/images/aura-brand.webp" downloaded-aura.webp
cmp сравнивает байты. Сравните оригинал и полученный файл:
cmp portfolio-assets/images/aura-brand.webp downloaded-aura.webp
Нет вывода и вернулось приглашение — файлы одинаковы. Вы сохранили и получили настоящую обложку без изменений. При отличии проверьте ключ и загрузите оригинал снова.
Закрытое хранилище готово. Сайт пока читает локальные файлы, поэтому загрузка в S3 не меняет страницу. Следующее задание начнётся заново с сохранёнными аналогичными материалами и научит разрешать их чтение приложению.
Резюме
Вы создали закрытое S3, применили публичную защиту, загрузили три обложки и список, затем получили одинаковую копию. Вы отличили хранимые объекты от приложения, которое будет их использовать.
Официальные источники: S3 objects, AWS CLI S3 file commands, Block Public Access.



