Команды копирования

Команда get_connectors

Возвращает коннекторы, относящиеся к воркспейсу, в котором осуществляется работа.

get_connectors()

Команда create_connector

Позволяет создать коннекторы к источникам (s3custom/s3mlspace/s3amazon/s3google). Подробнее про коннекторы см. Data transfer service.

create_connector(name: str, source_type: ConnectorSourceTypeEnum, parameters: dict)

Для создания коннектора к Amazon S3, Google Cloud Storage S3, Custom S3 (для бакетов Cloud.ru и S3-хранилищ пользователей) нужны следующие параметры:

source_type:
    s3custom/s3mlspace/s3amazon/s3google
parameters:
    {
        "endpoint": string | required
        "bucket": string | required
        "access_key_id": string | required
        "security_key": string | required
    }

Для создания коннектора к базам данных PostgreSQL, MySQL, MS SQL, Oracle DB нужны следующие параметры:

source_type:
    mssql/mysql/oracledb/postgresql
parameters:
    {
        "host": string | required
        "port": integer | minimum: 1 | exclusiveMaximum: 65536 | required
        "user": string | required
        "password": string | required
        "database": string | required
        "schema": string
        "query": string
    }

Пример создания коннектора к хранилищу S3:

client_lib.create_connector(
    "my_s3_connector",
    source_type=client_lib.ConnectorSourceTypeEnum.s3custom,
    parameters={
        "endpoint": "https://mys3endpoint",
        "bucket": "b-usr-mybacket",
        "access_key_id": "u-usr-mybacket-key",
        "security_key": "security key",
    }
)

Метод copy_to_nfs

Предназначен для копирования из S3-хранилища на NFS-хранилище регионов.

copy_to_nfs(
    source_path: str,
    destination_path: str,
    to_region: RegionEnum,
    source_connector_id=None,
    strategy: TransferStrategyEnum = TransferStrategyEnum.write_all
) -> "TransferData":
    """Copy data to NFS from connector (S3 for example).

В случае если source_connector_id не указан, то копирование будет осуществлено из публичного бакета S3-хранилища, привязанного к воркспейсу.

Копирование из S3-хранилища воркспейса в NFS-хранилище:

client_lib.copy_to_nfs(
    source_path="/my_test_folder",
    destination_path="/",
    to_region=client_lib.RegionEnum.V100,
)

Если параметр destination_path="/" оставить без изменений, данные скопируются в каталог /home/jovyan/. Если требуется скопировать в другой каталог, необходимо указать путь к нему /destination/directory/. Путь строится относительно каталога /home/jovyan/.

Копирование из другого источника (не из S3-хранилища, связанного с воркспейсом) на NFS:

connectors = client_lib.get_connectors()
client_lib.copy_to_nfs(
    source_path="/my_test_folder",
    destination_path="/",
    to_region=client_lib.RegionEnum.V100,
    destination_connector_id=connectors[0]["id"]
)

Метод copy_from_nfs

Предназначен для копирования из NFS-хранилищ.

copy_from_nfs(
    source_path: str,
    destination_path: str,
    from_region: RegionEnum,
    destination_connector_id=None,
    strategy: TransferStrategyEnum = TransferStrategyEnum.write_all,
) -> "TransferData":
    """Copy data from NFS to connector (S3 for example).

В случае если destination_connector_id не указан, копирование произойдет из NFS в публичный бакет S3-хранилища, привязанного к воркспейсу.

client_lib.copy_from_nfs(
    source_path="/my_test_folder",
    destination_path="/",
    from_region=client_lib.RegionEnum.V100,
)

Или:

connectors = client_lib.get_connectors()
client_lib.copy_from_nfs(
    source_path="/my_test_folder",
    destination_path="/",
    from_region=client_lib.RegionEnum.V100,
)
Масштабная конференция
GoCloud 2024:
облачные грани будущего