【问题标题】:Create an AWS RDS instance without NAT Gateway using CDK使用 CDK 创建没有 NAT 网关的 AWS RDS 实例
【发布时间】:2021-01-11 10:43:36
【问题描述】:

是否可以在没有 NAT 网关的情况下通过 CDK 创建serverless RDS cluster ?对于开发环境而言,NAT 网关的基本费用相当昂贵。我也对设置 NAT 实例不感兴趣。我正在使用 RDS 实例 like this 在 VPC 中附加一个 Lambda。

    // VPC
    const vpc = new ec2.Vpc(this, 'MyVPC');

    // RDS
    const dbCluster = new rds.ServerlessCluster(this, 'MyAuroraCluster', {
      engine: rds.DatabaseClusterEngine.AURORA_MYSQL,
      defaultDatabaseName: 'DbName',
      vpc,
    });

【问题讨论】:

  • 1. vpcPlacement 被标记为已弃用,并建议使用 vpcSubnets。 2. 创建的堆栈是否包含 NAT 网关? 3.您链接的帖子不需要NAT网关。如果您在私有子网中创建无服务器集群,就像在帖子中一样,是否会创建一个? 4. 可以用Data API吗?
  • 这确实创建了一个 NAT 网关。

标签: amazon-web-services amazon-rds amazon-vpc aws-cdk


【解决方案1】:

是的,你可以。您可能必须添加一些 VPC 端点,例如 Secrets Manager,以便可以进行密码轮换,但这是可能的。您将需要创建一个 VPC,其子网也没有 NAT 网关。

// 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,
});

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

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

dbCluster.addRotationSingleUser();

【讨论】:

    【解决方案2】:

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

    这是 RDS 无服务器的硬性限制。

    【讨论】:

    • 我不需要通过 Internet 访问集群。
    猜你喜欢
    • 2015-04-07
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2019-03-21
    • 2020-07-29
    • 2020-11-24
    相关资源
    最近更新 更多