AWS支持两种类型的VPC Endpoint
—— Gateway Endpoint
和Interface Endpoint
当同一个region的EC2访问S3或dynamodb时,流量会走公网,这带来不必要的延迟, 并且流量暴露在外面有被窃听的风险:
创建Gateway Endpoint后,VPC里的资源访问S3时,不再经过igw或nat gw, 而是经过gateway endpoint
。每个子网的路由表都要有一条路由,使用s3/dynamodb
的prefix list(前缀列表)
, 并将其转发到对应的endpoint:
注意这个prefix list
是和region相关的,如果此时访问其他region的S3/DynamoDB
,流量还是会经过igw的路由
Gateway Endpoint不支持流量的穿越,例如从IDC里拉通VPN到VPC2,从IDC访问S3时,流量不能穿过VPC2再到S3:
同样,如果VPC1和VPC2做了Peering,VPC1访问S3时,流量也到达不了S3:
另外Gateway Endpoint只支持两种服务:S3和DynamoDB。
基于上面的一些缺陷,AWS继续推出了Interface Endpoint
Interface Endpoint
是基于AWS Private Link技术实现的。它支持AWS 130多种服务
它的原理和Gateway Endpoint
不一样:
Gateway Endpoint
时,解析出来的S3地址还是公网地址,然后通过路由转发到gateway endpointInterface Endpoint
时,解析出的的是一个弹性网卡的私网地址,将它当做S3的地址,然后经过Interface VPC Enpoint
到达S3。为了保证高可用,一般每个AZ都有一个ENI。
Interface VPC Enpoint也支持和其他帐号的Load Balancer互联:
但是Interface Enpoint
要收取每小时0.01$
的费用,并且每处理1GB数据也要收0.01$
Gateway Endpoint
是通过修改路由表实现的,Interface Endpoint
是通过ENI实现的: