上一节我们完成了Provider VPC
侧的搭建工作,并创建了Endpoint Service
, 本节我们将完成Consumer侧的工作,使用AWS PrivateLink
技术访问Provider
的服务:
在VPC的页面,点击Create endpoint
:
此时我们不使用AWS Services
,而是选择Other endpoint services
;
输入上一节最后复制的Service ARN
,然后点击 Verify service
:
Provider VPC
网段为10.0.0.0/16
;Consumer VPC
网段为10.1.0.0/16
,选择这个VPC及其下的子网,并使用默认的安全组:
default安全组上要放通80端口的HTTP流量
最后点击创建。
此时回到Endpoint services
,会看到有一条新的连接请求过来,需要Accept
:
在provider侧确认接收连接,点击确认后大概两分钟后,连接会创建好。
在consumer侧,可以看到AWS PrivateLink
在两个子网里创建的ENI:
在Consumer VPC
创建一台EC2, 并使用Endpoints
的DNS来访问NLB服务:
从Consumer VPC
能成功访问到Provider VPC
里的服务:
通过实验,我们发现PrivateLink
与VPC Peering
在实现的功能上类似,它们都是将对外网的服务访问变成走AWS内网,但它们的应用场景又略有不同:
PrivateLink | VPC Peering | |
---|---|---|
应用场景 | VPC暴露单个服务给别的VPC | VPC之间需要访问很多资源 |
对网段的要求 | 支持重叠的CIDR | CIDR不能重叠 |
连接的数量 | 没有上限 | 最多125个Peering connection |
流量的方向 | 单向。只支持从consumer VPC 发起流量请求 |
双向 |
VPC PrivateLink不支持直接跨region使用,如果直接在另一个region使用endpoint service,会提示Service name could not be verified
:
解决方式参考: