如何validationAWS VPC(S3)端点的工作原理?

我使用CloudFormation将VPC端点添加到了我的VPC,并允许使用s3。 这些路由在AWS控制台中可见,但不在EC2实例的本地路由表中:

$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.29.4.129 0.0.0.0 UG 0 0 0 eth0 169.254.169.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 172.29.4.128 0.0.0.0 255.255.255.128 U 0 0 0 eth0 

如何validationVPC中的EC2实例是否实际使用S3的VPC端点,而不是可用的Internet连接?

您的实例将发往S3的数据包转发到本地网关,然后VPC“路由器”将其转发到S3端点。 没有客户configuration或知识是必需的。

您可以使用一组非常严格的ACL来configurationS3端点,以便拒绝所有请求,并观察您的客户端也收到故障。

我find了validationVPCterminal使用情况的方法。

  1. loginVPC中的AWS EC2实例
  2. configurationaws cli客户端
  3. 运行aws ec2 describe-prefix-lists ; 对于Windows PowerShell , Get-EC2PrefixList

结果应该包含属性PrefixListId的VPC端点前缀列表ID。

要进一步validation,可以将以下策略应用于S3存储桶:

 { "Version": "2008-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket" ], "Condition": { "StringNotEquals": { "aws:sourceVpc": [ "vpc-121212" ] } } } ] } 

与您的vpc ID而不是vpc-121212。 您应该只能从给定的VPC访问S3存储桶

我会build议在子网中启动ec2instance(允许列出s3桶的iamangular色),而不能访问Internet。
路由表中基本上只有2个活动规则(你的vpc子网范围和s3端点)。
连接到实例并运行命令:

$ aws s3 ls /
它应该失败,超时b / c boto默认会创build请求全局s3 url(s3.amazonaws.com)

$ export AWS_DEFAULT_REGION = us-east-1 ##您的地区在这里

$ aws s3 ls /
应该列出你的桶在我们东1区(vpc路由器将你的请求路由到s3.us-east-1.amazonaws.com)