我正在使用 CDK(打字稿)配置 API 网关,目前我必须使用 HttpIntegration 创建一个端点到在 VPC 下运行的 EC2 实例。
所以我做下一步:
api.root.resourceForPath("/{pathVar}/smth/{pathVar}")
.addMethod("GET",
new HttpIntegration("https://endpoint-from-ec2-under-vpc", {
options: {
connectionType: ConnectionType.VPC_LINK,
vpcLink: ???
}
}), ...
我在哪里可以获得 vpcLink?
我试过这样:
const vpc= VpcLink.fromVpcLinkId(this, "vpc-link", "VpcID");
但是在部署过程中 - 出现错误:
Vpc link VpcID was not found in account ********
所以 VpcLinkId 不是 VpcId,那么它是什么?
我可以在其他地方的 aws console ore 中找到它吗?
VPC 链接 ID 实际上来自 VPCLink 资源。
此资源是一种特殊连接,允许 API 网关服务通过负载均衡器私下连接到您的 EC2/ECS/EKS 资源(对于 REST API,这将是 NLB,对于 HTTP API,它可以是 ALB)。
然后,当在 API 网关配置中引用时,可以与负载均衡器建立专用连接,以便 HTTP 流量不需要传输公共互联网(保持资源的私密性)。
如果您不需要使用任何这些私有资源,则无需创建此连接,通过这样做,它会将您的 API 网关设置为位于 VPC 中,它只需使用 PrivateLink 创建一个链接。
有关更多信息,请查看设置 API 网关私有集成文档。
一个老问题,但总结一下其他人的答案:
您可以从 VpcLink 对象的属性之一获取 VPC 链接 ID(由 AWS 生成)。
const vpcLink = VpcLink.fromVpcLinkId(this, "vpc-link", "VpcID");
api.root.resourceForPath("/{pathVar}/smth/{pathVar}")
.addMethod("GET",
new HttpIntegration("https://endpoint-from-ec2-under-vpc", {
options: {
connectionType: ConnectionType.VPC_LINK,
vpcLink: vpcLink.vpcLinkId
}
}), ...
来源:https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.VpcLink.html#properties