Объектное хранилище S3
Общее описание
Объектное хранилище (S3) доступно на вкладке ОБЛАКО → Объектное хранилище S3. Это универсальное облачное решение для данных больших объёмов. S3 (от Simple Storage Service) представляет собой производительное и масштабируемое хранилище данных, лишенное иерархии. В рамках этой системы, все объекты обладают равными правами, что дает гибкость и позволяет удобно хранить разнообразную информацию длительное время и мгновенно получать к ней доступ.
Структура S3 максимально проста – есть всего три сущности (от большего к меньшему):
- Хранилище – это место для хранения файлов. Доступ ко всему хранилищу предоставляется по набору ключей. Для большинства проектов достаточно одного хранилища. Но если у вас имеются разные продукты с разными командами, можете создать несколько хранилищ.
- Бакет. Бакеты (buckets) в S3 представляют собой контейнеры, в которых вы можете хранить объекты (файлы с данными). Это основной уровень организации данных в S3. Бакеты уникальны в рамках всего хранилища. Длина имени от 3 до 63 символов. Используйте только строчные буквы, цифры, дефисы и точки (но не в начале или конце имени). Имейте в виду, что название бакета используется как часть URL для доступа к данным. См. также Модели адресации в S3, где указано, как именно можно сформировать URL для получения объекта (файла).
- Объект – ключ и значение в виде файла с данными (видео, картинки и прочее).
В нашем кабинете вы можете сами создавать до 3-х хранилищ, видеть созданные вами бакеты, объем загруженных вами объектов и управлять доступом (создавать, удалять ключи и хранилища):

Для доступа к S3 необходим только набор ключей, а также сам адрес (endpoint), который фиксирован:

Доступ к S3 с клиентской стороны
S3 разработан на основе API, созданного в Amazon Web Services (AWS) и ставшего международным стандартом.
Каждый объект (то есть произвольный файл с идентификатором), находящийся в этом хранилище, можно извлечь,
используя уникальный идентификатор объекта, доступный по протоколам HTTP или HTTPS. Для работы с этими объектами (файлами)
у вас есть две возможности: воспользоваться клиентом (как консольным, так и с графическим интерфейсом),
либо обратиться к API, спецификация которого описана на сайте авторов протокола.
Рассмотрим подробнее работу с популярными клиентами для работы S3-хранилищами: графические CloudBerry, S3Browser и CyberDuck, а также консольные – Rclone и s3cmd.
С графическим интерфейсом:
- CloudBerry – https://www.msp360.com/cloudberry-backup/download/cbes3free/
- S3Browser – https://s3browser.com/
- CyberDuck – https://cyberduck.io/
С командной строкой:
- Rclone – https://rclone.org/downloads/
- s3cmd – https://s3tools.org/s3cmd/
Совместимые клиенты
CloudBerry
Базовые настройки
При открытии клиента для добавления пользователя выбираем Source -> New Storage Account:

Далее идёт предложение выбора типа хранилища, наше хранилище S3 Compatible:

