УДК 004

Изменение организации файловой структуры Amazon S3 на клиенте методом маскирования

Гудков Максим Сергеевич – студент кафедры Информационной безопасности и цифровых технологий Астраханского государственного университета.

Аннотация: В данной статье рассматриваются метод изменения организации файловой структуры из сплошного списка объектов в иерархическую структуру методом маскирования.

Ключевые слова: Amazon S3, хранилище данных, файловая структура.

Amazon Simple Storage Service (Amazon S3) – высокоэффективное хранилище данных. Amazon S3 позволяет хранить и извлекать любой объем данных в любое время из любой точки веб-сервиса [3].

Ввиду множества преимуществ, на данный момент Amazon S3 это не только программный продукт, предоставляющий надежное, долговечное масштабируемое хранилище данных [3], но и стандарт в мире объектных хранилищ, поэтому многие продукты используют все преимущества Amazon S3 API [2].

Ввиду особенностей реализации Amazon S3 все объекты, хранящиеся в данном объектном хранилище, хранятся сплошным списком. Данное решение позволяет хранить объекты с большей эффективностью, но в таком случае структурировать объекты внутри объектного хранилища невозможно, что может негативно повлиять на пользовательский опыт.

Таким образом, если в реализуемом программном продукте предполагается, что пользователь в приложении будет просматривать большое количество объектов, загруженных на Amazon S3, стандартная структурная организация объектов Amazon S3 не подходит.

Метод маскирования

Решением проблемы, описанной выше, является метод маскирования. Сложно и нецелесообразно изменять структурную организация объектов в Amazon S3, но возможно поставлять пользователю объекты, которые будут соответствовать определенным правилам.

В названии объекта, хранящимся в Amazon S3, будет хранится его путь в привычной структурной организации файлов для пользователя в следующем формате: Название папки 1/Название папки 2/…/Название папки X/Имя файла (рисунок 1).

1

Рисунок 1. Преобразование файловой структуры по имени объекта, содержащий путь до объекта.

Таким образом, если мы ходим получить все объекты, содержащиеся в условной «Папка1», находящейся в корне, нам необходимо получить все объекты, имя которых подходят маске «Папка1/*».

Для получения имени объекта без пути необходимо извлечь все символы после последнего знака «/», именуемого разделителем.

Ограничением данного подхода является недопустимость содержания разделителя в названии объекта. Также, ввиду особенностей реализации данного подхода, нельзя хранить пустую папку.

Применив этот подход рекурсивно, пользователь получает возможность структурировать объекты по папкам с необходимой иерархией манипулируя именем объекта при этом используя все преимущества Amazon S3.

Amazon S3 API позволяет получать объекты по определенному префиксу [1], что позволяет легко реализовать методы по получению объектов по необходимой пользователю маске.

Действия над объектами

Перемещение объекта в данном случае сводится к простому переименованию имени объекта внутри Amazon S3. К примеру, если мы ходит переместить объект «Файл 1» из «Путь 1» в «Путь 2», то, в контексте Amazon S3 нам необходимо переименовать объект с именем «Путь 1/Файл 1» в объект с именем «Путь 2/Файл 1».

Метод удаление объекта никак не изменяется. При удалении объекта в объектном хранилище он также удаляется в пользовательской иерархии папок и объектов.

Копирование объекта похоже на переименование объекта с тем условием, что мы не переименовываем объект, а создаем новый объект, хранящий ту же самую информацию, но имея новое название, хранящее новый путь до объекта. К примеру, если мы хотим скопировать объект «Файл 1» из «Путь 1» в «Путь 2», то, в контексте Amazon S3 нам необходимо создать новый объект, хранящий информацию из объекта с именем «Путь 1/Файл 1» с именем «Путь 2/Файл 1».

Вывод

В результате исследования, можно сделать следующие выводы: объектное хранилище Amazon S3 является высокоэффективным облачным решением, но ввиду особенностей хранения объектов в нем нет привычных для пользователя файловой структуры с папками. Для устранения данного недостатка можно воспользоваться методом маскирования, который позволяет хранить путь до объекта, в его имени, после чего, извлекая по определенной маске все объекты, получать объекты той или иной папки.

Список литературы

  1. AWS [Электронный ресурс]: Amazon S3 API Reference. URL: https://docs.aws.amazon.com/AmazonS3/latest/API/Type_API_Reference.html (дата обращения: 01.12.2021)
  2. MinIO [Электронный ресурс]. URL: https://min.io (дата обращения 05.12.2021)
  3. Веселовский Д.И. Функциональные аспекты облачного хранилища Amazon S3 // Фундаментальные научно-практические исследования: актуальные тенденции и инновации. – 2021. – С. 28–31.

Интересная статья? Поделись ей с другими: