S3 表类数据存储服务的 VPC 连接 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

S3 表类数据存储服务的 VPC 连接

S3 表类数据存储服务中的所有表均采用 Apache Iceberg 格式,并由两种类型的 S3 对象组成。这两种类型的对象是存储数据的数据文件,以及跟踪有关不同时间点的数据文件信息的元数据文件。所有表存储桶、命名空间和表操作(例如 CreateNamespaceCreateTable 等)均通过 S3 表类数据存储服务端点 (s3tables.region.amazonaws.com) 路由,而读取或写入数据和元数据文件的所有对象级操作都将继续通过 S3 服务端点 (s3.region.amazonaws.com) 路由。

为访问 S3 表类数据存储服务,Amazon S3 通过使用 Amazon PrivateLink 支持两种类型的 VPC 端点:网关端点和接口端点。网关端点是您在路由表中指定的网关,用于通过 Amazon 网络从 VPC 访问 S3。接口端点通过私有 IP 地址,使用 VPC 对等连接或 Amazon Transit Gateway 将请求从您的 VPC 内、本地或其它 Amazon Web Services 区域中的 VPC 路由到 Amazon S3,从而扩展网关端点的功能。

要从 VPC 访问 S3 表类数据存储服务,我们建议创建两个 VPC 端点(一个用于 S3,另一个用于 S3 表类数据存储服务)。可以创建网关或接口端点来将文件(对象)级操作路由到 S3,并创建接口端点来将存储桶和表级操作路由到 S3 表。可以使用 S3 为文件级请求创建和使用 VPC 端点。有关更多信息,请参阅《Amazon PrivateLink 用户指南》中的 Gateway endpoints

要了解有关使用 Amazon PrivateLink 为 S3 表类数据存储服务创建和使用端点的更多信息,请参阅以下主题。要创建 VPC 接口端点,请参阅《Amazon PrivateLink 指南》中的创建 VPC 端点

为 S3 表类数据存储服务创建 VPC 端点

当您创建 VPC 端点时,S3 表类数据存储服务会生成两种类型的特定于端点的 DNS 名称:区域和可用区。

  • 区域 DNS 名称采用以下格式:VPCendpointID.s3tables.AWSregion.vpce.amazonaws.com。例如,对于 VPC 端点 ID vpce-1a2b3c4d,生成的 DNS 名称将类似于 vpce-1a2b3c4d-5e6f.s3tables.us-east-1.vpce.amazonaws.com

  • 可用区 DNS 名称采用以下格式:VPCendpointID-AvailabilityZone.s3tables.AWSregion.vpce.amazonaws.com。例如,对于 VPC 端点 ID vpce-1a2b3c4d-5e6f.,生成的 DNS 名称将类似于 vpce-1a2b3c4d-5e6f-us-east-1a.s3tables.us-east-1.vpce.amazonaws.com

    可用区 DNS 名称包括您的可用区。如果您的架构隔离了可用区,则可以使用可用区 DNS 名称。可以从 S3 公有 DNS 域解析端点特定的 S3 DNS 名称。

还可以使用私有 DNS 选项来简化通过 VPC 端点路由 S3 流量的过程,并协助您充分利用应用程序可用的最低成本网络路径。私有 DNS 将 S3 表类数据存储服务的公有端点(例如 s3tables.region.amazonaws.com)映射到 VPC 中的私有 IP。可以使用私有 DNS 选项来路由区域 S3 流量,而无需更新 S3 客户端以使用接口端点的端点特定的 DNS 名称。

注意

适用于 Amazon S3 的 Amazon PrivateLink 不支持使用 Amazon S3 双堆栈端点。有关更多信息,请参阅《Amazon S3 API 参考》中的 Using Amazon S3 dual-stack endpoints

使用 Amazon CLI 通过端点访问表存储桶和表

可以使用 Amazon Command Line Interface(Amazon CLI)通过接口端点访问表存储桶和表。使用 Amazon CLI,aws s3 命令通过 Amazon S3 端点路由流量。aws s3tables Amazon CLI 命令使用 Amazon S3 表类数据存储服务端点。

s3tables VPC 端点的示例为 vpce-0123456afghjipljw-nmopsqea.s3tables.region.vpce.amazonaws.com

s3tables VPC 端点不包含存储桶名称。可以使用 aws s3tables Amazon CLI 命令访问 s3tables VPC 端点。

s3 VPC 端点的示例为 amzn-s3-demo-bucket.vpce-0123456afghjipljw-nmopsqea.s3.region.vpce.amazonaws.com

可以使用 aws s3 Amazon CLI 命令访问 s3 VPC 端点。

要使用 Amazon CLI 通过接口端点访问表存储桶和表,请使用 -region--endpoint-url 参数。要执行表存储桶和表级操作,请使用 S3 表类数据存储服务端点 URL。要执行对象级操作,请使用 Amazon S3 端点 URL。

在以下示例中,请将用户输入占位符 替换为您自己的信息。

示例 1:使用端点 URL 列出账户中的表存储桶

aws s3tables list-table-buckets --endpoint https://vpce-0123456afghjipljb-aac.s3tables.us-east-1.vpce.amazonaws.com —region us-east-1

示例 2:使用端点 URL 列出存储桶中的表

aws s3tables list-tables --table-bucket-arn arn:aws:s3tables:us-east-1:123456789301:bucket/amzn-s3-demo-bucket --endpoint https://vpce-0123456afghjipljb-aac.s3tables.us-east-1.vpce.amazonaws.com --region us-east-1

使用查询引擎时配置 VPC 网络

使用查询引擎时,请使用以下步骤配置 VPC 网络。

  1. 要开始使用,您可以创建或更新 VPC。有关更多信息,请参阅创建 VPC

  2. 对于路由到 S3 表类数据存储服务的表和表存储桶级操作,请创建一个新的接口端点。有关更多信息,请参阅使用接口 VPC 端点访问 Amazon 服务

  3. 对于路由到 Amazon S3 的所有对象级操作,请创建网关端点或接口端点。有关网关端点的更多信息,请参阅 Create a gateway endpoint

  4. 接下来,配置数据资源并启动 Amazon EMR 集群。有关更多信息,请参阅 Getting started with Amazon EMR

  5. 然后,可以通过从 VPC 端点中选择 DNS 名称,来提交带有额外配置的 Spark 应用程序。例如 spark.sql.catalog.ice_catalog.s3tables.endpointhttps://interface-endpoint.s3tables.us-east-1.vpce.amazonaws.com。有关更多信息,请参阅 Submit work to your Amazon EMR cluster

在 VPC 网络中限制对 S3 表类数据存储服务的访问权限

与基于资源的策略类似,可以向 VPC 端点附加端点策略,来控制对表和表存储桶的访问权限。在以下示例中,接口端点策略限制为仅可访问特定的表存储桶。

{ "Version": "2012-10-17", "Id": "Policy141511512309", "Statement": [{ "Sid": "Access-to-specific-bucket-only", "Principal": "*", "Action": "s3tables:*", "Effect": "Allow", "Resource": [ "arn:aws:s3tables:region:account_id:bucket/amzn-s3-demo-bucket", "arn:aws:s3tables:region:account_id:bucket/amzn-s3-demo-bucket/*" ] }] }