DOCSUP-7086: Fix En version by PR comments.

This commit is contained in:
romanzhukov 2021-03-05 17:31:55 +03:00
parent b96fb47dfa
commit 13b4e7dc38
3 changed files with 29 additions and 27 deletions

View File

@ -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:

View File

@ -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])
```

View File

@ -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}