使用 CDK 创建没有 NAT 网关的 AWS RDS 实例

axe*_*ire 4 amazon-web-services amazon-rds amazon-vpc aws-cdk

是否可以通过 CDK 创建无服务器 RDS 集群,无需 NAT 网关?对于开发环境来说,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,
    });
Run Code Online (Sandbox Code Playgroud)

kic*_*hik 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.ISOLATED,
    }
  ]
});

// RDS
const dbCluster = new rds.ServerlessCluster(this, 'MyAuroraCluster', {
  engine: rds.DatabaseClusterEngine.AURORA_MYSQL,
  defaultDatabaseName: 'DbName',
  vpcSubnets: {
    subnetType: ec2.SubnetType.ISOLATED,
  },
  vpc,
});
Run Code Online (Sandbox Code Playgroud)

如果您想要 Secrets Manager 控制密码,请使用:

vpc.addInterfaceEndpoint('SecretsManagerEndpoint', {
  service: ec2.InterfaceVpcEndpointAwsService.SECRETS_MANAGER,
});

dbCluster.addRotationSingleUser();
Run Code Online (Sandbox Code Playgroud)