Кратко:
- Создание объекта хранения и загрузка файлов в облако.
- Объектное хранилище подходит для хранения неструктурированных данных, таких как рентгеновские снимки.
- Создание пустого бакета в Yandex Object Storage.
- Загрузка файлов через консоль управления и утилиту S3cmd.
- Настройка жизненного цикла объектов для оптимизации затрат на хранение данных.
- Использование пользовательских метаданных для описания объектов в хранилище.
- Ограничение доступа к объектам для внешних пользователей.
- Отправка временной ссылки на объект для доступа к данным со стороны других пользователей.
Практическая работа. Создание бакетов и загрузка объектов
-
Выберите на стартовой странице консоли управления сервис Object Storage. Нажмите кнопку Создать бакет. Откроется окно с основными параметрами:
Имя. Придумайте его с учетом правил. Обратите внимание, что дать бакету имяklinikaне получится. Имена бакетов во всем Yandex Object Storage уникальны — назвать два бакета одинаково нельзя даже в разных облаках. Помните об этом, если будете создавать бакеты автоматически.Макс. размер. У вас есть два варианта:- Выбрать опцию Без ограничения. Размер бакета будет увеличиваться, сколько бы объектов в него ни помещали.
- Указать максимальный размер. Это убережёт вас от финансовых потерь, если что-то пойдёт не так и в бакет загрузится слишком много объектов.
Другие опции. Далее для всех типов операций оставьте ограниченный доступ (публичный позволяет выполнять операции всем пользователям интернета), выберите стандартный класс хранилища и нажмите кнопку Создать бакет. -
На странице объектного хранилища появился пустой бакет. Загрузим в него два рентгеновских снимка: image01.dat и image02.dat. Это можно сделать с помощью:
- консоли управления;
- приложений;
- S3-совместимого HTTP API;
- HTML-форм на сайте.
Разберём два способа — ручную загрузку через консоль управления и автоматическую с помощью утилиты S3cmd. Для этого скачайте файлы снимков на компьютер или ВМ, с которого вы выполняете эту практическую работу. -
Для загрузки файла через консоль управления выберите созданный бакет и в открывшемся окне нажмите кнопку Загрузить объекты.

-
В появившейся форме выберите сохранённый файл
image01.datи нажмите кнопку Загрузить. Вернувшись на страницу бакета, вы увидите, что файл оказался в хранилище.
5. Загрузите второй файл с помощью утилиты S3cmd — консольного клиента для Linux и MacOS, предназначенного для работы с S3-совместимым HTTP API. Для работы в Windows используйте один из вариантов:
- установите другой консольный клиент для объектных хранилищ, например AWS CLI;
- установите подсистему Linux на Windows с помощью утилиты WSL (Windows Subsystem for Linux) и работайте с S3cmd в ней;
- создайте в облаке ВМ с Ubuntu и работайте с неё. Для загрузки файла-примера в виртуальную машину воспользуйтесь командой:
$ wget "https://disk.yandex.ru/i/2UlugGkurhcxWw" -O image02.dat
6. Установите S3cmd — в Ubuntu, например, это делается с помощью команды:
sudo apt-get install s3cmd
Чтобы утилита работала с Yandex Object Storage, вам понадобится её настроить, а также создать сервисный аккаунт с ролью storage.admin и статический ключ доступа для него. Подробная инструкция о том, как это сделать, приведена в документации.
После ввода параметров конфигурации убедитесь, что утилита может установить соединение с вашим объектным хранилищем. Для этого можно воспользоваться, например, командой s3cmd ls, которая должна вывести список созданных в нём бакетов.
$ s3cmd ls
2023-04-29 17:05 s3://klinika
7. Загрузите в бакет второй файл (image02.dat), а затем получите список хранящихся в бакете объектов:
s3cmd put <путь к файлу>/image02.dat s3://<имя бакета>
s3cmd ls s3://<имя бакета>
Результат должен выглядеть примерно так:
$ s3cmd put image02.dat s3://klinika
upload: 'image02.dat' -> 's3://klinika/image02.dat' [1 of 1]
28608 of 28608 100% in 0s 115.37 KB/s done
$ s3cmd ls s3://klinika
2023-04-29 17:10 31507 s3://klinika/image01.dat
2023-04-29 17:10 28608 s3://klinika/image02.dat
8. Вернемся в консоль управления.

9.
- Мы видим, что класс хранилища у обоих объектов — стандартное. Напомним: стандартное хранилище подходит для данных, к которым обращаются часто, а тариф за размещение данных в нем примерно в два раза выше, чем в холодном хранилище.
- Чтобы оптимизировать затраты на хранение данных, настроим жизненный цикл объектов. Это действия, которые автоматически выполняются с отдельными объектами или группами объектов в бакете в заданные моменты времени.
- Перейдите на вкладку Жизненный цикл и нажмите кнопку Настроить.

10.
- В открывшемся окне задайте произвольное описание. В поле Префикс укажите Все объекты.
-
Выберите тип операции Transition. Если понадобится настроить автоматическое удаление объектов из бакета, то выбирайте тип операции Expiration.В качестве Условия срабатывания правила задайте Точную дату или Количество дней. В первом случае правило сработает в 00:00 установленной даты. Во втором — через указанное количество дней после загрузки объекта в бакет.Нажмите кнопку Сохранить.
-
Представим теперь, что объекты в хранилище — это оцифрованные рентгеновские снимки пациента Петрова. Первый из них (
image01.dat) сделали несколько месяцев назад в ходе профосмотра, а второй (image02.dat) — вчера, после того как Петров обратился к врачу с жалобой на недомогание. В обоих случаях на снимках не увидели патологий.Опишите с помощью пользовательских метаданных эти снимки, и потом вы сможете быстро найти их среди множества объектов в бакете.С помощью утилиты S3cmd задайте для загруженных объектов метаданные с фамилией пациента (x-amz-meta-patient:petrov) и с результатами обследования (x-amz-meta-status:ok):
s3cmd modify \
--add-header=x-amz-meta-patient:petrov \
--add-header=x-amz-meta-status:ok \
s3://<имя бакета>/image01.dat \
s3://<имя бакета>/image02.dat
Проверьте себя
image02.dat.
-
После консультации Иванова поставила Петрову правильный диагноз: вирусная пневмония (код J12 по Международной классификации болезней). Вам осталось только исправить метаданные объекта
image02.dat.Замените значение метаданных с результатами обследования сokнаJ12самостоятельно.