select-object-content
Описание
Примечание
Данная операция не поддерживается для ведер каталогов.Этот метод фильтрует содержимое объекта Amazon S3 на основе простого запроса SQL. В запросе, наряду с выражением SQL, необходимо указать формат сериализации данных объекта (JSON, CSV или Apache Parquet). Amazon S3 использует этот формат для разбора данных объекта в записи и возвращает только записи, которые соответствуют указанному выражению SQL. Также необходимо указать формат сериализации данных для ответа.
Данная функциональность не поддерживается для Amazon S3 на Outposts.
Для получения дополнительной информации об Amazon S3 Select см. Выбор содержимого объектов и Команда SELECT в руководстве пользователя Amazon S3.
Для выполнения этой операции требуется разрешение s3:GetObject. Amazon S3 Select не поддерживает анонимный доступ. Дополнительную информацию о разрешениях см. в разделе Указание разрешений в политике в руководстве пользователя Amazon S3.
Вы можете использовать Amazon S3 Select для запросов к объектам с такими свойствами формата:
-
CSV, JSON и Parquet - Объекты должны быть в формате CSV, JSON или Parquet.
-
UTF-8 - UTF-8 — единственный тип кодировки, поддерживаемый Amazon S3 Select.
-
GZIP или BZIP2 - Файлы CSV и JSON могут быть сжаты с помощью GZIP или BZIP2. GZIP и BZIP2 — единственные форматы сжатия, которые поддерживаются Amazon S3 Select для файлов CSV и JSON. Amazon S3 Select поддерживает столбчатое сжатие для Parquet с использованием GZIP или Snappy. Amazon S3 Select не поддерживает сжатие всего объекта для объектов Parquet.
-
Шифрование на стороне сервера - Amazon S3 Select поддерживает запросы к объектам, защищенным шифрованием на стороне сервера. Для объектов, зашифрованных с помощью предоставленных клиентом ключей шифрования (SSE-C), необходимо использовать HTTPS и заголовки, описанные в GetObject. Дополнительную информацию о SSE-C см. в разделе Шифрование на стороне сервера (использование ключей шифрования, предоставленных клиентом) в руководстве пользователя Amazon S3. Для объектов, зашифрованных с помощью управляемых Amazon S3 ключей (SSE-S3) и ключей Amazon Web Services KMS (SSE-KMS), шифрование на стороне сервера обрабатывается прозрачно, поэтому вам ничего не нужно указывать. Дополнительную информацию о шифровании на стороне сервера, включая SSE-S3 и SSE-KMS, см. в разделе Защита данных с помощью шифрования на стороне сервера в руководстве пользователя Amazon S3.
Работа с телом ответа
Поскольку размер ответа неизвестен, Amazon S3 Select передает ответ в виде последовательности сообщений и включает заголовок Transfer-Encoding со значением chunked в ответе. Дополнительную информацию см. в Приложении: Ответ SelectObjectContent.
Действие SelectObjectContent не поддерживает следующую функциональность GetObject. Дополнительную информацию см. в GetObject.
-
Range: Хотя вы можете указать диапазон сканирования для запроса Amazon S3 Select (см. SelectObjectContentRequest - ScanRange в параметрах запроса), вы не можете указать диапазон байтов объекта для возврата. -
Хранилища классов
GLACIER,DEEP_ARCHIVEиREDUCED_REDUNDANCYили уровни доступаARCHIVE_ACCESSиDEEP_ARCHIVE_ACCESSхранилища классаINTELLIGENT_TIERING: Вы не можете запрашивать объекты в хранилищах классовGLACIER,DEEP_ARCHIVEилиREDUCED_REDUNDANCY, а также объекты в уровнях доступаARCHIVE_ACCESSилиDEEP_ARCHIVE_ACCESSхранилища классаINTELLIGENT_TIERING. Дополнительную информацию о классах хранилища см. в разделе Использование классов хранилища Amazon S3 в руководстве пользователя Amazon S3.Особые ошибки
Список особых ошибок для данной операции см. в списке кодов ошибок SELECT Object Content.
Следующие операции связаны с SelectObjectContent:
- GetObject
- GetBucketLifecycleConfiguration
- PutBucketLifecycleConfiguration
См. также: Документация API AWS
Синтаксис
select-object-content
--bucket <value>
--key <value>
[--sse-customer-algorithm <value>]
[--sse-customer-key <value>]
[--sse-customer-key-md5 <value>]
--expression <value>
--expression-type <value>
[--request-progress <value>]
--input-serialization <value>
--output-serialization <value>
[--scan-range <value>]
[--expected-bucket-owner <value>]
<outfile>
[--debug]
[--endpoint-url <value>]
[--no-verify-ssl]
[--no-paginate]
[--output <value>]
[--query <value>]
[--profile <value>]
[--region <value>]
[--version <value>]
[--color <value>]
[--no-sign-request]
[--ca-bundle <value>]
[--cli-read-timeout <value>]
[--cli-connect-timeout <value>]
[--cli-binary-format <value>]
[--no-cli-pager]
[--cli-auto-prompt]
[--no-cli-auto-prompt]
Параметры
--bucket (строка)
--key (строка)
--sse-customer-algorithm (строка)
--sse-customer-key (строка)
--sse-customer-key-md5 (строка)
--expression (строка)
--expression-type (строка)
Тип предоставленного выражения (например, SQL).
Возможные значения:
SQL
--request-progress (структура)
Указывает, следует ли включить периодическую информацию о прогрессе запроса.
Enabled -> (булево)
Сокращенная синтаксическая запись:
Enabled=boolean
Синтаксис JSON:
{
"Enabled": true|false
}
--input-serialization (структура)
Описание формата данных в объекте, который запрашивается.
CSV -> (структура)
Описание сериализации объекта, закодированного в формате CSV.
FileHeaderInfo -> (строка)
Описание первой строки ввода. Допустимые значения:
-
NONE: Первая строка не является заголовком. -
IGNORE: Первая строка является заголовком, но вы не можете использовать значения заголовка для указания столбца в выражении. Вы можете использовать позицию столбца (например, _1, _2, …) для указания столбца (SELECT s._1 FROM OBJECT s). -
Use: Первая строка является заголовком, и вы можете использовать значение заголовка для идентификации столбца в выражении (SELECT "name" FROM OBJECT).
Comments -> (строка)
Один символ, используемый для указания того, что строка должна быть пропущена, когда символ присутствует в начале этой строки. Вы можете указать любой символ для обозначения строки комментария. Значение по умолчанию — #.
Значение по умолчанию: #
QuoteEscapeCharacter -> (строка)
""" a , b """ интерпретируется как " a , b ".RecordDelimiter -> (строка)
FieldDelimiter -> (строка)
QuoteCharacter -> (строка)
Один символ, используемый для экранирования, когда разделитель поля является частью значения. Например, если значение равно a, b, Amazon S3 заключает это значение поля в кавычки следующим образом: " a , b ".
Тип: Строка
Значение по умолчанию: "
Предки: CSV
AllowQuotedRecordDelimiter -> (булево)
CompressionType -> (строка)
JSON -> (структура)
Указывает JSON в качестве входного формата сериализации объекта.
Type -> (строка)
Parquet -> (структура)
Сокращенная синтаксическая запись:
CSV={FileHeaderInfo=string,Comments=string,QuoteEscapeCharacter=string,RecordDelimiter=string,FieldDelimiter=string,QuoteCharacter=string,AllowQuotedRecordDelimiter=boolean},CompressionType=string,JSON={Type=string},Parquet={}
Синтаксис JSON:
{
"CSV": {
"FileHeaderInfo": "USE"|"IGNORE"|"NONE",
"Comments": "string",
"QuoteEscapeCharacter": "string",
"RecordDelimiter": "string",
"FieldDelimiter": "string",
"QuoteCharacter": "string",
"AllowQuotedRecordDelimiter": true|false
},
"CompressionType": "NONE"|"GZIP"|"BZIP2",
"JSON": {
"Type": "DOCUMENT"|"LINES"
},
"Parquet": {
}
}
--output-serialization (структура)
Описание формата данных, который вы хотите, чтобы Amazon S3 возвращал в ответе.
CSV -> (структура)
Описание сериализации результатов Select в формате CSV.
QuoteFields -> (строка)
Указывает, следует ли использовать кавычки вокруг выходных полей.
-
ALWAYS: Всегда использовать кавычки для выходных полей. -
ASNEEDED: Использовать кавычки для выходных полей при необходимости.
QuoteEscapeCharacter -> (строка)
RecordDelimiter -> (строка)
FieldDelimiter -> (строка)
QuoteCharacter -> (строка)
a, b, Amazon S3 заключает это значение поля в кавычки следующим образом: " a , b ".JSON -> (структура)
Указывает JSON в качестве выходного формата сериализации запроса.
RecordDelimiter -> (строка)
Сокращенная синтаксическая запись:
CSV={QuoteFields=string,QuoteEscapeCharacter=string,RecordDelimiter=string,FieldDelimiter=string,QuoteCharacter=string},JSON={RecordDelimiter=string}
Синтаксис JSON:
{
"CSV": {
"QuoteFields": "ALWAYS"|"ASNEEDED",
"QuoteEscapeCharacter": "string",
"RecordDelimiter": "string",
"FieldDelimiter": "string",
"QuoteCharacter": "string"
},
"JSON": {
"RecordDelimiter": "string"
}
}
--scan-range (структура)
Указывает диапазон байтов объекта, из которого нужно получить записи. Запись обрабатывается, когда ее первый байт содержится в диапазоне. Этот параметр необязателен, но при указании не должен быть пустым. См. RFC 2616, раздел 14.35.1, о том, как указать начало и конец диапазона.
ScanRange может использоваться следующим образом:-
<scanrange><start>50</start><end>100</end></scanrange>- обработать только записи, начинающиеся между байтами 50 и 100 (включительно, считая с нуля) -
<scanrange><start>50</start></scanrange>- обработать только записи, начинающиеся после байта 50 -
<scanrange><end>50</end></scanrange>- обработать только записи в последних 50 байтах файла.
Start -> (длинное целое число)
start, это означает сканирование с этой точки до конца файла. Например, <scanrange><start>50</start></scanrange> означает сканирование с байта 50 до конца файла.End -> (длинное целое число)
<scanrange><end>50</end></scanrange> означает сканирование последних 50 байтов.Сокращенная синтаксическая запись:
Start=long,End=long
Синтаксис JSON:
{
"Start": long,
"End": long
}
--expected-bucket-owner (строка)
403 Forbidden (доступ запрещен).outfile (строка) Имя файла, в котором будут сохранены записи
Глобальные параметры
--debug (булево)
Включить отладку регистрации.
--endpoint-url (строка)
Переопределить URL по умолчанию команды заданным URL.
--no-verify-ssl (булево)
По умолчанию AWS CLI использует SSL при общении с AWS-сервисами. Для каждого SSL-соединения AWS CLI будет проверять сертификаты SSL. Этот параметр переопределяет стандартное поведение проверки SSL-сертификатов.
--no-paginate (булево)
Отключить автоматическую постраничную навигацию. Если автоматическая постраничная навигация отключена, AWS CLI выполнит только один вызов для первой страницы результатов.
--output (строка)
Стиль форматирования вывода команды.
- json
- text
- table
- yaml
- yaml-stream
--query (строка)
Запрос JMESPath для использования при фильтрации данных ответа.
--profile (строка)
Использование определенного профиля из файла учетных данных.
--region (строка)
Используемый регион. Переопределяет настройки конфигурации/среды.
--version (строка)
Отобразить версию этого инструмента.
--color (строка)
Включить/выключить вывод в цвете.
- on
- off
- auto
--no-sign-request (булево)
Не подписывать запросы. Учетные данные не будут загружены, если этот аргумент предоставлен.
--ca-bundle (строка)
Набор сертификатов CA для использования при проверке SSL-сертификатов. Переопределяет настройки конфигурации/среды.
--cli-read-timeout (целое число)
Максимальное время чтения сокета в секундах. Если значение установлено в 0, чтение сокета будет выполняться блокирующим образом без таймаута. Значение по умолчанию — 60 секунд.
--cli-connect-timeout (целое число)
Максимальное время подключения сокета в секундах. Если значение установлено в 0, подключение сокета будет выполняться блокирующим образом без таймаута. Значение по умолчанию — 60 секунд.
--cli-binary-format (строка)
Стиль форматирования, используемый для двоичных блоков. Формат по умолчанию — base64. Формат base64 ожидает, что двоичные блоки будут предоставлены в виде закодированной в base64 строки. Формат raw-in-base64-out сохраняет совместимость с поведением AWS CLI V1, и двоичные значения должны быть переданы буквально. При предоставлении содержимого из файла, соответствующего двоичному блоку, fileb:// всегда будет интерпретироваться как двоичное и будет использовать содержимое файла непосредственно, независимо от настроек cli-binary-format. При использовании file:// содержимое файла должно быть должным образом отформатировано для настроенного cli-binary-format.
- base64
- raw-in-base64-out
--no-cli-pager (булево)
Отключить пейджер cli для вывода.
--cli-auto-prompt (булево)
Автоматически запрашивать параметры ввода CLI.
--no-cli-auto-prompt (булево)
Отключить автоматическое запросов параметров ввода CLI.
Примеры
Примечание
Для использования следующих примеров необходимо установить и настроить AWS CLI. Дополнительную информацию см. в руководстве по началу работы в Руководстве пользователя AWS CLI.
Если не указано иное, все примеры используют правила цитирования, аналогичные Unix. Эти примеры потребуется адаптировать к правилам цитирования вашей оболочки. См. Использование кавычек со строками в Руководстве пользователя AWS CLI.
Для фильтрации содержимого объекта Amazon S3 на основе SQL-запроса
Следующий select-object-content пример фильтрует объект my-data-file.csv с помощью указанного SQL-запроса и отправляет вывод в файл.
aws s3api select-object-content \
--bucket amzn-s3-demo-bucket \
--key my-data-file.csv \
--expression "select * from s3object limit 100" \
--expression-type 'SQL' \
--input-serialization '{"CSV": {}, "CompressionType": "NONE"}' \
--output-serialization '{"CSV": {}}' "output.csv"
Эта команда не выводит ничего на экран.
Вывод
Эта команда не генерирует вывод. Содержимое выбранного объекта записывается в указанный файл outfile.
© Copyright 2025, Amazon Web Services. Created using Sphinx.