Объектное хранилище 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
.