是否可以在没有 NAT 网关的情况下通过 CDK 创建无服务器 RDS 集群?对于开发环境来说,NAT 网关的基本费用相当昂贵。我对设置 NAT 实例也不感兴趣。我将 VPC 中的 Lambda 附加到 RDS 实例像这样。
// VPC
const vpc = new ec2.Vpc(this, 'MyVPC');
// RDS
const dbCluster = new rds.ServerlessCluster(this, 'MyAuroraCluster', {
engine: rds.DatabaseClusterEngine.AURORA_MYSQL,
defaultDatabaseName: 'DbName',
vpc,
});
是的,可以。您可能必须添加一些 VPC 终端节点(例如 Secrets Manager),以便可以完成密码轮换,但这是可能的。您将需要创建一个具有也没有 NAT 网关的子网的 VPC。
// VPC
const vpc = new ec2.Vpc(this, 'MyVPC', {
natGateways: 0,
subnetConfiguration: [
{
cidrMask: 24,
name: 'public',
subnetType: ec2.SubnetType.PUBLIC,
},
{
cidrMask: 28,
name: 'rds',
subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
}
]
});
// RDS
const dbCluster = new rds.ServerlessCluster(this, 'MyAuroraCluster', {
engine: rds.DatabaseClusterEngine.AURORA_MYSQL,
defaultDatabaseName: 'DbName',
vpcSubnets: {
subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
},
vpc,
});
如果您想要 Secrets Manager 控制密码,请使用:
vpc.addInterfaceEndpoint('SecretsManagerEndpoint', {
service: ec2.InterfaceVpcEndpointAwsService.SECRETS_MANAGER,
});
dbCluster.addRotationSingleUser();
编辑注意:在某些时候,CDK 枚举从
PRIVATE
更新为 PRIVATE_ISOLATED
无服务器集群不能放入公共子网中。
这是 RDS Serverless 的硬性且有记录的限制。