Кратко:

  • Создание объекта хранения и загрузка файлов в облако.
  • Объектное хранилище подходит для хранения неструктурированных данных, таких как рентгеновские снимки.
  • Создание пустого бакета в Yandex Object Storage.
  • Загрузка файлов через консоль управления и утилиту S3cmd.
  • Настройка жизненного цикла объектов для оптимизации затрат на хранение данных.
  • Использование пользовательских метаданных для описания объектов в хранилище.
  • Ограничение доступа к объектам для внешних пользователей.
  • Отправка временной ссылки на объект для доступа к данным со стороны других пользователей.

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.  Вернемся в консоль управления.

image

9. 

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

image

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

Проверьте себя

 

11. Предположим, Петров чувствует себя хуже. Судя по анализам, он действительно болен. Лечащий врач решает проконсультироваться с более опытной коллегой Ивановой из профильной клиники. Объекты в бакете недоступны для внешних пользователей, поскольку при его создании мы ограничили доступ. Чтобы Иванова увидела рентгеновский снимок Петрова, отправим ей временную ссылку на объект image02.dat.
Для этого в консоли управления кликните на объект и в открывшемся окне информации об объекте нажмите кнопку Получить ссылку. Укажите время жизни ссылки в часах или днях.
image
Можно поделиться ссылкой или использовать ее в любом сервисе для доступа к файлу.
  1. После консультации Иванова поставила Петрову правильный диагноз: вирусная пневмония (код J12 по Международной классификации болезней). Вам осталось только исправить метаданные объекта image02.dat.
    Замените значение метаданных с результатами обследования с ok на J12 самостоятельно.