diff --git a/docs/en/engines/table-engines/integrations/s3.md b/docs/en/engines/table-engines/integrations/s3.md index bd15111e6b6..cd5cae1fa7b 100644 --- a/docs/en/engines/table-engines/integrations/s3.md +++ b/docs/en/engines/table-engines/integrations/s3.md @@ -19,23 +19,23 @@ ENGINE = S3(path, [aws_access_key_id, aws_secret_access_key,] format, structure, - `path` — Bucket url with path to file. Supports following wildcards in readonly mode: *, ?, {abc,def} and {N..M} where N, M — numbers, `’abc’, ‘def’ — strings. - `format` — The [format](../../../interfaces/formats.md#formats) of the file. - `structure` — Structure of the table. Format `'column1_name column1_type, column2_name column2_type, ...'`. -- `compression` — Parameter is optional. Supported values: none, gzip/gz, brotli/br, xz/LZMA, zstd/zst. By default, it will autodetect compression by file extension. +- `compression` — Supported values: none, gzip/gz, brotli/br, xz/LZMA, zstd/zst. Parameter is optional. By default, it will autodetect compression by file extension. -**Example:** +**Example** -**1.** Set up the `s3_engine_table` table: +1. Set up the `s3_engine_table` table: ``` sql CREATE TABLE s3_engine_table (name String, value UInt32) ENGINE=S3('https://storage.yandexcloud.net/my-test-bucket-768/test-data.csv.gz', 'CSV', 'name String, value UInt32', 'gzip'); ``` -**2.** Fill file: +2. Fill file: ``` sql INSERT INTO s3_engine_table VALUES ('one', 1), ('two', 2), ('three', 3); ``` -**3.** Query the data: +3. Query the data: ``` sql SELECT * FROM s3_engine_table LIMIT 2; @@ -56,7 +56,7 @@ SELECT * FROM s3_engine_table LIMIT 2; - Indexes. - Replication. -**Globs in path** +## Globs in path {#globs} Multiple path components can have globs. For being processed file should exist and match to the whole path pattern. Listing of files determines during `SELECT` (not at `CREATE` moment). @@ -69,7 +69,7 @@ Constructions with `{}` are similar to the [remote](../../../sql-reference/table **Example** -1. Suppose we have several files in TSV format with the following URIs on HDFS: +Suppose we have several files in TSV format with the following URIs on HDFS: - ‘https://storage.yandexcloud.net/my-test-bucket-768/some_prefix/some_file_1.csv’ - ‘https://storage.yandexcloud.net/my-test-bucket-768/some_prefix/some_file_2.csv’ @@ -78,21 +78,21 @@ Constructions with `{}` are similar to the [remote](../../../sql-reference/table - ‘https://storage.yandexcloud.net/my-test-bucket-768/another_prefix/some_file_2.csv’ - ‘https://storage.yandexcloud.net/my-test-bucket-768/another_prefix/some_file_3.csv’ -2. There are several ways to make a table consisting of all six files: +There are several ways to make a table consisting of all six files: - +The first way: ``` sql CREATE TABLE table_with_range (name String, value UInt32) ENGINE = S3('https://storage.yandexcloud.net/my-test-bucket-768/{some,another}_prefix/some_file_{1..3}', 'CSV'); ``` -3. Another way: +Another way: ``` sql CREATE TABLE table_with_question_mark (name String, value UInt32) ENGINE = S3('https://storage.yandexcloud.net/my-test-bucket-768/{some,another}_prefix/some_file_?', 'CSV'); ``` -4. Table consists of all the files in both directories (all files should satisfy format and schema described in query): +Table consists of all the files in both directories (all files should satisfy format and schema described in query): ``` sql CREATE TABLE table_with_asterisk (name String, value UInt32) ENGINE = S3('https://storage.yandexcloud.net/my-test-bucket-768/{some,another}_prefix/*', 'CSV'); @@ -122,9 +122,9 @@ CREATE TABLE big_table (name String, value UInt32) ENGINE = S3('https://storage. The following settings can be set before query execution or placed into configuration file. -- `s3_max_single_part_upload_size` — Default value is `64Mb`. The maximum size of object to upload using singlepart upload to S3. -- `s3_min_upload_part_size` — Default value is `512Mb`. The minimum size of part to upload during multipart upload to [S3 Multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). -- `s3_max_redirects` — Default value is `10`. Max number of S3 redirects hops allowed. +- `s3_max_single_part_upload_size` — The maximum size of object to upload using singlepart upload to S3. Default value is `64Mb`. +- `s3_min_upload_part_size` — The minimum size of part to upload during multipart upload to [S3 Multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). Default value is `512Mb`. +- `s3_max_redirects` — Max number of S3 redirects hops allowed. Default value is `10`. Security consideration: if malicious user can specify arbitrary S3 URLs, `s3_max_redirects` must be set to zero to avoid [SSRF](https://en.wikipedia.org/wiki/Server-side_request_forgery) attacks; or alternatively, `remote_host_filter` must be specified in server configuration. @@ -132,11 +132,11 @@ Security consideration: if malicious user can specify arbitrary S3 URLs, `s3_max The following settings can be specified in configuration file for given endpoint (which will be matched by exact prefix of a URL): -- `endpoint` — Mandatory. Specifies prefix of an endpoint. -- `access_key_id` and `secret_access_key` — Optional. Specifies credentials to use with given endpoint. -- `use_environment_credentials` — Optional, default value is `false`. If set to `true`, S3 client will try to obtain credentials from environment variables and Amazon EC2 metadata for given endpoint. +- `endpoint` — Specifies prefix of an endpoint. Mandatory. +- `access_key_id` and `secret_access_key` — Specifies credentials to use with given endpoint. Optional. +- `use_environment_credentials` — If set to `true`, S3 client will try to obtain credentials from environment variables and Amazon EC2 metadata for given endpoint. Optional, default value is `false`. - `header` — Optional, can be speficied multiple times. Adds specified HTTP header to a request to given endpoint. -- `server_side_encryption_customer_key_base64` — Optional. If specified, required headers for accessing S3 objects with SSE-C encryption will be set. +- `server_side_encryption_customer_key_base64` — If specified, required headers for accessing S3 objects with SSE-C encryption will be set. Optional. Example: diff --git a/docs/en/sql-reference/table-functions/s3.md b/docs/en/sql-reference/table-functions/s3.md index 76a0e042ea4..be2607c0368 100644 --- a/docs/en/sql-reference/table-functions/s3.md +++ b/docs/en/sql-reference/table-functions/s3.md @@ -7,6 +7,8 @@ toc_title: s3 Provides table-like interface to select/insert files in S3. This table function is similar to [hdfs](../../sql-reference/table-functions/hdfs.md). +## Using engine {#s3-using} + ``` sql s3(path, [aws_access_key_id, aws_secret_access_key,] format, structure, [compression]) ``` diff --git a/docs/ru/engines/table-engines/integrations/s3.md b/docs/ru/engines/table-engines/integrations/s3.md index 193a52a6dde..a2068ffe768 100644 --- a/docs/ru/engines/table-engines/integrations/s3.md +++ b/docs/ru/engines/table-engines/integrations/s3.md @@ -7,7 +7,7 @@ toc_title: S3 Движок S3 обеспечивает интеграцию с экосистемой [Amazon S3](https://aws.amazon.com/s3/). Он похож на движок [HDFS](hdfs.md), но обладает специфическими для S3 функциями. -## Использование движка {#ispolzovanie-dvizhka} +## Использование движка {#usage} ``` sql ENGINE = S3(path, [aws_access_key_id, aws_secret_access_key,] format, structure, [compression]) @@ -18,23 +18,23 @@ ENGINE = S3(path, [aws_access_key_id, aws_secret_access_key,] format, structure, - `path` — URL бакета, включая путь к файлу. В режиме только для чтения поддерживаются следующие подстановочные знаки: `*`, `?`, `{abc,def}` и `{N..M}`, где `N`, `M` — числа, `’abc’`, `‘def’` — строки. - `format` — [формат](../../../interfaces/formats.md#formats) файла. - `structure` — структура таблицы. Указывается в формате `'column1_name column1_type, column2_name column2_type, ...'`. -- `compression` — необязательный параметр. Необходим если требуется использовать определенный формат сжатия. Поддерживаемые значения: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`. По умолчанию формат сжатия определяется автоматически исходя из расширения файла. +- `compression` — необходим если требуется использовать определенный формат сжатия. Поддерживаемые значения: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`. Необязательный параметр. По умолчанию формат сжатия определяется автоматически исходя из расширения файла. **Примеры** -**1.** Создайте таблицу `s3_engine_table`: +1. Создайте таблицу `s3_engine_table`: ``` sql CREATE TABLE s3_engine_table (name String, value UInt32) ENGINE = S3('https://storage.yandexcloud.net/my-test-bucket-768/test-data.csv.gz', 'CSV', 'name String, value UInt32', 'gzip'); ``` -**2.** Заполните файл данными: +2. Заполните файл данными: ``` sql INSERT INTO s3_engine_table VALUES ('one', 1), ('two', 2), ('three', 3); ``` -**3.** Прочитайте данные: +3. Прочитайте данные: Запрос: @@ -51,7 +51,7 @@ SELECT * FROM s3_engine_table LIMIT 2; └──────┴───────┘ ``` -## Детали реализации {#detali-realizatsii} +## Детали реализации {#implementation-details} - Поддерживается многопоточное чтение и запись. - Не поддерживается: @@ -59,7 +59,7 @@ SELECT * FROM s3_engine_table LIMIT 2; - индексы; - репликация. -**Символы подстановки в пути** +## Символы подстановки в пути {#globs} Символы подстановки могут содержаться в нескольких компонентах пути. Обрабатываются только существующие файлы, название которых целиком удовлетворяет шаблону (не только суффиксом или префиксом). Список файлов определяется во время выполнения запроса `SELECT` (не во время `CREATE`). @@ -110,7 +110,7 @@ CREATE TABLE table_with_asterisk (name String, value UInt32) ENGINE = S3('https: CREATE TABLE big_table (name String, value UInt32) ENGINE = S3('https://storage.yandexcloud.net/my-test-bucket-768/big_prefix/file-{000..999}.csv', 'CSV'); ``` -## Виртуальные столбцы {#virtualnye-stolbtsy} +## Виртуальные столбцы {#virtual-columns} - `_path` — путь к файлу. - `_file` — имя файла. @@ -127,7 +127,7 @@ CREATE TABLE big_table (name String, value UInt32) ENGINE = S3('https://storage. - `s3_min_upload_part_size` — минимальный размер части файла для [составной загрузки](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). Значение по умолчанию `512Mb`. - `s3_max_redirects` — максимальное количество http-перенаправлений в запросе на хранилище S3. Значение по умолчанию `10`. -**Соображения безопасности**: чтобы избежать CSRF атак, когда злоумышленник может указать произвольные URL-адреса S3, следует установить `s3_max_redirects` значение `0`; или обязательно указывать `remote_host_filter` в конфигурации сервера. +**Соображения безопасности**: чтобы избежать [SSRF](https://en.wikipedia.org/wiki/Server-side_request_forgery) атак, когда злоумышленник может указать произвольные URL-адреса S3, следует установить `s3_max_redirects` значение `0`; или обязательно указывать `remote_host_filter` в конфигурации сервера. ## Настройки конечных точек {#endpointsettings}