Skip to content

Commit 778801f

Browse files
authored
Merge cfc6fb0 into 74ff898
2 parents 74ff898 + cfc6fb0 commit 778801f

File tree

1 file changed

+41
-1
lines changed

1 file changed

+41
-1
lines changed

ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Работа с бакетами S3 ({{objstorage-full-name}})
1+
# Работа с бакетами S3 ({{objstorage-full-name}}) {#working_with_s3}
22

33
При работе с {{ objstorage-full-name }} с помощью [внешних источников данных](../../datamodel/external_data_source.md) удобно выполнять прототипирование, первоначальную настройку подключений к данным.
44

@@ -22,6 +22,46 @@ WITH
2222

2323
Список поддерживаемых форматов и алгоритмов сжатия данных для чтения данных в S3 ({{objstorage-full-name}}), приведен в разделе [{#T}](formats.md).
2424

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+
2565
## Модель данных {#data_model}
2666

2767
В {{ objstorage-full-name }} данные хранятся в файлах. Для чтения данных необходимо указать формат данных в файлах, сжатие, списки полей. Для этого используется следующее SQL-выражение:

0 commit comments

Comments
 (0)