适用于 Amazon S3 的网关端点 - Amazon Virtual Private Cloud

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

适用于 Amazon S3 的网关端点

您可以使用网关终端节点从自己的VPC网关VPC终端节点访问 Amazon S3。创建网关终端节点后,您可以将其添加为路由表中的目标,用于接收从您VPC到 Amazon S3 的流量。

使用网关端点不会发生任何额外费用。

Amazon S3 同时支持网关端点和接口端点。使用网关终端节点,您可以从您的访问Amazon S3VPC,无需互联网网关或NAT设备VPC,也无需支付额外费用。但是,网关终端节点不允许从本地网络、其他 AWS 区域的对VPCs等设备或通过传输网关进行访问。对于这些场景,您必须使用接口端点,后者需要额外付费。有关更多信息,请参阅 Amazon S3 用户指南中的 Amazon S 3 VPC 终端节点类型

注意事项

  • 网关端点仅在您创建该端点所在的区域可用。请务必在您的 S3 存储桶所在的区域内创建网关端点。

  • 如果您使用的是 Amazon DNS 服务器,则必须同时启用DNS主机名和DNS解析。VPC如果您使用的是自己的DNS服务器,请确保向 Amazon S3 发出的请求正确解析为由维护的 IP 地址 AWS。

  • 对于通过网关端点访问 Amazon S3 的实例,安全组的出站规则必须允许进出 Amazon S3 的流量。您可以在安全组规则中引用 Amazon S3 的前缀列表的 ID。

  • 通过网ACL关终端节点访问 Amazon S3 的实例的子网网络必须允许进出 Amazon S3 的流量。您不能在网络ACL规则中引用前缀列表,但可以从 Amazon S3 的前缀列表中获取 Amazon S3 的 IP 地址范围。

  • 检查您使用的是否需要访问 S3 存储桶。 AWS 服务 例如,某项服务可能需要访问包含日志文件的存储桶,或者可能需要您将驱动程序或代理下载到您的EC2实例。如果是,请确保您的终端节点策略允许 AWS 服务 或资源使用s3:GetObject操作访问这些存储桶。

  • 对于通过VPC终端节点向 Amazon S3 发出的请求,您不能在身份策略或存储桶策略中使用该aws:SourceIp条件。改为使用 aws:VpcSourceIp 条件。或者,您可以使用路由表来控制哪些EC2实例可以通过VPC终端节点访问 Amazon S3。

  • 网关端点仅支持IPv4流量。

  • Amazon S3 收到的来自受影响子网中实例的源IPv4地址从公有IPv4地址更改为您的VPC私有IPv4地址。端点交换网络路由,断开已打开的TCP连接。之前使用公共IPv4地址的连接不会恢复。建议您在创建或修改端点时不要运行任何重要任务;或进行测试以确保您的软件在连接中断后可自动重新连接到 Amazon S3。

  • 端点连接无法扩展到外部VPC。您的连接、对等VPN连接、VPC传输网关或 AWS Direct Connect 连接另一端的资源VPC不能使用网关终端节点与 Amazon S3 通信。

  • 您的账户的默认配额为每个区域 20 个网关端点,该配额可调整。每个网关终端节点也限制为 255 个VPC。

私人 DNS

在为 Amazon S3 创建网关终端节点和接口终端节点时,您可以配置私DNS有以优化成本。

Route 53 Resolver

Amazon 为您提供了一个名为 R oute 53 Resolver VPC 的DNS服务器。Route 53 解析器会自动解析私有托管区域中的本地VPC域名和记录。但是,你不能从外部使用 Route 53 Resolver。VPCRoute 53 提供解析器端点和解析器规则,因此您可以从外部使用 Route 53 解析器。VPC入站解析器端点将来自本地网络的DNS查询转发到 Route 53 解析器。出站解析器端点将来自 Route 53 解析器的DNS查询转发到本地网络。

