【问题标题】:Different S3 Download Behavior Between the Console and CLI控制台和 CLI 之间的不同 S3 下载行为
【发布时间】:2020-02-04 05:24:32
【问题描述】:

我已经设置了一个 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 版本几乎比管理控制台版本大 10KB。

【问题讨论】:

  • 我尝试使用cp 下载文件,一切顺利 - aws s3 cp s3://${MY_BUCKET}/test.txt.gz test.txt.gz
  • @AmitBaranes 感谢您的回复。但是,下载不是问题。问题是gunzip在本地应用后的编码(下载后)。

标签: amazon-web-services amazon-s3 aws-cli


【解决方案1】:

firehose 被设置为压缩消息的内容。但是,cloudwatch 也已经在压缩消息了。

当浏览器从 S3 下载文件时,它会自动解压缩两层压缩中的第一层。因此,第二次解压产生了预期的日志。

CLI 不执行此自动解压缩。因此,解压缩文件仍然会生成一个压缩的二进制文件。第二次解压解决了这个问题。

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多