S3#

CedrusData Catalog поддерживает работу с S3-совместимыми решениями, включая, но не ограничиваясь:

Для создания файловой системы S3 необходимо передать адрес (endpoint), а также статические ключи доступа или конфигурацию Security Token Service.

Конфигурация#

Параметр

Описание

endpoint

Адрес S3-сервиса. Должен быть передан в формате http[s]://host[:port]. Обязательный параметр.

region

Регион S3-сервиса. Значение по умолчанию: us-east-1.

path-style-access

Использовать ли режим разрешения адресов path-style. Если значение равно false, будет использован режим virtual-hosted–style. Многие on-premises решения используют режим path-style. Значение по умолчанию: true.

access-key

Статический access key. Если задан, необходимо также задать secret-key, а все значения параметров sts-* будут проигнорированы.

secret-key

Статический secret key. Если задан, необходимо также задать access-key.

sts-role-arn

ARN (Amazon Resource Name) роли, который будет использован в AssumeRole запросе для получения временных токенов доступа.

sts-role-session-name

Значение RoleSessionName, которое будет использовано в AssumeRole запросе для получения временных токенов доступа.

sts-external-id

Значение ExternalId, которое будет использовано в AssumeRole запросе для получения временных токенов доступа.

sts-endpoint

Адрес STS сервиса. Должен быть передан в формате http[s]://host[:port]. Если не указан, будет использовано значение endpoint.

sts-region

Регион STS сервиса. Если не указан, будет использовано значение region.

Пример интеграции с MinIO#

Данный пример показывает как подключить CedrusData Catalog к MinIO и проверить работоспособность интеграции.

  1. Убедитесь, что у вас установлен Docker Server, и команда docker не требует sudo

  2. Создайте сеть Docker, которая будет использована CedrusData Catalog и MinIO:

    docker network create example-network
    
  3. Создайте директорию, в которой будут находиться файлы MinIO:

    mkdir minio-data    
    
  4. Запустите контейнер MinIO:

    docker run -d \
      --name example-minio \
      --network example-network \
      -p 9000:9000 \
      -p 9001:9001 \
      -e MINIO_ADDRESS=':9000' \
      -e MINIO_CONSOLE_ADDRESS=':9001' \
      -e MINIO_ACCESS_KEY=accesskey \
      -e MINIO_SECRET_KEY=secretkey \
      -v $PWD/minio-data:/data minio/minio:RELEASE.2024-07-16T23-46-41Z \
      server /data
    

    Откройте в браузере страницу http://localhost:9001/ и убедитесь, что сервис MinIO запущен успешно. Используйте accesskey и secretkey в качестве имени пользователя и пароля, соответственно.

  5. Создайте бакет и файл в MinIO:

    docker exec -it example-minio touch test.file
    docker exec -it example-minio mc config host add minio http://127.0.0.1:9000 accesskey secretkey
    docker exec -it example-minio mc mb minio/ice-bucket   
    docker exec -it example-minio mc cp test.file minio/ice-bucket/
    
  6. Запустите CedrusData Catalog:

    docker run -d \
        --name example-catalog \
        --network=example-network \
        -p 9080:9080 \
        cr.yandex/crpjtvqf29mpabhmrf1s/cedrusdata-catalog:458-1
    
  7. Создайте файловую систему S3, передав параметры endpoint, access-key и secret-key:

    docker exec -it example-catalog catalog file-system create \
      --file-system-name minio \
      --type s3 \
      -p endpoint=http://example-minio:9000 \
      -p access-key=accesskey \
      -p secret-key=secretkey
    
  8. Убедитесь, что каталог может получить статус объекта с помощью команды file-system check:

    docker exec -it example-catalog catalog file-system check \
      --file-system-name minio \
      --location s3://ice-bucket/test.file
    
    +--------+
    | exists |
    +--------+
    | true   |
    +--------+
    
  9. (при необходимости) Остановите контейнеры и удалите ненужные ресурсы. Вам может потребоваться привилегия sudo для удаления директории minio-data:

    docker rm -f example-catalog
    docker rm -f example-minio
    docker network rm example-network
    rm -rf minio-data