如何使用Typescript版AWS CDK向现有CloudFormation栈新增实例
结论
完全可以直接在原有TypeScript版AWS CDK栈中新增第二个实例,无需单独创建新栈,CDK原生支持对已部署栈做增量更新。
操作步骤
- 修改原有CDK栈代码
直接复用你栈中已定义的VPC、安全组变量,新增第二个EC2实例的定义即可,原有资源的配置不要做任何改动:
import * as ec2 from 'aws-cdk-lib/aws-ec2'; import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class YourExistingStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // --- 下方是原有已部署的资源配置,保持不动 --- const vpc = new ec2.Vpc(this, 'MyVpc', { // 你原来的VPC配置 }); const instanceSg = new ec2.SecurityGroup(this, 'InstanceSg', { vpc, // 你原来的安全组配置 }); const instance1 = new ec2.Instance(this, 'Instance1', { vpc, securityGroup: instanceSg, // 你原来的实例1配置 }); // --- 原有资源配置结束 --- // 新增第二个实例,直接复用上面的vpc和instanceSg变量 const instance2 = new ec2.Instance(this, 'Instance2', { vpc, securityGroup: instanceSg, instanceType: ec2.InstanceType.of(ec2.InstanceClass.T2, ec2.InstanceSize.MICRO), machineImage: new ec2.AmazonLinux2023Image(), // 按需配置其他实例参数 }); } }
- 预览变更(可选,推荐)
执行cdk diff命令,CDK会对比本地代码和云端已部署栈的差异,确认输出中只有新增Instance2相关的资源,没有其他修改操作后再执行部署,避免误改原有资源。 - 执行部署
直接运行cdk deploy即可,CDK会自动向原有CloudFormation栈中新增第二个实例,原有VPC、安全组、实例1不会受到任何影响。
注意事项
新增实例的构造ID(代码中new ec2.Instance的第二个参数,比如上面的Instance2)不能和栈内已有资源的ID重复,否则会触发部署报错。
内容的提问来源于stack exchange,提问作者Palakonda Shiva Prasad
相关产品推荐
相关产品推荐

