Skip to content

Работа с хранилищем

Для работы с хранилищем S3 можно использовать любое ПО, поддерживающее работу по протоколу S3. Как правило, для настройки такого ПО достаточно ввести access key, secret key, адрес storage-сервера и указать протокол (HTTP или HTTPS).

Для получения полной документации о возможностях работы по протоколу S3 в сервисе Storage перейдите по ссылке.
Протокол S3 изначально разрабатывался для сервиса компании Amazon AWS S3.

Точки доступа

На данный момент сервис Storage S3 поддерживает три вида точек доступа в каждой локации:

  • Публичная точка доступа (HTTP и HTTPS): s3.loc.scdc.io.
  • Внутрення точка доступа (HTTP и HTTPS): s3.local.loc.scdc.io.
  • Точка доступа DirectConnect может быть настроена по запросу в службу поддержки.

Внутренняя точка доступа может использоваться для доступа только из сетей аккаунта (например из виртуальных машин Compute) к сервису S3 и не использует интернет трафик (который может иметь ограничения по пропускной способности).
При создании бакета он становится доступен сразу на всех точках доступа (т.е. использование внутренней точки доступа не защищает от доступа к бакету через публичную точку доступа).

Note

На данный момент Storage поддерживает только path-style access, что означает доступ к корзинам (бакетам) по пути: s3.loc.scdc.io/<bucket>. Формат DNS-style access вида <bucket>.s3.loc.scdc.io на данный момент не поддерживается.

S3 Browser (GUI)

Рассмотрим настройку S3 Browser - клиента для работы с S3-совместимыми объектными хранилищами, который используется для создания и удаления корзин, просмотра своих объектов в хранилище, а также для загрузки в S3 хранилище новых объектов.
Для установки S3 Browser нужно скачать дистрибутив на сайте разработчика.

При первом старте S3 Browser откроется окно диалога для конфигурации подключения к хранилищу. Его нужно заполнить, используя данные cо страницы пользователя S3 (вкладка Overview):

  • Account type: выбрать S3 Compatible Storage.
  • REST Endpoint: указать адрес хранилища, например: s3.loc.scdc.io, где loc-название локации.
  • Access Key ID: идентификатор ключа Access Key, который вы получили при создании корзины (бакета).
  • Secret Access Key: секретный ключ Secret Key, который вы получили при создании корзины (бакета).
  • Use secure transfer (SSL/TLS): обязательная опция для использования зашифрованного SSL/TLS-канала для взаимодействия с хранилищем.
  • Advanced Settings > Addressing model: выберите опцию Path-style

После заполнения данных необходимо нажать кнопку Add new account для завершения настройки s3browser для работы с S3. С инструкциями по дальнейшей работе с S3 Browser можно ознакомиться на сайте разработчика.

s3cmd (CLI)

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

Для настройки S3cmd используйте команду s3cmd --configure и заполните значения для следующих параметров:

  • Access Key: идентификатор ключа Access Key, который вы получили при создании корзины (бакета).
  • Secret Key: секретный ключ Secret Key, который вы получили при создании корзины (бакета).
  • Default Region: оставьте незаполненным.
  • S3 Endpoint: можно указать публичный адрес хранилища s3.loc.scdc.io или внутренний адрес s3.local.loc.scdc.io, где loc-название локации.
  • DNS-style bucket+hostname:port template for accessing a bucket: укажите %(bucket)s.s3.loc.scdc.io (но на данный момент DNS-style не поддерживается).

Команда s3cmd --configure сохранит настройки в файле ~/.s3cfg в формате:

[default]
access_key = ACCESS_KEY
secret_key = SECRET_KEY
host_base = https://s3.loc.scdc.io
host_bucket = %(bucket)s.s3.loc.scdc.io

Публичный доступ

Пример вывода файла в публичный доступ с помощью команды s3cmd:

Example
# 1. Настройте ключи пользователя S3, созданные в Storage в файле ~/.s3cfg.
# 2. Создайте бакет с публичным ACL
$ s3cmd mb --acl-public s3://test-anon

$ echo "hello world" > index.html

# 3. Сохраните объект с общедоступным ACL
$ s3cmd put --acl-public index.html s3://test-anon
upload: 'index.html' -> 's3://test-anon/index.html'  [1 of 1]
12 of 12   100% in    0s    18.92 B/s  done
Public URL of the object is: http://s3.loc.scdc.io/test-anon/index.html

$ s3cmd info s3://test-anon/index.html
s3://test-anon/index.html (object):
  File size: 12
  Last mod:  Wed, 25 Oct 2023 08:51:52 GMT
  MIME type: text/plain
  Storage:   STANDARD
  MD5 sum:   6f5902ac237024bdd0c176cb93063dc4
  SSE:       none
  Policy:    none
  CORS:      none
  ACL:       *anon*: READ
  ACL:       test123___scdc___user@example.com: FULL_CONTROL
  URL:       http://s3.loc.scdc.io/test-anon/index.html
  x-amz-meta-s3cmd-attrs: atime:1698223852/ctime:1698223852/gid:1000/gname:danix/md5:6f5902ac237024bdd0c176cb93063dc4/mode:33188/mtime:1698223852/uid:1000/uname:dan
Файл доступен по следующему адресу: https://s3.loc.scdc.io/test-anon/index.html

Политики доступа S3 (bucket policies)

Возможность ограничения доступа настраивается в рамках протокола S3 с использованием политик S3.

$ cat > examplepol
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"AWS": ["arn:aws:iam::usfolks:user/fred"]},
    "Action": "s3:PutObjectAcl",
    "Resource": [
      "arn:aws:s3:::happybucket/*"
    ]
  }]
}

$ s3cmd setpolicy examplepol s3://happybucket
$ s3cmd delpolicy s3://happybucket