Различное поведение загрузки S3 между консолью и CLI - PullRequest
1 голос
/ 02 февраля 2020

Я настроил группу журналов cloudwatch для потоковой передачи журналов через kinesis и firehose в корзину s3 в виде файлов gzip.

Все файлы gzip помечены некоторыми метаданными:

Content-Encoding     gzip
Content-Type         application/octet-stream

Когда я загружаю один из файлов прямо из консоли браузера и распаковываю его, я получаю ожидаемое содержимое файла журнала, а именно json строки. Однако, если я использую aws CLI для cp файла локально и разархивирую содержимое, то файл выводится как двоичный файл на терминале.

Что может быть причиной различия в поведении между кнопкой загрузки AWS консоли и командой AWS CLI s3 cp?

Я уже пытался указать различные комбинации флагов командной строки

aws s3 cp --content-encoding gzip --content-type "application/json"
aws s3 cp --content-encoding gzip --content-type "application/octet-stream"
aws s3 cp --content-encoding gzip --content-type "application/octet-stream" --sse-kms-key-id <keyArn>

Но ни один из них не дал положительного результата, который я получил от использования консоли в браузере.

ОБНОВЛЕНИЕ

Версия файла S3 cli почти на 10 КБ больше, чем версия консоли управления.

1 Ответ

1 голос
/ 04 февраля 2020

Пожарный шланг был настроен для сжатия содержимого сообщения. Однако cloudwatch также уже сжимал сообщение.

Когда браузер загружает файл с S3, он автоматически распаковывает первый из двух уровней сжатия. Поэтому вторая декомпрессия привела к ожидаемым журналам.

CLI не выполняет эту автоматическую c декомпрессию. Таким образом, распаковка файла по-прежнему приводит к сжатому двоичному файлу. Вторая декомпрессия решила проблему.

...