【问题标题】:How to add an Internet Gateway to a VPC using AWS CDK?如何使用 AWS CDK 将 Internet 网关添加到 VPC?
【发布时间】:2020-03-07 19:07:31
【问题描述】:

我正在尝试生成正确的 CDK 脚本 (TypeScript) 来创建一个带有 Lambda(通过 API 网关访问)的环境,该环境可以调用 RDS(Sql Server 实例)。

我相信我大部分时间都在工作,但我想从我的开发机器连接到 RDS 实例以运行一些查询并检查一些事情。

我的 RDS 实例位于私有子网中,so I believe in order to connect to 我需要添加 Internet 网关和安全组以允许访问相应的端口。

对于我的生活,我可以弄清楚最后一部分,如何使用 CDK 添加互联网网关。

我试过的最新脚本如下:

const privateSubnectConfiguration = {
  cidrMask: 26,
  name: 'private-subnet',
  subnetType: SubnetType.PRIVATE,
};

const publicSubnectConfiguration = {
  cidrMask: 26,
  name: 'public-subnet',
  subnetType: SubnetType.PUBLIC,
};

const vpc = new Vpc(this, props.generateId('vpc'), {
  maxAzs: 2,
  subnetConfiguration: [privateSubnectConfiguration, publicSubnectConfiguration],
  natGateways: 1,
});

vpc.addGatewayEndpoint(props.generateId('internet-gateway'), {
  service: { name: "ig-service" }
})

然后The Vpc Endpoint Service 'ig-service' does not exist (Service: AmazonEC2; Status Code: 400; Error Code: InvalidServiceName; 出错

我在文档中看到了对 CfnInternetGateway 的引用,但就是不知道如何将新的附加到我的 VPC?

你能帮忙看看语法吗?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-cdk


    【解决方案1】:

    首先,您不能直接访问私有子网中的数据库。您必须在公有子网中部署代理实例并转发所需的端口以访问您的数据库。

    使用 CDK VPC 构造时,无论何时创建公有子网,都会默认创建一个 Internet 网关。还为公共子网设置了默认路由。 所以你应该从你的代码中删除addGatewayEndpoint(),这会添加一个你不需要的Gateway VPC Endpoint

    您也可以考虑使用 SubnetType.ISOLATED 创建一个没有 NAT GW 的私有子网,这在您的情况下可能是多余的。 SubnetType.PRIVATE 默认创建一个 NAT 网关。

    【讨论】:

    • 代理实例是什么意思?我以为通过打开安全组我可以访问它?
    • 如果在私有子网中启动,则无法从其 VPC 访问资源。因此,您可以在公共子网中启动 RDS 数据库实例,也可以通过公共子网中的实例代理请求(类似于使用堡垒主机访问私有子网中的实例)。
    猜你喜欢
    • 2023-01-24
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2021-12-26
    • 1970-01-01
    • 2020-06-04
    相关资源
    最近更新 更多