Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

从对象中选择内容

利用 Amazon S3 Select,您可以使用简单的结构化查询语言 (SQL) 语句筛选 Amazon S3 对象的内容,以便仅检索所需的部分数据。通过使用 Amazon S3 Select 筛选此数据,您可以减少 Amazon S3 传输的数据量,这将减少检索此数据所需的成本和延迟。

Amazon S3 Select 适用于以 CSV、JSON 或 Apache Parquet 格式存储的对象。它还使用通过 GZIP 或 BZIP2 压缩的对象(仅对于 CSV 和 JSON 对象)和服务器端加密的对象。可以将结果的格式指定为 CSV 或 JSON,并且可以确定结果中记录的分隔方式。

可以在请求中将 SQL 表达式传递给 Amazon S3。Amazon S3 Select 支持一部分 SQL。有关 Amazon S3 Select 支持的 SQL 元素的更多信息,请参阅适用于 Amazon S3 Select 和 Glacier Select 的 SQL 参考

您可以使用 AWS 开发工具包、SELECT Object 内容 REST API、AWS Command Line Interface (AWS CLI) 或 Amazon S3 控制台执行 SQL 查询。Amazon S3 控制台将返回的数据量限定为 40 MB。要检索更多数据,请使用 AWS CLI 或 API。

要求和限制

以下是使用 Amazon S3 Select 的要求:

  • 您必须拥有所查询的对象的 s3:GetObject 权限。

  • 如果您查询的对象已使用客户提供的加密密钥 (SSE-C) 进行加密,则必须使用 https,并且您必须在请求中提供加密密钥。

使用 Amazon S3 Select 时存在以下限制:

  • SQL 表达式的最大长度为 256 KB。

  • 结果中记录的最大长度为 1 MB。

在将 Amazon S3 Select 用于 Parquet 对象时,其他限制适用:

  • Amazon S3 Select 仅支持使用 GZIP 或 Snappy 的列式压缩。Amazon S3 Select 对于 Parquet 对象不支持整个对象压缩。

  • Amazon S3 Select 不支持 Parquet 输出。您必须将输出格式指定为 CSV 或 JSON。

  • 最大未压缩块大小为 256 MB。

  • 最大列数为 100。

  • 您必须使用在对象的架构中指定的数据类型。

  • 选择重复字段将只返回最后一个值。

构建请求

在构建请求时,您提供通过使用 InputSerialization 对象查询的对象的详细信息。您提供要使用 OutputSerialization 对象返回结果的方式的详细信息。您还包含 Amazon S3 将用于筛选请求的 SQL 表达式。

有关构建 Amazon S3 Select 请求的更多信息,请参阅 Amazon Simple Storage Service API Reference 中的 SELECT Object 内容。您也可以参阅以下部分中的某个开发工具包代码示例。

错误

如果在尝试执行查询时遇到问题,Amazon S3 Select 将返回错误代码和关联的错误消息。有关错误代码和描述的列表,请参阅 Amazon Simple Storage Service API ReferenceSELECT 对象内容 页面的特殊错误部分。

相关资源