本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 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,而不是使用网关终端节点,无需支付额外费用。
DNS仅限入站 Resolver 终端节点的私有
如果您DNS仅为入站 Resolver 终端节点配置私有,则来自本地网络的请求将使用接口终端节点访问 Amazon S3,而您的请求则VPC使用网关终端节点访问 Amazon S3。因此,您可以优化成本,因为您只需为无法使用网关端点的流量,付费使用接口端点。
配置私有 DNS
您可以在创建 Amazon S3 接口终端节点时或在创建接口终端节点之后为其配置私DNS有配置。有关更多信息,请参阅 创建 VPC 终端节点(创建期间配置)或 启用私有DNS名称(创建后配置)。
创建网关端点
使用以下过程创建连接到 Amazon S3 的网关端点。
使用控制台创建网关端点
打开 Amazon VPC 控制台,网址为https://console.aws.amazon.com/vpc/
。 -
在导航窗格中,选择端点。
-
选择 创建端点。
-
对于 Service category(服务类别),选择 AWS 服务。
-
对于服务,添加过滤器 “类型 = 网关”,然后选择 com. amazonaws。
region
.s3。 -
对于 VPC,选择要VPC在其中创建端点的。
-
对于 Route tables(路由表),选择端点要使用的路由表。我们将自动添加一个路由,将以服务为目的地的流量指向端点网络接口。
-
对于策略,选择完全访问权限以允许所有委托人通过VPC端点对所有资源进行所有操作。否则,请选择自定义以附加VPC终端节点策略,该策略控制委托人通过终VPC端节点对资源执行操作所拥有的权限。
-
(可选)若要添加标签,请选择 Add new tag(添加新标签),然后输入该标签的键和值。
-
选择创建端点。
使用命令行创建网关端点
-
create-vpc-endpoint
(AWS CLI) -
New-EC2VpcEndpoint(适用于 Windows 的工具 PowerShell)
使用存储桶策略控制访问
您可以使用存储桶策略来控制从特定终端节点、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
" } } } ] }
关联路由表
您可以更改与网关端点关联的路由表。当您关联路由表时,我们将自动添加一个路由,将以服务为目的地的流量指向端点网络接口。当您取消关联路由表时,我们会自动从路由表中删除端点路由。
使用控制台关联路由表
打开 Amazon VPC 控制台,网址为https://console.aws.amazon.com/vpc/
。 -
在导航窗格中,选择端点。
-
选择网关端点。
-
选择 Actions、Manage route tables。
-
根据需要选择或取消选择路由表。
-
选择 Modify route tables(修改路由表)。
使用命令行关联路由表
-
modify-vpc-endpoint
(AWS CLI) -
Edit-EC2VpcEndpoint(适用于 Windows 的工具 PowerShell)
编辑VPC终端节点策略
您可以编辑网关终端节点的终端节点策略,该策略控制VPC通过终端节点访问 Amazon S3。默认策略允许完全访问。有关更多信息,请参阅 端点策略。
使用控制台更改端点策略
打开 Amazon VPC 控制台,网址为https://console.aws.amazon.com/vpc/
。 -
在导航窗格中,选择端点。
-
选择网关端点。
-
依次选择 Actions(操作)、Manage policy(管理策略)。
-
选择 Full Access(完全访问)以允许对服务进行完全访问,或者选择 Custom(自定义)并附加自定义策略。
-
选择保存。
下面是访问 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有网关终端节点,则无法删除网关终端节点。
使用控制台删除网关端点
打开 Amazon VPC 控制台,网址为https://console.aws.amazon.com/vpc/
。 -
在导航窗格中,选择端点。
-
选择网关端点。
-
选择操作,删除VPC端点。
-
当系统提示进行确认时,输入
delete
。 -
选择删除。
使用命令行删除网关端点
-
delete-vpc-endpoints
(AWS CLI) -
Remove-EC2VpcEndpoint(适用于 Windows 的工具 PowerShell)