S3 表类数据存储服务的 VPC 连接
S3 表类数据存储服务中的所有表均采用 Apache Iceberg 格式,并由两种类型的 S3 对象组成。这两种类型的对象是存储数据的数据文件,以及跟踪有关不同时间点的数据文件信息的元数据文件。所有表存储桶、命名空间和表操作(例如 CreateNamespace
、CreateTable
等)均通过 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 端点 IDvpce-1a2b3c4d
,生成的 DNS 名称将类似于vpce-1a2b3c4d-5e6f.s3tables.us-east-1.vpce.amazonaws.com
-
可用区 DNS 名称采用以下格式:
VPCendpointID-AvailabilityZone.s3tables.AWSregion.vpce.amazonaws.com
。例如,对于 VPC 端点 IDvpce-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 —regionus-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 --regionus-east-1
使用查询引擎时配置 VPC 网络
使用查询引擎时,请使用以下步骤配置 VPC 网络。
-
要开始使用,您可以创建或更新 VPC。有关更多信息,请参阅创建 VPC。
-
对于路由到 S3 表类数据存储服务的表和表存储桶级操作,请创建一个新的接口端点。有关更多信息,请参阅使用接口 VPC 端点访问 Amazon 服务。
-
对于路由到 Amazon S3 的所有对象级操作,请创建网关端点或接口端点。有关网关端点的更多信息,请参阅 Create a gateway endpoint。
-
接下来,配置数据资源并启动 Amazon EMR 集群。有关更多信息,请参阅 Getting started with Amazon EMR。
-
然后,可以通过从 VPC 端点中选择 DNS 名称,来提交带有额外配置的 Spark 应用程序。例如
spark.sql.catalog.ice_catalog.s3tables.endpoint
和https://interface-endpoint.s3tables.
。有关更多信息,请参阅 Submit work to your Amazon EMR cluster。us-east-1
.vpce.amazonaws.com
在 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
/*" ] }] }