使用 S3 元数据加快数据发现速度 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 S3 元数据加快数据发现速度

Amazon S3 元数据通过自动捕获通用存储桶中对象的元数据,并将其存储在您可以查询的只读、完全托管式 Apache Iceberg 表中,从而加快数据发现速度。这些只读表称为元数据表。在通用存储桶中添加、更新或移除对象时,S3 元数据会自动刷新相应的元数据表,以反映最新的更改。

默认情况下,S3 元数据提供三种类型的元数据:

  • 系统定义的元数据,例如对象的创建时间和存储类

  • 自定义元数据,例如标签和对象上传期间包含的用户定义的元数据

  • 事件元数据,例如何时更新或删除对象,以及发出请求的 Amazon Web Services 账户

借助 S3 元数据,您可以轻松查找、存储和查询 S3 对象的元数据,这样您就可以快速准备数据,以用于业务分析、内容检索、人工智能和机器学习(AI/ML)模型训练等。

对于每个通用存储桶,可以创建一个元数据表配置,其中包含两个互补的元数据表:

  • 日记表:默认情况下,元数据表配置包含一个日记表,用于捕获存储桶中的对象所发生的事件。日记表近乎实时地记录对数据所做的更改,有助于您识别上传到存储桶的新数据、跟踪最近删除的对象、监控生命周期转换等。日记表记录新对象以及对于对象及其元数据的更新(那些需要 PUTDELETE 操作的更新)。

    日记表仅捕获在您创建元数据表配置后发生的更改事件(例如上传、更新和删除)的元数据。由于此表是可查询的,因此可以通过简单的 SQL 查询来审计对存储桶的更改。

    每个元数据表配置都需要日记表。(在 S3 元数据的初始版本中,日记表称为“元数据表”。)

    有关在日记表中存储哪些数据的更多信息,请参阅 S3 元数据日记表架构

    为了有助于最大限度地降低存储成本,可以选择启用日记表记录过期。有关更多信息,请参阅 使日记表记录过期

  • 实时清单表:(可选)可以将实时清单表添加到元数据表配置中。实时清单表提供存储桶中所有对象及其版本的简单、可查询的清单,以便您可以确定数据的最新状态。

    可以使用实时清单表,通过识别要为各种工作负载处理的对象,来简化和加快业务工作流程和大数据作业。例如,可以查询实时清单表来查找存储在特定存储类别中的所有对象、带有特定标签的所有对象,以及未通过使用 Amazon Key Management Service(Amazon KMS)密钥的服务器端加密(SSE-KMS)进行加密的所有对象等。

    当您为元数据表配置启用实时清单表时,该表将经历一个称为回填的过程,在这一过程中,Amazon S3 扫描通用存储桶,以检索存储桶中存在的所有对象的初始元数据。根据存储桶中的对象数量,此过程可能需要若干分钟(至少 15 分钟)到几小时。完成回填过程后,实时清单表的状态将从正在回填更改为活跃。完成回填后,对于对象的更新通常会在一小时内反映在实时清单表中。

    您需要为回填清单表付费。如果通用存储桶包含超过十亿个对象,则还需要为实时清单表支付每月费用。有关更多信息,请参阅 Amazon S3 定价

    有关在实时清单表中存储哪些数据的更多信息,请参阅 S3 元数据实时清单表架构

元数据表存储在 Amazon 托管式 S3 表存储桶中,该存储桶提供针对表格数据进行优化的存储。要查询元数据,可以将表存储桶与 Amazon SageMaker 智能湖仓集成。这种集成使用 Amazon Glue Data Catalog 和 Amazon Lake Formation,支持 Amazon 分析服务自动发现和访问表数据。

在将表存储桶与 Amazon Glue Data Catalog 集成后,可以使用 Amazon 分析服务(如 Amazon Athena、Amazon EMR 和 Amazon Redshift)直接查询元数据表。还可以使用 Amazon QuickSight 通过查询数据创建交互式控制面板。有关将 Amazon 托管式 S3 表存储桶与 Amazon SageMaker 智能湖仓集成的更多信息,请参阅将 Amazon S3 表类数据存储服务与 Amazon 分析服务集成

还可以使用 Amazon Glue Iceberg 端点、Amazon S3 表类数据存储服务 Iceberg REST 端点或适用于 Apache Iceberg 的 Amazon S3 表类数据存储服务目录客户端目录,通过 Apache Spark、Apache Trino 和支持 Apache Iceberg 格式的任何其它应用程序来查询元数据表。有关访问元数据表的更多信息,请参阅访问表数据

有关 S3 元数据定价,请参阅 Amazon S3 定价