Далее требуется задать имя пользователя, ввести Service point (это endpoint хранилища, например -
https://s3c2.001.gpucloud.ru/ в зоне Москва) и ключи пользователя. После этого следует проверить
соединение с хранилищем, при удачном соединении появится окно Connection success:

Создание бакета
Для создания бакета нужно перейти в созданный аккаунт и нажать иконку New Bucket и задать имя бакета:


Загрузка файлов
Для загрузки файла со своего компьютера в хранилище, в другой половине приложения можно выбрать
Source -> My computer и нужный файл перетащить в бакет, либо сделать это напрямую перетаскивая файл из File Explorer'а:

Для изменения прав доступа к бакету / папке / файлу для пользователей, нужно
нажать правой кнопкой мыши по объекту и выбрать ACL Settings:

Справа есть кнопки для выдачи всем пользователям права на чтение файла, либо сделать его приватным:

Read— чтение файла, его просмотрWrite— изменение файлаRead ACP— разрешение на чтение прав для различных пользователейWrite ACP— разрешение на изменение прав для различных пользователей
Ссылка на файл будет выглядеть следующим образом:
https://testbucket.s3c2.001.gpucloud.ru/testpicture.jpg
S3Browser
Базовые настройки
При открытии клиент предлагает добавить пользователя, необходимо ввести имя,
тип аккаунта (наш тип — S3 Compatible Storage), REST Endpoint (например - s3c2.001.gpucloud.ru),
Access Key и Secret Access Key, нажать Add new account:

Создание бакета
Для создания бакета нужно перейти в созданный аккаунт и нажать иконку New bucket и задать имя бакета:


Загрузка файлов
Для загрузки файла со своего компьютера в хранилище, нужно выбрать Upload -> Upload file(s)
и выбрать нужный файл(ы), либо сделать это напрямую, перетаскивая файл из File Explorer'а:

Для изменения прав доступа к бакету / папке / файлу для пользователей, нужно
выделить нужный объект и в меню снизу перейти во вкладку Permissions.
Снизу есть кнопки для выдачи всем пользователям права на чтение файла, либо сделать его приватным:

Read— чтение файла, его просмотрWrite— изменение файлаRead Permissions— разрешение на чтение прав для различных пользователейWrite Permissions— разрешение на изменение прав для различных пользователей
Ссылка на файл будет выглядеть следующим образом:
https://testbucket.s3c2.001.gpucloud.ru/testpicture.jpg
CyberDuck
CyberDuck – это клиент с открытым исходным кодом файловый менеджер для macOS, Linux и Windows.
Программа поддерживает протоколы FTP, SFTP, OpenStack Swift и AmazonS3.
Для установки CyberDuck скачайте дистрибутив на официальном сайте.
Подключение к бакету
- Тип подключения: выберите
Amazon S3. - Сервер: укажите
<endpoint>. В качестве<endpoint>указывается адрес хранилища, например:s3c2.001.gpucloud.ru. - Порт: 443.
- Access Key ID: идентификатор ключа
Access Key. - Пароль: секретный ключ
Secret Key.
С инструкциями по дальнейшей работе с CyberDuck вы можете ознакомиться на сайте разработчика.
Rclone
Установка
Вы можете скачать и установить Rclone с официального сайта.
Настройка конфигурации S3
Запустите команду rclone config в терминале, чтобы настроить подключение к
вашему объектному хранилищу S3. Вам потребуется указать имя конфигурации, выбрать s3
в качестве типа хранилища и следовать инструкциям для ввода учетных данных и параметров доступа к S3.
Когда будет спрашивать о типе Storage, выберите S3 (не Amazon S3) и укажите название.
Загрузка файлов
После настройки конфигурации S3, вы можете использовать команду rclone copy
или rclone sync, чтобы загрузить файл в S3. Синтаксис команды будет следующим:
rclone copy /путь/к/локальному/файлу имя_конфигурации:название_бакета/путь_в_S3/
Здесь:
/путь/к/локальному/файлу- это путь к файлу, который вы хотите загрузить.имя_конфигурации- это имя конфигурации S3, которое вы указали при настройке.название_бакета- это имя бакета в вашем S3-хранилище, куда вы хотите загрузить файл.путь_в_S3/- это путь в S3, по которому будет размещен файл. Можете оставить его пустым, чтобы файл загрузился в корень бакета.
Пример команды загрузки файла:
rclone copy /путь/к/моему_файлу myS3Config:myBucket/
После выполнения этой команды, ваш файл будет загружен в указанный бакет в S3.
s3cmd
Клиент s3cmd – простой и удобный опенсорсный клиент, написанный на Python.
Его можно установить на любую популярную ОС. Инструкция и сама программа доступны на официальном сайте.
Рассмотрим установку и инструкцию по использованию на примере Ubuntu.
Использование на других ОС выглядит так же, а про установку см. соответствующий раздел оф. сайта.
Установка
- Откройте терминал на вашем
Ubuntu. - Установите
s3cmdс помощью следующей команды:sudo apt-get update sudo apt-get install s3cmd
Настройка
После установки, запустите настройку s3cmd с помощью команды:
s3cmd --configure
Вам будут заданы несколько вопросов для настройки учетных данных S3. Вам понадобятся следующие данные:
- Access Key (ключ доступа).
- Secret Key (секретный ключ).
- Регион вашего S3 (например, "us-east-1").
- Указание, следует ли использовать шифрование (yes/no).
Пример корректного конфига:
Access Key: *** Secret Key: *** Default Region: us-east-1 S3 Endpoint: s3c2.001.gpucloud.ru DNS-style bucket+hostname:port template for accessing a bucket: %(bucket)s.s3c2.001.gpucloud.ru Encryption password: Path to GPG program: /usr/bin/gpg Use HTTPS protocol: True HTTP Proxy server name: HTTP Proxy server port: 0
Использование
После настройки, вы можете использовать s3cmd для выполнения различных операций с бакетами S3.
Примеры команд:
- Загрузка локального файла в бакет S3:
s3cmd put имя_локального_файла s3://имя_бакета/путь_в_бакете/
- Загрузка бакета S3 на локальную машину:
s3cmd get s3://имя_бакета/путь_к_файлу_в_бакете имя_локальной_директории/
- Получение списка файлов в бакете S3:
s3cmd ls s3://имя_бакета/
- Удаление файла из бакета S3:
s3cmd del s3://имя_бакета/путь_к_файлу_в_бакете
Это базовые команды для работы с s3cmd.
Вы можете выполнить s3cmd --help, чтобы увидеть полный список команд и опций.
Дополнительная информация
Модели адресации в S3
Сейчас мы поддерживаем две модели адресации для доступа по HTTP(S) к хранилищу S3:
Path-style— модель, при которой название бакета указывается в части пути до объекта в URI (URI path), например: https://s3c2.001.gpucloud.ru/some-bucket/some-text-file.txtVirtual-hosted style— модель, при которой название бакета включается в адрес хоста (hostname), например: https://some-bucket.s3c2.001.gpucloud.ru/some-text-file.txt
Рекомендуем использовать Virtual-hosted style, особенно – для доступа к файлам в связке с CDN при указании ориджина в ресурсе.
При создании источника данных с S3-доменом будет необходимо указать разрешенный бакет, для этого появится соответсвующее поле.
Файлы огромных размеров
Файлы размером более 5 Гб нельзя копировать внутри S3 из-за технических ограничений, связанных с кэшем.
Для копирования больших файлов лучше использовать multi-part upload.