我正在尝试生成正确的CDK脚本(TypeScript),以创建一个具有Lambda(可通过API网关访问)的环境,该环境可以调用RDS(Sql Server实例)。
我相信我基本上可以使用它,但是我想从我的开发机器连接到RDS实例,以运行一些查询并检查一些事情。
我的RDS实例位于专用子网中,so I believe in order to connect to我需要添加Internet网关和安全组以允许在适当的端口上进行访问。
在我生命中,我可以弄清楚最后一部分,如何使用CDK添加Internet网关。
我尝试过的最新脚本如下:
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上附加新的?
您能帮忙语法吗?
答案 0 :(得分:1)
首先,您不能直接访问专用子网中的数据库。您必须在公共子网中部署代理实例,并转发所需的端口以访问数据库。
在使用CDK VPC构造时,默认情况下,无论何时创建公共子网,都会创建Internet网关。还为公共子网设置了默认路由。
因此,您应该从代码中删除addGatewayEndpoint()
,这将添加您不需要的Gateway VPC Endpoint。
您还可以考虑使用SubnetType.ISOLATED创建没有NAT GW的专用子网,这在您的情况下可能是多余的。 SubnetType.PRIVATE默认情况下会创建一个NAT网关。