使用 CDK 创建不带 NAT 网关的 AWS RDS 实例

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

是否可以在没有 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,
    });
amazon-web-services amazon-rds amazon-vpc aws-cdk
2个回答
6
投票

是的,可以。您可能必须添加一些 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


0
投票

无服务器集群不能放入公共子网中。

这是 RDS Serverless 的硬性且有记录的限制。

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