元数据表的工作原理

元数据表由 Amazon S3 管理,而不能由 Amazon S3 本身以外的任何 IAM 主体进行修改。但是,可以删除元数据表。因此,元数据表是只读的,这有助于确保它们正确地反映通用存储桶的内容。

要生成对象元数据并将其存储在 Amazon 托管式元数据表中,需要为通用存储桶创建元数据表配置。Amazon S3 设计为持续更新元数据表,以反映对数据的最新更改,只要配置在通用存储桶上处于活动状态即可。

在创建元数据表配置之前,确保您拥有创建和管理元数据表所必需的 Amazon Identity and Access Management(IAM)权限。有关更多信息,请参阅 为配置元数据表设置权限

元数据表存储、组织和加密

创建元数据表配置时,元数据表存储在 Amazon 托管式表存储桶中。您的账户和同一区域中的所有元数据表配置都存储在单个 Amazon 托管式表存储桶中。这些 Amazon 托管式表存储桶命名为 aws-s3,并具有以下 Amazon 资源名称(ARN)格式:

arn:aws:s3tables:region:account_id:bucket/aws-s3

例如,如果账户 ID 为 123456789012,而通用存储桶位于美国东部(弗吉尼亚州北部)(us-east-1),则 Amazon 托管式表存储桶也将在美国东部(弗吉尼亚州北部)(us-east-1) 创建并具有以下 ARN:

arn:aws:s3tables:us-east-1:123456789012:bucket/aws-s3

默认情况下,Amazon 托管式表存储桶通过使用 Amazon S3 托管式密钥的服务器端加密(SSE-S3)进行加密。创建第一个元数据配置后,可以将 Amazon 托管式表存储桶的默认加密设置设为使用具有 Amazon Key Management Service(Amazon KMS)密钥的服务器端加密(SSE-KMS)。有关更多信息,请参阅 Encryption for Amazon managed table buckets在表存储桶中指定具有 Amazon KMS 密钥的服务器端加密(SSE-KMS)

在 Amazon 托管式表存储桶中,配置的元数据表通常存储在命名空间中,命名格式如下:

b_general-purpose-bucket-name

注意
  • 如果通用存储桶名称包含任何句点,则这些句点将在命名空间名称中转换为下划线 (_)。

  • 如果通用存储桶是在 2018 年 3 月 1 日之前创建的,则其名称可能包含大写字母和下划线,长度也可能不超过 255 个字符。如果存储桶名称具有这些特征,则元数据表命名空间将具有不同的格式。通用存储桶名称将以 b_ 为前缀,截断为 63 个字符,全部转换为小写,并以哈希作为后缀。

元数据表具有以下 Amazon 资源名称(ARN)格式:

arn:aws:s3tables:region-code:account-id:bucket/aws-s3/table/metadata_table_name

日记表具有名称 journal,而实时清单表具有名称 inventory

创建元数据表配置时,可以选择通过使用 Amazon Key Management Service(Amazon KMS)密钥的服务器端加密(SSE-KMS)来加密 Amazon 托管式元数据表。如果您选择使用 SSE-KMS,则必须提供与通用存储桶位于同一区域的客户自主管理型 KMS 密钥。只能在创建表的过程中为表设置加密类型。创建 Amazon 托管式表后,无法更改其加密设置。要为元数据表指定 SSE-KMS,您必须具有特定的权限。有关更多信息,请参阅 SSE-KMS 的权限

元数据表的加密设置优先于默认的存储桶级加密设置。如果不为表指定加密,它将继承存储桶中的默认加密设置。

Amazon 托管式表存储桶不计入 S3 表类数据存储服务配额。有关使用 Amazon 托管式表存储桶和 Amazon 托管式表的更多信息,请参阅 Working with Amazon managed table buckets

要监控对元数据表配置的更新,可以使用 Amazon CloudTrail。有关更多信息,请参阅 CloudTrail 日志记录跟踪的 Amazon S3 存储桶级操作

元数据表维护和记录过期

为了使 元数据表保持最佳性能,Amazon S3 会定期对表执行维护活动,例如压缩和未引用文件移除。这些维护活动既有助于最大限度地降低存储元数据表的成本,又有助于优化查询性能。这种表维护是自动进行的,无需您选择加入或持续管理。

注意
  • 您无法控制日记表或清单表快照的过期。对于每个表,Amazon S3 存储至少 1 个快照,最长可存储 24 小时。

  • 为了有助于最大限度地降低成本,可以配置日记表记录过期。默认情况下,日记表记录不会过期,并且日记表记录必须保留至少 7 天。有关更多信息,请参阅 使日记表记录过期