当您将 Amazon S3 的接口终端节点配置为DNS仅对入站解析器终端节点使用私有时,我们会创建一个入站解析器终端节点。入站解析器终端节点将本地对 Amazon S3 的DNS查询解析到接口终端节点的私有 IP 地址。我们还将 ALIAS Route 53 解析器的记录添加到 Amazon S3 的公共托管区域,以便您的DNS查询解VPC析到 Amazon S3 公有 IP 地址,该地址将流量路由到网关终端节点。

私人 DNS

如果您为 Amazon S3 DNS 的接口终端节点配置私有,但没有DNS仅为入站 Resolver 终端节点配置私有,则来自本地网络和您的本地网络的请求都将VPC使用该接口终端节点访问 Amazon S3。因此,您需要付费使用接口终端节点来处理来自的流量VPC,而不是使用网关终端节点,无需支付额外费用。

使用两种端点类型的 Amazon S3 请求路由。
DNS仅限入站 Resolver 终端节点的私有

如果您DNS仅为入站 Resolver 终端节点配置私有,则来自本地网络的请求将使用接口终端节点访问 Amazon S3,而您的请求则VPC使用网关终端节点访问 Amazon S3。因此,您可以优化成本,因为您只需为无法使用网关端点的流量,付费使用接口端点。

使用私有终端节点DNS和入站解析器终端节点的 Amazon S3 请求路由。
配置私有 DNS

您可以在创建 Amazon S3 接口终端节点时或在创建接口终端节点之后为其配置私DNS有配置。有关更多信息,请参阅 创建 VPC 终端节点(创建期间配置)或 启用私有DNS名称(创建后配置)。

创建网关端点

使用以下过程创建连接到 Amazon S3 的网关端点。

使用控制台创建网关端点
  1. 打开 Amazon VPC 控制台,网址为https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择端点

  3. 选择 创建端点

  4. 对于 Service category(服务类别),选择 AWS 服务

  5. 对于服务,添加过滤器 “类型 = 网关”,然后选择 com. amazonaws。 region.s3。

  6. 对于 VPC,选择要VPC在其中创建端点的。

  7. 对于 Route tables(路由表),选择端点要使用的路由表。我们将自动添加一个路由,将以服务为目的地的流量指向端点网络接口。

  8. 对于策略,选择完全访问权限以允许所有委托人通过VPC端点对所有资源进行所有操作。否则,请选择自定义以附加VPC终端节点策略,该策略控制委托人通过终VPC端节点对资源执行操作所拥有的权限。

  9. (可选)若要添加标签,请选择 Add new tag(添加新标签),然后输入该标签的键和值。

  10. 选择创建端点

使用命令行创建网关端点

使用存储桶策略控制访问

您可以使用存储桶策略来控制从特定终端节点、VPCs、IP 地址范围和 AWS 账户对存储桶的访问。这些示例假设还有一个允许您的使用案例所需访问权限的策略语句。

例 示例:限制对特定端点的访问

