You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS CDK实现RDS数据库与EC2实例的连接配置

AWS CDK实现EC2与RDS集群的安全组配置(实现连接)

完全可以通过AWS CDK实现EC2和RDS的安全组授权,而且确实能在DatabaseCluster的instanceProps里配置安全组,同时给EC2实例添加对应安全组即可完成双向访问配置。

具体实现步骤及代码示例:

  1. 创建专用安全组
    先分别为EC2和RDS创建安全组,然后配置RDS安全组允许EC2安全组访问数据库端口:

    // 导入CDK的EC2模块(如果未导入)
    import * as ec2 from 'aws-cdk-lib/aws-ec2';
    
    // 创建EC2实例的安全组
    const ec2SecurityGroup = new ec2.SecurityGroup(this, 'Ec2SecurityGroup', {
      vpc: props.vpc,
      description: 'EC2实例安全组,允许出站访问RDS',
      allowAllOutbound: true,
    });
    
    // 创建RDS集群的安全组
    const rdsSecurityGroup = new ec2.SecurityGroup(this, 'RdsSecurityGroup', {
      vpc: props.vpc,
      description: 'RDS集群安全组,允许EC2访问数据库端口',
      allowAllOutbound: true,
    });
    
    // 授权RDS安全组接收来自EC2安全组的数据库端口请求(以PostgreSQL的5432端口为例)
    rdsSecurityGroup.addIngressRule(ec2SecurityGroup, ec2.Port.tcp(5432), '允许EC2实例访问RDS数据库');
    
  2. 给RDS集群配置安全组
    修改你的RDS集群代码,在instanceProps中添加securityGroups属性:

    this.dbCluster = new DatabaseCluster(this, 'MyDbCluster', {
      // 补充你的其他必要配置:比如engine、credentials、instanceCount等
      instanceProps: {
        vpc: props.vpc,
        vpcSubnets: { subGroupName: 'private' },
        securityGroups: [rdsSecurityGroup], // 关联RDS安全组
      },
    });
    
  3. 给EC2实例配置安全组
    修改你的EC2实例代码,添加securityGroup属性:

    const ec2Instance = new Instance(this, 'ec2instance', {
      // 补充你的其他必要配置:比如instanceType、machineImage、keyName等
      vpcSubnets: {
        subnetGroupName: 'private',
      },
      securityGroup: ec2SecurityGroup, // 关联EC2安全组
    });
    

额外说明:

  • 数据库端口请根据你使用的引擎调整:MySQL用3306,SQL Server用1433,Oracle用1521等
  • 你的代码已经将EC2和RDS放在私有子网中,这符合AWS最佳实践,避免直接暴露公网
  • 如果不需要严格分离安全组,也可以让EC2和RDS共用一个安全组,但分开管理更便于后续权限调整

内容的提问来源于stack exchange,提问作者haydnD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 21:35:29