哪里可以获得VpcLink Id?

问题描述 投票:0回答:3

我正在使用 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 中找到它吗?

typescript amazon-web-services aws-api-gateway amazon-vpc aws-cdk
3个回答
1
投票

VPC 链接 ID 实际上来自 VPCLink 资源

此资源是一种特殊连接,允许 API 网关服务通过负载均衡器私下连接到您的 EC2/ECS/EKS 资源(对于 REST API,这将是 NLB,对于 HTTP API,它可以是 ALB)。

然后,当在 API 网关配置中引用时,可以与负载均衡器建立专用连接,以便 HTTP 流量不需要传输公共互联网(保持资源的私密性)。

如果您不需要使用任何这些私有资源,则无需创建此连接,通过这样做,它会将您的 API 网关设置为位于 VPC 中,它只需使用 PrivateLink 创建一个链接。

有关更多信息,请查看设置 API 网关私有集成文档。


0
投票

在 aws 控制台中,

红色


0
投票

一个老问题,但总结一下其他人的答案:

您可以从 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

© www.soinside.com 2019 - 2024. All rights reserved.