From f2aa31a2e878523c90bcd8918711c22420696868 Mon Sep 17 00:00:00 2001 From: Oleg Doronin Date: Mon, 3 Feb 2025 10:51:57 +0000 Subject: [PATCH 1/6] Description for EXTERNAL DATA SOURCE ObjectStorage has been added --- .../s3/external_data_source.md | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md b/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md index 44b49fe031e6..862e993d5563 100644 --- a/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md +++ b/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md @@ -1,4 +1,4 @@ -# Работа с бакетами S3 ({{objstorage-full-name}}) +# Работа с бакетами S3 ({{objstorage-full-name}}) {#working_with_s3} При работе с {{ objstorage-full-name }} с помощью [внешних источников данных](../../datamodel/external_data_source.md) удобно выполнять прототипирование, первоначальную настройку подключений к данным. @@ -22,6 +22,44 @@ WITH Список поддерживаемых форматов и алгоритмов сжатия данных для чтения данных в S3 ({{objstorage-full-name}}), приведен в разделе [{#T}](formats.md). +## Создание внешнего подключения на S3 бакет {#external-data-source-settings} + +Бакеты в 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"` необходимо указать несколько дополнительных параметров: + +- `AWS_ACCESS_KEY_ID_SECRET_NAME` - ссылка на имя [секрета](../datamodel/secrets.md) в котором хранится `AWS_ACCESS_KEY_ID` +- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` - ссылка на имя [секрета](../datamodel/secrets.md) в котором хранится `AWS_SECRET_ACCESS_KEY` +- `AWS_REGION` - регион из которого будет происходить чтение, например `ru-central-1` + +Для настройки соединения к публичному бакету достаточно выполнить следующий SQL-запрос. Запрос создаст внешнее подключение с именем `object_storage`, которое будет указывать на конкретный s3 бакет с именем `bucket`. +```yql +CREATE EXTERNAL DATA SOURCE object_storage WITH ( + SOURCE_TYPE="ObjectStorage", + LOCATION="https://object_storage_domain/bucket/", + AUTH_METHOD="NONE" +); +``` + +Для настройки соединения к приватному бакету необходимо выполнить несколько SQL-запросов. В начале нужно создать [секреты](../datamodel/secrets.md), содержащие `AWS_ACCESS_KEY_ID` и `AWS_SECRET_ACCESS_KEY` + +```yql + CREATE OBJECT aws_access_id (TYPE SECRET) WITH (value=``); + CREATE OBJECT aws_access_key (TYPE SECRET) WITH (value=``); +``` + +Следующий шагом создается внешнее подключение с именем `object_storage`, которое будет указывать на конкретный s3 бакет с именем `bucket`. А также использовать `AUTH_METHOD="AWS"`. Для которого заполняются параметры `AWS_ACCESS_KEY_ID_SECRET_NAME`, `AWS_SECRET_ACCESS_KEY_SECRET_NAME`, `AWS_REGION`. Значения этих параметров описаны выше +```yql +CREATE EXTERNAL DATA SOURCE object_storage WITH ( + SOURCE_TYPE="ObjectStorage", + LOCATION="https://object_storage_domain/bucket/", + AUTH_METHOD="AWS", + AWS_ACCESS_KEY_ID_SECRET_NAME="aws_access_id", + AWS_SECRET_ACCESS_KEY_SECRET_NAME="aws_access_key", + AWS_REGION="ru-central-1" +); +``` + +Пример использования созданного внешнего подключения `object_storage` можно найти [здесь](#working_with_s3) + ## Модель данных {#data_model} В {{ objstorage-full-name }} данные хранятся в файлах. Для чтения данных необходимо указать формат данных в файлах, сжатие, списки полей. Для этого используется следующее SQL-выражение: From cfc6fb0aa9a610f9da0f9af7c50ff7eda560db8e Mon Sep 17 00:00:00 2001 From: Oleg Doronin Date: Mon, 3 Feb 2025 13:47:13 +0000 Subject: [PATCH 2/6] small fixes --- .../concepts/federated_query/s3/external_data_source.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md b/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md index 862e993d5563..94d6a84406a8 100644 --- a/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md +++ b/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md @@ -26,11 +26,12 @@ WITH Бакеты в 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"` необходимо указать несколько дополнительных параметров: -- `AWS_ACCESS_KEY_ID_SECRET_NAME` - ссылка на имя [секрета](../datamodel/secrets.md) в котором хранится `AWS_ACCESS_KEY_ID` -- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` - ссылка на имя [секрета](../datamodel/secrets.md) в котором хранится `AWS_SECRET_ACCESS_KEY` +- `AWS_ACCESS_KEY_ID_SECRET_NAME` - ссылка на имя [секрета](../../datamodel/secrets.md) в котором хранится `AWS_ACCESS_KEY_ID` +- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` - ссылка на имя [секрета](../../datamodel/secrets.md) в котором хранится `AWS_SECRET_ACCESS_KEY` - `AWS_REGION` - регион из которого будет происходить чтение, например `ru-central-1` Для настройки соединения к публичному бакету достаточно выполнить следующий SQL-запрос. Запрос создаст внешнее подключение с именем `object_storage`, которое будет указывать на конкретный s3 бакет с именем `bucket`. + ```yql CREATE EXTERNAL DATA SOURCE object_storage WITH ( SOURCE_TYPE="ObjectStorage", @@ -39,7 +40,7 @@ CREATE EXTERNAL DATA SOURCE object_storage WITH ( ); ``` -Для настройки соединения к приватному бакету необходимо выполнить несколько SQL-запросов. В начале нужно создать [секреты](../datamodel/secrets.md), содержащие `AWS_ACCESS_KEY_ID` и `AWS_SECRET_ACCESS_KEY` +Для настройки соединения к приватному бакету необходимо выполнить несколько SQL-запросов. В начале нужно создать [секреты](../../datamodel/secrets.md), содержащие `AWS_ACCESS_KEY_ID` и `AWS_SECRET_ACCESS_KEY` ```yql CREATE OBJECT aws_access_id (TYPE SECRET) WITH (value=``); @@ -47,6 +48,7 @@ CREATE EXTERNAL DATA SOURCE object_storage WITH ( ``` Следующий шагом создается внешнее подключение с именем `object_storage`, которое будет указывать на конкретный s3 бакет с именем `bucket`. А также использовать `AUTH_METHOD="AWS"`. Для которого заполняются параметры `AWS_ACCESS_KEY_ID_SECRET_NAME`, `AWS_SECRET_ACCESS_KEY_SECRET_NAME`, `AWS_REGION`. Значения этих параметров описаны выше + ```yql CREATE EXTERNAL DATA SOURCE object_storage WITH ( SOURCE_TYPE="ObjectStorage", From 2900a7cea9a2e00bbc754d0b8c07511946211fdf Mon Sep 17 00:00:00 2001 From: Oleg Doronin Date: Mon, 3 Feb 2025 14:10:15 +0000 Subject: [PATCH 3/6] en version has been added --- .../s3/external_data_source.md | 42 ++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/ydb/docs/en/core/concepts/federated_query/s3/external_data_source.md b/ydb/docs/en/core/concepts/federated_query/s3/external_data_source.md index 85127f77e85b..f31a9d247689 100644 --- a/ydb/docs/en/core/concepts/federated_query/s3/external_data_source.md +++ b/ydb/docs/en/core/concepts/federated_query/s3/external_data_source.md @@ -1,4 +1,4 @@ -# Working with S3 buckets ({{objstorage-full-name}}) +# Working with S3 buckets ({{objstorage-full-name}}) {#working_with_s3} When working with {{ objstorage-full-name }} using [external data sources](../../datamodel/external_data_source.md), it is convenient to perform prototyping and initial data connection setup. @@ -22,6 +22,46 @@ WITH The list of supported formats and data compression algorithms for reading data in S3 ({{objstorage-full-name}}) is provided in the section [{#T}](formats.md). +## Creating an external connection to S3 bucket {#external-data-source-settings} + +There are two types of buckets in S3: public and private. To connect to a public bucket, you need to use `AUTH_METHOD="NONE"`, and to connect to a private bucket, `AUTH_METHOD="AWS"`. A detailed description of `AWS` can be found [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv-authentication-methods.html). `AUTH_METHOD="NONE"` means that no authentication should be used. In case of `AUTH_METHOD="AWS"`, you need to specify several additional parameters: + +- `AWS_ACCESS_KEY_ID_SECRET_NAME` - reference to the name of the [secret](../../datamodel/secrets.md) where `AWS_ACCESS_KEY_ID` is stored +- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` - reference to the name of the [secret](../../datamodel/secrets.md) where `AWS_SECRET_ACCESS_KEY` is stored +- `AWS_REGION` - region from which reading will be performed, for example `ru-central-1` + +To set up a connection to a public bucket, it is enough to execute the following SQL query. The query will create an external connection named `object_storage`, which will point to a specific s3 bucket named `bucket`. + +```yql +CREATE EXTERNAL DATA SOURCE object_storage WITH ( + SOURCE_TYPE="ObjectStorage", + LOCATION="https://object_storage_domain/bucket/", + AUTH_METHOD="NONE" +); +``` + +To set up a connection to a private bucket, you need to run a few SQL queries. First, you need to create [secrets](../../datamodel/secrets.md) containing `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` + +```yql + CREATE OBJECT aws_access_id (TYPE SECRET) WITH (value=``); + CREATE OBJECT aws_access_key (TYPE SECRET) WITH (value=``); +``` + +The next step is to create an external connection named `object_storage`, which will point out to a specific s3 bucket named `bucket` and also use `AUTH_METHOD="AWS"`. The parameters `AWS_ACCESS_KEY_ID_SECRET_NAME`, `AWS_SECRET_ACCESS_KEY_SECRET_NAME`, and `AWS_REGION` are filled in for `AWS`. The values of these parameters are described above + +```yql +CREATE EXTERNAL DATA SOURCE object_storage WITH ( + SOURCE_TYPE="ObjectStorage", + LOCATION="https://object_storage_domain/bucket/", + AUTH_METHOD="AWS", + AWS_ACCESS_KEY_ID_SECRET_NAME="aws_access_id", + AWS_SECRET_ACCESS_KEY_SECRET_NAME="aws_access_key", + AWS_REGION="ru-central-1" +); +``` + +The example of using the created external connection `object_storage` can be found [here](#working_with_s3) + ## Data model {#data_model} In {{ objstorage-full-name }}, data is stored in files. To read data, you need to specify the data format in the files, compression, and lists of fields. This is done using the following SQL expression: From 79ba85faa99f9bc242caa53acb3f0285afd3341f Mon Sep 17 00:00:00 2001 From: Oleg Doronin Date: Mon, 3 Feb 2025 14:20:55 +0000 Subject: [PATCH 4/6] cleanup --- .../federated_query/s3/external_data_source.md | 12 ++++++------ .../federated_query/s3/external_data_source.md | 14 +++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ydb/docs/en/core/concepts/federated_query/s3/external_data_source.md b/ydb/docs/en/core/concepts/federated_query/s3/external_data_source.md index f31a9d247689..77bb4b7a8e16 100644 --- a/ydb/docs/en/core/concepts/federated_query/s3/external_data_source.md +++ b/ydb/docs/en/core/concepts/federated_query/s3/external_data_source.md @@ -26,11 +26,11 @@ The list of supported formats and data compression algorithms for reading data i There are two types of buckets in S3: public and private. To connect to a public bucket, you need to use `AUTH_METHOD="NONE"`, and to connect to a private bucket, `AUTH_METHOD="AWS"`. A detailed description of `AWS` can be found [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv-authentication-methods.html). `AUTH_METHOD="NONE"` means that no authentication should be used. In case of `AUTH_METHOD="AWS"`, you need to specify several additional parameters: -- `AWS_ACCESS_KEY_ID_SECRET_NAME` - reference to the name of the [secret](../../datamodel/secrets.md) where `AWS_ACCESS_KEY_ID` is stored -- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` - reference to the name of the [secret](../../datamodel/secrets.md) where `AWS_SECRET_ACCESS_KEY` is stored -- `AWS_REGION` - region from which reading will be performed, for example `ru-central-1` +- `AWS_ACCESS_KEY_ID_SECRET_NAME` - reference to the name of the [secret](../../datamodel/secrets.md) where `AWS_ACCESS_KEY_ID` is stored. +- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` - reference to the name of the [secret](../../datamodel/secrets.md) where `AWS_SECRET_ACCESS_KEY` is stored. +- `AWS_REGION` - region from which reading will be performed, for example `ru-central-1`. -To set up a connection to a public bucket, it is enough to execute the following SQL query. The query will create an external connection named `object_storage`, which will point to a specific s3 bucket named `bucket`. +To set up a connection to a public bucket, it is enough to execute the following SQL query. The query will create an external connection named `object_storage`, which will point to a specific S3 bucket named `bucket`. ```yql CREATE EXTERNAL DATA SOURCE object_storage WITH ( @@ -47,7 +47,7 @@ To set up a connection to a private bucket, you need to run a few SQL queries. F CREATE OBJECT aws_access_key (TYPE SECRET) WITH (value=``); ``` -The next step is to create an external connection named `object_storage`, which will point out to a specific s3 bucket named `bucket` and also use `AUTH_METHOD="AWS"`. The parameters `AWS_ACCESS_KEY_ID_SECRET_NAME`, `AWS_SECRET_ACCESS_KEY_SECRET_NAME`, and `AWS_REGION` are filled in for `AWS`. The values of these parameters are described above +The next step is to create an external connection named `object_storage`, which will point out to a specific S3 bucket named `bucket` and also use `AUTH_METHOD="AWS"`. The parameters `AWS_ACCESS_KEY_ID_SECRET_NAME`, `AWS_SECRET_ACCESS_KEY_SECRET_NAME`, and `AWS_REGION` are filled in for `AWS`. The values of these parameters are described above ```yql CREATE EXTERNAL DATA SOURCE object_storage WITH ( @@ -60,7 +60,7 @@ CREATE EXTERNAL DATA SOURCE object_storage WITH ( ); ``` -The example of using the created external connection `object_storage` can be found [here](#working_with_s3) +The example of using the created external connection `object_storage` can be found [here](#working_with_s3). ## Data model {#data_model} diff --git a/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md b/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md index 94d6a84406a8..59ce66b92e7c 100644 --- a/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md +++ b/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md @@ -24,13 +24,13 @@ WITH ## Создание внешнего подключения на S3 бакет {#external-data-source-settings} -Бакеты в 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"` необходимо указать несколько дополнительных параметров: +Бакеты в 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"` необходимо указать несколько дополнительных параметров: -- `AWS_ACCESS_KEY_ID_SECRET_NAME` - ссылка на имя [секрета](../../datamodel/secrets.md) в котором хранится `AWS_ACCESS_KEY_ID` -- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` - ссылка на имя [секрета](../../datamodel/secrets.md) в котором хранится `AWS_SECRET_ACCESS_KEY` -- `AWS_REGION` - регион из которого будет происходить чтение, например `ru-central-1` +- `AWS_ACCESS_KEY_ID_SECRET_NAME` - ссылка на имя [секрета](../../datamodel/secrets.md) в котором хранится `AWS_ACCESS_KEY_ID`. +- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` - ссылка на имя [секрета](../../datamodel/secrets.md) в котором хранится `AWS_SECRET_ACCESS_KEY`. +- `AWS_REGION` - регион из которого будет происходить чтение, например `ru-central-1`. -Для настройки соединения к публичному бакету достаточно выполнить следующий SQL-запрос. Запрос создаст внешнее подключение с именем `object_storage`, которое будет указывать на конкретный s3 бакет с именем `bucket`. +Для настройки соединения к публичному бакету достаточно выполнить следующий SQL-запрос. Запрос создаст внешнее подключение с именем `object_storage`, которое будет указывать на конкретный S3 бакет с именем `bucket`. ```yql CREATE EXTERNAL DATA SOURCE object_storage WITH ( @@ -47,7 +47,7 @@ CREATE EXTERNAL DATA SOURCE object_storage WITH ( CREATE OBJECT aws_access_key (TYPE SECRET) WITH (value=``); ``` -Следующий шагом создается внешнее подключение с именем `object_storage`, которое будет указывать на конкретный s3 бакет с именем `bucket`. А также использовать `AUTH_METHOD="AWS"`. Для которого заполняются параметры `AWS_ACCESS_KEY_ID_SECRET_NAME`, `AWS_SECRET_ACCESS_KEY_SECRET_NAME`, `AWS_REGION`. Значения этих параметров описаны выше +Следующим шагом создается внешнее подключение с именем `object_storage`, которое будет указывать на конкретный S3 бакет с именем `bucket`, а также использовать `AUTH_METHOD="AWS"`, для которого заполняются параметры `AWS_ACCESS_KEY_ID_SECRET_NAME`, `AWS_SECRET_ACCESS_KEY_SECRET_NAME`, `AWS_REGION`. Значения этих параметров описаны выше ```yql CREATE EXTERNAL DATA SOURCE object_storage WITH ( @@ -60,7 +60,7 @@ CREATE EXTERNAL DATA SOURCE object_storage WITH ( ); ``` -Пример использования созданного внешнего подключения `object_storage` можно найти [здесь](#working_with_s3) +Пример использования созданного внешнего подключения `object_storage` можно найти [здесь](#working_with_s3). ## Модель данных {#data_model} From 1f77911549fc2fb85f1f3c667047d87a5d24bb36 Mon Sep 17 00:00:00 2001 From: Oleg Doronin Date: Fri, 7 Feb 2025 16:51:29 +0000 Subject: [PATCH 5/6] clenup v2 --- .../s3/external_data_source.md | 64 +++++++++---------- .../s3/external_data_source.md | 64 +++++++++---------- 2 files changed, 64 insertions(+), 64 deletions(-) diff --git a/ydb/docs/en/core/concepts/federated_query/s3/external_data_source.md b/ydb/docs/en/core/concepts/federated_query/s3/external_data_source.md index 77bb4b7a8e16..2fb2fa26794c 100644 --- a/ydb/docs/en/core/concepts/federated_query/s3/external_data_source.md +++ b/ydb/docs/en/core/concepts/federated_query/s3/external_data_source.md @@ -1,36 +1,14 @@ -# Working with S3 buckets ({{objstorage-full-name}}) {#working_with_s3} +# Working with S3 buckets ({{objstorage-full-name}}) -When working with {{ objstorage-full-name }} using [external data sources](../../datamodel/external_data_source.md), it is convenient to perform prototyping and initial data connection setup. - -An example query to read data: - -```yql -SELECT - * -FROM - object_storage.`*.tsv` -WITH -( - FORMAT = "tsv_with_names", - SCHEMA = - ( - ts Uint32, - action Utf8 - ) -); -``` - -The list of supported formats and data compression algorithms for reading data in S3 ({{objstorage-full-name}}) is provided in the section [{#T}](formats.md). - -## Creating an external connection to S3 bucket {#external-data-source-settings} +To work with S3, you need to set up a data storage connection. There is a DDL for configuring such connections. Next, let's look at the SQL syntax and the management of these settings. -There are two types of buckets in S3: public and private. To connect to a public bucket, you need to use `AUTH_METHOD="NONE"`, and to connect to a private bucket, `AUTH_METHOD="AWS"`. A detailed description of `AWS` can be found [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv-authentication-methods.html). `AUTH_METHOD="NONE"` means that no authentication should be used. In case of `AUTH_METHOD="AWS"`, you need to specify several additional parameters: +There are two types of buckets in S3: public and private. To connect to a public bucket, use `AUTH_METHOD="NONE"`. To connect to a private bucket, use `AUTH_METHOD="AWS"`. A detailed description of `AWS` can be found [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv-authentication-methods.html). `AUTH_METHOD="NONE"` means that no authentication is used. If `AUTH_METHOD="AWS"` is specified, several additional parameters are required: -- `AWS_ACCESS_KEY_ID_SECRET_NAME` - reference to the name of the [secret](../../datamodel/secrets.md) where `AWS_ACCESS_KEY_ID` is stored. -- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` - reference to the name of the [secret](../../datamodel/secrets.md) where `AWS_SECRET_ACCESS_KEY` is stored. -- `AWS_REGION` - region from which reading will be performed, for example `ru-central-1`. +- `AWS_ACCESS_KEY_ID_SECRET_NAME` – reference to the name of the [secret](../../datamodel/secrets.md) where `AWS_ACCESS_KEY_ID` is stored. +- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` – reference to the name of the [secret](../../datamodel/secrets.md) where `AWS_SECRET_ACCESS_KEY` is stored. +- `AWS_REGION` – region from which reading is performed, for example, `ru-central-1`. -To set up a connection to a public bucket, it is enough to execute the following SQL query. The query will create an external connection named `object_storage`, which will point to a specific S3 bucket named `bucket`. +To set up a connection to a public bucket, execute the following SQL query. The query creates an external connection named `object_storage`, which points to a specific S3 bucket named `bucket`. ```yql CREATE EXTERNAL DATA SOURCE object_storage WITH ( @@ -40,14 +18,14 @@ CREATE EXTERNAL DATA SOURCE object_storage WITH ( ); ``` -To set up a connection to a private bucket, you need to run a few SQL queries. First, you need to create [secrets](../../datamodel/secrets.md) containing `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` +To set up a connection to a private bucket, you need to run a few SQL queries. First, create [secrets](../../datamodel/secrets.md) containing `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`. ```yql CREATE OBJECT aws_access_id (TYPE SECRET) WITH (value=``); CREATE OBJECT aws_access_key (TYPE SECRET) WITH (value=``); ``` -The next step is to create an external connection named `object_storage`, which will point out to a specific S3 bucket named `bucket` and also use `AUTH_METHOD="AWS"`. The parameters `AWS_ACCESS_KEY_ID_SECRET_NAME`, `AWS_SECRET_ACCESS_KEY_SECRET_NAME`, and `AWS_REGION` are filled in for `AWS`. The values of these parameters are described above +The next step is to create an external connection named `object_storage`, which points to a specific S3 bucket named `bucket` and uses `AUTH_METHOD="AWS"`. The parameters `AWS_ACCESS_KEY_ID_SECRET_NAME`, `AWS_SECRET_ACCESS_KEY_SECRET_NAME`, and `AWS_REGION` are filled in for `AWS`. The values of these parameters are described above. ```yql CREATE EXTERNAL DATA SOURCE object_storage WITH ( @@ -60,7 +38,29 @@ CREATE EXTERNAL DATA SOURCE object_storage WITH ( ); ``` -The example of using the created external connection `object_storage` can be found [here](#working_with_s3). +## Using an external connection to an S3 bucket {#external-data-source-settings} + +When working with {{ objstorage-full-name }} using [external data sources](../../datamodel/external_data_source.md), it is convenient to perform prototyping and initial data connection setup. + +An example query to read data: + +```yql +SELECT + * +FROM + object_storage.`*.tsv` +WITH +( + FORMAT = "tsv_with_names", + SCHEMA = + ( + ts Uint32, + action Utf8 + ) +); +``` + +The list of supported formats and data compression algorithms for reading data in S3 ({{objstorage-full-name}}) is provided in the section [{#T}](formats.md). ## Data model {#data_model} diff --git a/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md b/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md index 59ce66b92e7c..8c6b0b80610e 100644 --- a/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md +++ b/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md @@ -1,36 +1,14 @@ -# Работа с бакетами S3 ({{objstorage-full-name}}) {#working_with_s3} +# Работа с бакетами S3 ({{objstorage-full-name}}) -При работе с {{ objstorage-full-name }} с помощью [внешних источников данных](../../datamodel/external_data_source.md) удобно выполнять прототипирование, первоначальную настройку подключений к данным. - -Пример запроса для чтения данных: - -```yql -SELECT - * -FROM - object_storage.`*.tsv` -WITH -( - FORMAT = "tsv_with_names", - SCHEMA = - ( - ts Uint32, - action Utf8 - ) -); -``` - -Список поддерживаемых форматов и алгоритмов сжатия данных для чтения данных в S3 ({{objstorage-full-name}}), приведен в разделе [{#T}](formats.md). - -## Создание внешнего подключения на S3 бакет {#external-data-source-settings} +Перед началом работы с S3 необходимо настроить подключение к хранилищу данных. Для этого существует DDL для настройки таких подключений. Далее рассмотрим SQL синтаксис и управелние этими настройками. -Бакеты в 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"` необходимо указать несколько дополнительных параметров: +Бакеты в 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"` необходимо указать несколько дополнительных параметров: -- `AWS_ACCESS_KEY_ID_SECRET_NAME` - ссылка на имя [секрета](../../datamodel/secrets.md) в котором хранится `AWS_ACCESS_KEY_ID`. -- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` - ссылка на имя [секрета](../../datamodel/secrets.md) в котором хранится `AWS_SECRET_ACCESS_KEY`. -- `AWS_REGION` - регион из которого будет происходить чтение, например `ru-central-1`. +- `AWS_ACCESS_KEY_ID_SECRET_NAME` — ссылка на имя [секрета](../../datamodel/secrets.md), в котором хранится `AWS_ACCESS_KEY_ID`. +- `AWS_SECRET_ACCESS_KEY_SECRET_NAME` — ссылка на имя [секрета](../../datamodel/secrets.md), в котором хранится `AWS_SECRET_ACCESS_KEY`. +- `AWS_REGION` — регион, из которого будет происходить чтение, например `ru-central-1`. -Для настройки соединения к публичному бакету достаточно выполнить следующий SQL-запрос. Запрос создаст внешнее подключение с именем `object_storage`, которое будет указывать на конкретный S3 бакет с именем `bucket`. +Для настройки соединения с публичным бакетом достаточно выполнить следующий SQL-запрос. Запрос создаст внешнее подключение с именем `object_storage`, которое будет указывать на конкретный S3-бакет с именем `bucket`. ```yql CREATE EXTERNAL DATA SOURCE object_storage WITH ( @@ -40,14 +18,14 @@ CREATE EXTERNAL DATA SOURCE object_storage WITH ( ); ``` -Для настройки соединения к приватному бакету необходимо выполнить несколько SQL-запросов. В начале нужно создать [секреты](../../datamodel/secrets.md), содержащие `AWS_ACCESS_KEY_ID` и `AWS_SECRET_ACCESS_KEY` +Для настройки соединения с приватным бакетом необходимо выполнить несколько SQL-запросов. Сначала нужно создать [секреты](../../datamodel/secrets.md), содержащие `AWS_ACCESS_KEY_ID` и `AWS_SECRET_ACCESS_KEY`. ```yql CREATE OBJECT aws_access_id (TYPE SECRET) WITH (value=``); CREATE OBJECT aws_access_key (TYPE SECRET) WITH (value=``); ``` -Следующим шагом создается внешнее подключение с именем `object_storage`, которое будет указывать на конкретный S3 бакет с именем `bucket`, а также использовать `AUTH_METHOD="AWS"`, для которого заполняются параметры `AWS_ACCESS_KEY_ID_SECRET_NAME`, `AWS_SECRET_ACCESS_KEY_SECRET_NAME`, `AWS_REGION`. Значения этих параметров описаны выше +Следующим шагом создаётся внешнее подключение с именем `object_storage`, которое будет указывать на конкретный S3-бакет с именем `bucket`, а также использовать `AUTH_METHOD="AWS"`, для которого заполняются параметры `AWS_ACCESS_KEY_ID_SECRET_NAME`, `AWS_SECRET_ACCESS_KEY_SECRET_NAME`, `AWS_REGION`. Значения этих параметров описаны выше. ```yql CREATE EXTERNAL DATA SOURCE object_storage WITH ( @@ -60,7 +38,29 @@ CREATE EXTERNAL DATA SOURCE object_storage WITH ( ); ``` -Пример использования созданного внешнего подключения `object_storage` можно найти [здесь](#working_with_s3). +## Использование внешнего подключения к S3-бакету {#external-data-source-settings} + +При работе с {{ objstorage-full-name }} с помощью [внешних источников данных](../../datamodel/external_data_source.md) удобно выполнять прототипирование, первоначальную настройку подключений к данным. + +Пример запроса для чтения данных: + +```yql +SELECT + * +FROM + object_storage.`*.tsv` +WITH +( + FORMAT = "tsv_with_names", + SCHEMA = + ( + ts Uint32, + action Utf8 + ) +); +``` + +Список поддерживаемых форматов и алгоритмов сжатия данных для чтения данных в S3 ({{objstorage-full-name}}), приведен в разделе [{#T}](formats.md). ## Модель данных {#data_model} From c2a55ab153c6d1fdcd775a3c659285a0922fb628 Mon Sep 17 00:00:00 2001 From: Ivan Blinkov Date: Mon, 10 Feb 2025 21:07:27 +0700 Subject: [PATCH 6/6] Update ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md Co-authored-by: Andrey Fomichev --- .../ru/core/concepts/federated_query/s3/external_data_source.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md b/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md index 8c6b0b80610e..5645f21bb45d 100644 --- a/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md +++ b/ydb/docs/ru/core/concepts/federated_query/s3/external_data_source.md @@ -1,6 +1,6 @@ # Работа с бакетами S3 ({{objstorage-full-name}}) -Перед началом работы с S3 необходимо настроить подключение к хранилищу данных. Для этого существует DDL для настройки таких подключений. Далее рассмотрим SQL синтаксис и управелние этими настройками. +Перед началом работы с S3 необходимо настроить подключение к хранилищу данных. Для этого существует DDL для настройки таких подключений. Далее рассмотрим SQL синтаксис и управление этими настройками. Бакеты в 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"` необходимо указать несколько дополнительных параметров: