S3 on Outposts 的 AWS PrivateLink - Amazon S3 on Outposts

S3 on Outposts 的 AWS PrivateLink

S3 on Outposts 支持 AWS PrivateLink,后者通过虚拟专用网络中的私有端点,提供对 S3 on Outposts 存储的直接管理访问。这样,您就可以使用虚拟私有云(VPC)中的私有 IP 地址,简化内部网络架构并对 Outposts 对象存储执行管理操作。使用 AWS PrivateLink,无需使用公有 IP 地址或代理服务器。

通过将 AWS PrivateLink 用于 Amazon S3 on Outposts,您可以在虚拟私有云(VPC)中预调配接口 VPC 端点,以访问 S3 on Outposts 桶管理端点管理 API。通过虚拟专用网络(VPN)或 AWS Direct Connect,可以直接从部署在 VPC 中或本地的应用程序访问接口 VPC 端点。您可以通过 AWS PrivateLink 访问桶和端点管理 API。AWS PrivateLink 不支持数据传输 API 操作,例如 GET、PUT 和类似的 API。这些操作已经通过 S3 on Outposts 端点和接入点配置私密传输。有关更多信息,请参阅 S3 on Outposts 的网络

接口端点由一个或多个弹性网络接口 (ENI) 代表,这些接口是从 VPC 中的子网分配的私有 IP 地址。向 S3 on Outposts 的接口端点发出的请求将自动路由到 AWS 网络上的 S3 on Outposts 桶和端点管理 API。您还可以通过 AWS Direct Connect 或 AWS Virtual Private Network (AWS VPN) 从本地部署应用程序访问 VPC 中的接口端点。有关如何将 VPC 与本地网络连接的更多信息,请参阅 AWS Direct Connect 用户指南AWS Site-to-Site VPN 用户指南

接口端点通过 AWS 网络和通过 AWS PrivateLink 路由对 S3 on Outposts 桶和端点管理 API 的请求,如下图所示。

数据流图显示了接口端点如何路由对 S3 on Outposts 存储桶和端点管理 API 的请求。

有关接口端点的一般信息,请参阅 AWS PrivateLink 指南中的接口 VPC 端点 (AWS PrivateLink)

当您通过 AWS PrivateLink 访问 S3 on Outposts 桶和端点管理 API 时,将适用 VPC 限制。有关更多信息,请参阅 AWS PrivateLink 指南中的接口端点属性和限制以及 AWS PrivateLink 配额

此外,AWS PrivateLink 不支持以下内容:

访问 S3 on Outposts 接口端点

要使用 AWS PrivateLink 访问 S3 on Outposts 桶和端点管理 API,您必须更新应用程序以使用特定于端点的 DNS 名称。创建接口端点时,AWS PrivateLink 会生成两种特定于端点的 S3 on Outposts 名称:区域可用区

  • 区域 DNS 名称 – 包括唯一的 VPC 端点 ID、服务标识符、AWS 区域和 vpce.amazonaws.com,例如 vpce-1a2b3c4d-5e6f.s3-outposts.us-east-1.vpce.amazonaws.com

  • 可用区 DNS 名称 – 包括唯一的 VPC 端点 ID、可用区、服务标识符、AWS 区域和 vpce.amazonaws.com,例如 vpce-1a2b3c4d-5e6f-us-east-1a.s3-outposts.us-east-1.vpce.amazonaws.com。如果您的架构隔离了可用区,则可以使用此选项。例如,您可以将可用区 DNS 名称用于故障控制或降低区域数据传输成本。

重要

S3 on Outposts 接口端点是从公有 DNS 域解析出来的。S3 on Outposts 不支持私有 DNS。将 --endpoint-url 参数用于所有桶和端点管理 API。

使用 --region--endpoint-url 参数,通过 S3 on Outposts 接口端点访问桶管理和端点管理 API。

例 :使用端点 URL 列出具有 S3 控制 API 的桶

在以下示例中,将区域 us-east-1、VPC 端点 URL vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com 和账户 ID 111122223333 替换为相应的信息。

aws s3control list-regional-buckets --region us-east-1 --endpoint-url https://vpce-1a2b3c4d-5e6f.s3-outposts.us-east-1.vpce.amazonaws.com --account-id 111122223333

将 SDK 更新到最新版本,然后将客户端配置为使用端点 URL 访问 S3 on Outposts 接口端点的 S3 控制 API。

SDK for Python (Boto3)
例 :使用端点 URL 访问 S3 控制 API

在以下示例中,将区域 us-east-1 和 VPC 端点 URL vpce-1a2b3c4d-5e6f.s3-outposts.us-east-1.vpce.amazonaws.com 替换为相应的信息。

control_client = session.client( service_name='s3control', region_name='us-east-1', endpoint_url='https://vpce-1a2b3c4d-5e6f.s3-outposts.us-east-1.vpce.amazonaws.com' )

有关更多信息,请参阅《Boto3 开发人员指南》中的适用于 Amazon S3 的 AWS PrivateLink

SDK for Java 2.x
例 :使用端点 URL 访问 S3 控制 API

在以下示例中,将 VPC 端点 URL vpce-1a2b3c4d-5e6f.s3-outposts.us-east-1.vpce.amazonaws.com 和区域 Region.US_EAST_1 替换为相应的信息。

// control client Region region = Region.US_EAST_1; s3ControlClient = S3ControlClient.builder().region(region) .endpointOverride(URI.create("https://vpce-1a2b3c4d-5e6f.s3-outposts.us-east-1.vpce.amazonaws.com")) .build()

有关更多信息,请参阅《AWS SDK for Java API 参考》中的 S3ControlClient

更新本地 DNS 配置

使用特定于端点的 DNS 名称访问适用于 S3 on Outposts 桶管理和端点管理 API 的接口端点时,您不必更新本地 DNS 解析程序。您可以使用来自公有 S3 on Outposts DNS 域的接口端点的私有 IP 地址解析特定于端点的 DNS 名称。

为 S3 on Outposts 创建 VPC 端点

要为 S3 on Outposts 创建 VPC 接口端点,请参阅《AWS PrivateLink 指南》中的创建 VPC 端点

为 S3 on Outposts 创建桶策略和 VPC 端点策略

您可以向 VPC 端点附加用于控制对 S3 on Outposts 的访问的端点策略。您还可以在 S3 on Outposts 桶策略中使用 aws:sourceVpce 条件来限制从特定 VPC 端点访问特定的桶。使用 VPC 端点策略,您可以控制对 S3 on Outposts 桶管理 API 和端点管理 API 的访问。使用桶策略,您可以控制对 S3 on Outposts 桶管理 API 的访问。但是,您无法使用 aws:sourceVpce 管理对 S3 on Outposts 的对象操作的访问。

S3 on Outposts 的访问策略指定以下信息:

  • 允许或拒绝其操作的 AWS Identity and Access Management (IAM) 主体。

  • 允许或拒绝的 S3 控制操作。

  • 允许或拒绝其操作的 S3 on Outposts 资源。

以下示例显示了限制对桶或端点的访问的策略。有关 VPC 连接的更多信息,请参阅 AWS 白皮书 Amazon Virtual Private Cloud 连接性选项中的 Network-to-VPC connectivity options(从网络到 VPC 的连接性选项)。

重要
  • 当您如本节所述对 VPC 端点应用示例策略时,您可能会无意中阻止对桶的访问权限。桶权限会限制桶访问源自 VPC 端点的连接,而这可能会阻止到桶的所有连接。有关如何修复此问题的信息,请参阅我的桶策略有错误的 VPC 或 VPC 端点 ID。AWS Support 知识中心内的如何修复策略才能访问桶?

  • 在使用以下示例桶策略之前,请将 VPC 端点 ID 替换为适合您的使用案例的值。否则,您将无法访问您的桶。

  • 如果您的策略仅允许从特定 VPC 端点访问 S3 on Outposts 桶,它将禁用通过控制台访问该桶,因为控制台请求不是源自指定的 VPC 端点。

您可以创建一个端点策略以仅允许访问特定的 S3 on Outposts 桶。以下策略将 GetBucketPolicy 操作的访问权限仅限于 example-outpost-bucket。要使用此策略,请将示例值替换为您自己的值。

{ "Version": "2012-10-17", "Id": "Policy1415115909151", "Statement": [ { "Sid": "Access-to-specific-bucket-only", "Principal": {"AWS":"111122223333"}, "Action": "s3-outposts:GetBucketPolicy", "Effect": "Allow", "Resource": "arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket" } ] }

以下 S3 on Outposts 桶策略拒绝通过 vpce-1a2b3c4d VPC 端点访问 example-outpost-bucket 桶上的 GetBucketPolicy。

aws:sourceVpce 条件指定端点,不需要 VPC 端点资源的 Amazon 资源名称 (ARN),只需要端点 ID。要使用此策略,请将示例值替换为您自己的值。

{ "Version": "2012-10-17", "Id": "Policy1415115909152", "Statement": [ { "Sid": "Deny-access-to-specific-VPCE", "Principal": {"AWS":"111122223333"}, "Action": "s3-outposts:GetBucketPolicy", "Effect": "Deny", "Resource": "arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket", "Condition": { "StringEquals": {"aws:sourceVpce": "vpce-1a2b3c4d"} } } ] }