|
1 |
| -# Работа с бакетами S3 ({{objstorage-full-name}}) |
| 1 | +# Работа с бакетами S3 ({{objstorage-full-name}}) {#working_with_s3} |
2 | 2 |
|
3 | 3 | При работе с {{ objstorage-full-name }} с помощью [внешних источников данных](../../datamodel/external_data_source.md) удобно выполнять прототипирование, первоначальную настройку подключений к данным.
|
4 | 4 |
|
|
22 | 22 |
|
23 | 23 | Список поддерживаемых форматов и алгоритмов сжатия данных для чтения данных в S3 ({{objstorage-full-name}}), приведен в разделе [{#T}](formats.md).
|
24 | 24 |
|
| 25 | +## Создание внешнего подключения на S3 бакет {#external-data-source-settings} |
| 26 | + |
| 27 | +Бакеты в S3 бывают двух видов: публичные и приватные. Для подключения к публичному бакету необходимо использовать `AUTH_METHOD="NONE"`, а для подключения к приватному `AUTH_METHOD="AWS"`. Подробное описание `AWS` можно найти [здесь](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv-authentication-methods.html). `AUTH_METHOD="NONE"` означает что не нужно использовать какую либо аутентификацию. В случае `AUTH_METHOD="AWS"` необходимо указать несколько дополнительных параметров: |
| 28 | + |
| 29 | +- `AWS_ACCESS_KEY_ID_SECRET_NAME` - ссылка на имя [секрета](../../datamodel/secrets.md) в котором хранится `AWS_ACCESS_KEY_ID` |
| 30 | +- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` - ссылка на имя [секрета](../../datamodel/secrets.md) в котором хранится `AWS_SECRET_ACCESS_KEY` |
| 31 | +- `AWS_REGION` - регион из которого будет происходить чтение, например `ru-central-1` |
| 32 | + |
| 33 | +Для настройки соединения к публичному бакету достаточно выполнить следующий SQL-запрос. Запрос создаст внешнее подключение с именем `object_storage`, которое будет указывать на конкретный s3 бакет с именем `bucket`. |
| 34 | + |
| 35 | +```yql |
| 36 | +CREATE EXTERNAL DATA SOURCE object_storage WITH ( |
| 37 | + SOURCE_TYPE="ObjectStorage", |
| 38 | + LOCATION="https://object_storage_domain/bucket/", |
| 39 | + AUTH_METHOD="NONE" |
| 40 | +); |
| 41 | +``` |
| 42 | + |
| 43 | +Для настройки соединения к приватному бакету необходимо выполнить несколько SQL-запросов. В начале нужно создать [секреты](../../datamodel/secrets.md), содержащие `AWS_ACCESS_KEY_ID` и `AWS_SECRET_ACCESS_KEY` |
| 44 | + |
| 45 | +```yql |
| 46 | + CREATE OBJECT aws_access_id (TYPE SECRET) WITH (value=`<id>`); |
| 47 | + CREATE OBJECT aws_access_key (TYPE SECRET) WITH (value=`<key>`); |
| 48 | +``` |
| 49 | + |
| 50 | +Следующий шагом создается внешнее подключение с именем `object_storage`, которое будет указывать на конкретный s3 бакет с именем `bucket`. А также использовать `AUTH_METHOD="AWS"`. Для которого заполняются параметры `AWS_ACCESS_KEY_ID_SECRET_NAME`, `AWS_SECRET_ACCESS_KEY_SECRET_NAME`, `AWS_REGION`. Значения этих параметров описаны выше |
| 51 | + |
| 52 | +```yql |
| 53 | +CREATE EXTERNAL DATA SOURCE object_storage WITH ( |
| 54 | + SOURCE_TYPE="ObjectStorage", |
| 55 | + LOCATION="https://object_storage_domain/bucket/", |
| 56 | + AUTH_METHOD="AWS", |
| 57 | + AWS_ACCESS_KEY_ID_SECRET_NAME="aws_access_id", |
| 58 | + AWS_SECRET_ACCESS_KEY_SECRET_NAME="aws_access_key", |
| 59 | + AWS_REGION="ru-central-1" |
| 60 | +); |
| 61 | +``` |
| 62 | + |
| 63 | +Пример использования созданного внешнего подключения `object_storage` можно найти [здесь](#working_with_s3) |
| 64 | + |
25 | 65 | ## Модель данных {#data_model}
|
26 | 66 |
|
27 | 67 | В {{ objstorage-full-name }} данные хранятся в файлах. Для чтения данных необходимо указать формат данных в файлах, сжатие, списки полей. Для этого используется следующее SQL-выражение:
|
|
0 commit comments