您可以使用 aws: sourceVpce 条件密钥创建限制对特定终端节点的访问的存储桶策略。除非使用了指定的网关端点,否则以下策略会使用指定的操作拒绝对指定桶的访问。请注意,此策略通过 AWS Management Console使用指定的操作阻止对指定桶的访问。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-VPCE", "Effect": "Deny", "Principal": "*", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "Resource": ["arn:aws:s3:::bucket_name", "arn:aws:s3:::bucket_name/*"], "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1a2b3c4d" } } } ] }
例 示例:将访问权限限制为特定的 VPC

您可以使用 aws: sourceVpc condition 密钥创建限制访问特定VPCs存储桶策略。如果您在同一个端点中配置了多个端点,则此功能非常有用VPC。除非请求来自指定的,否则以下策略拒绝使用指定操作访问指定存储桶VPC。请注意,此策略通过 AWS Management Console使用指定的操作阻止对指定桶的访问。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-VPC", "Effect": "Deny", "Principal": "*", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "Resource": ["arn:aws:s3:::example_bucket", "arn:aws:s3:::example_bucket/*"], "Condition": { "StringNotEquals": { "aws:sourceVpc": "vpc-111bbb22" } } } ] }
例 示例:限制对特定 IP 地址范围的访问

您可以使用 aws: VpcSourceIp 条件密钥创建限制对特定 IP 地址范围的访问的策略。除非请求来自指定的 IP 地址,否则以下策略会使用指定的操作拒绝对指定桶的访问。请注意,此策略通过 AWS Management Console使用指定的操作阻止对指定桶的访问。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-VPC-CIDR", "Effect": "Deny", "Principal": "*", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "Resource": ["arn:aws:s3:::bucket_name", "arn:aws:s3:::bucket_name/*"], "Condition": { "NotIpAddress": { "aws:VpcSourceIp": "172.31.0.0/16" } } } ] }
例 示例:限制对特定存储桶的访问权限 AWS 账户

您可以使用 s3:ResourceAccount 条件键来创建策略,用于限制对特定 AWS 账户 中 S3 存储桶的访问。除非 S3 桶归指定的 AWS 账户所有,否则以下策略会使用指定的操作拒绝对这些桶的访问。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-bucket-in-specific-account", "Effect": "Deny", "Principal": "*", "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"], "Resource": "arn:aws:s3:::*", "Condition": { "StringNotEquals": { "s3:ResourceAccount": "111122223333" } } } ] }

关联路由表

您可以更改与网关端点关联的路由表。当您关联路由表时,我们将自动添加一个路由,将以服务为目的地的流量指向端点网络接口。当您取消关联路由表时,我们会自动从路由表中删除端点路由。

使用控制台关联路由表
  1. 打开 Amazon VPC 控制台,网址为https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择端点

  3. 选择网关端点。

  4. 选择 ActionsManage route tables

  5. 根据需要选择或取消选择路由表。

  6. 选择 Modify route tables(修改路由表)。

使用命令行关联路由表

编辑VPC终端节点策略

您可以编辑网关终端节点的终端节点策略,该策略控制VPC通过终端节点访问 Amazon S3。默认策略允许完全访问。有关更多信息,请参阅 端点策略

使用控制台更改端点策略
  1. 打开 Amazon VPC 控制台,网址为https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择端点

  3. 选择网关端点。

  4. 依次选择 Actions(操作)、Manage policy(管理策略)。

  5. 选择 Full Access(完全访问)以允许对服务进行完全访问,或者选择 Custom(自定义)并附加自定义策略。

  6. 选择保存

下面是访问 Amazon S3 的端点策略示例。

例 示例:限制对特定存储桶的访问

您可以创建一个策略来仅允许访问特定 S3 存储桶。如果您的存储桶 AWS 服务 中有其他使用 S3 存储桶VPC,则此功能非常有用。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-bucket", "Effect": "Allow", "Principal": "*", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket_name", "arn:aws:s3:::bucket_name/*" ] } ] }
例 示例:限制对特定IAM角色的访问权限

您可以创建限制特定IAM角色访问权限的策略。必须使用 aws:PrincipalArn 向主体授予访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-IAM-role", "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "ArnEquals": { "aws:PrincipalArn": "arn:aws:iam::111122223333:role/role_name" } } } ] }
例 示例:限制对特定账户中用户的访问

您可以创建限制对特定账户的访问权限的策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-callers-from-specific-account", "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalAccount": "111122223333" } } } ] }

删除网关端点

用完网关端点后可以将其删除。当您删除网关端点时,我们会从子网路由表中删除端点路由。

如果启用了私DNS有网关终端节点,则无法删除网关终端节点。

使用控制台删除网关端点
  1. 打开 Amazon VPC 控制台,网址为https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择端点

  3. 选择网关端点。

  4. 选择操作删除VPC端点

  5. 当系统提示进行确认时,输入 delete

  6. 选择删除

使用命令行删除网关端点