上一节我们完成了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:

解决方式参考:
