我使用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使用情况的方法。
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)