如何使用 CLI 而不是 S3 Select 查询 S3 对象?

How To Query S3 Objects with CLI instead of S3 Select?

我需要一个 CLI 替代方案,类似于 Dashboard link 中的示例,但使用 Json 作为输入和输出序列化类型。

我已经尝试 运行 在 AWS 云 shell 中对 Json 进行以下操作以在终端上打印输出,但最终出现错误。

aws s3api select-object-content --bucket "my-bucket" --key jobs/test.json --expression "SELECT * FROM s3object s LIMIT 5" --expression-type 'SQL' --input-serialization "{"JSON":{"Type": "DOCUMENT"},"CompressionType": "None"}" --output-serialization "{"JSON": {Type: 'DOCUMENT'}}" /dev/stdout

错误: 解析参数“--input-serialization”时出错:无效 JSON:期望 属性 名称用双引号引起来:第 1 行第 2 列(字符 1) JSON 收到:{JSON:{Type: DOCUMENT},CompressionType: None}

我看到很多 csv 格式的选项,但找不到 Json 的选项。

提前谢谢你。

注意:运行 在 AWS 云上shell 基本上是在 Linux.

仅供参考: 以下是我在这里尝试实现的输入和输出序列化的仪表板替代方案。

如果您使用 linux/macOS 终端,请使用单引号 ' 将整个 JSON 字符串括起来。在 powershell 中,使用 \ 转义双引号。

像这样-

aws s3api select-object-content --bucket "my-bucket" --key jobs/test.json --expression "SELECT * FROM s3object s LIMIT 5" --expression-type 'SQL' --input-serialization '"{"JSON":{"Type": "DOCUMENT"},"CompressionType": "None"}"' --output-serialization '"{"JSON": {Type: "DOCUMENT"}}"' /dev/stdout

注意:如果您的 JSON 字符串中有任何单引号,需要使用反斜杠进行转义 \.