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

如何在AWS CDK中引用已购EC2/RDS预留实例及用于ASG?

AWS CDK中预留实例引用及Auto Scaling Group适配方案

一、引用已购买的EC2/RDS预留实例(RI)

AWS预留实例(RI)本质是计费优惠权益,而非可直接引用的资源实体,因此在CDK中无需显式引用RI的ID,只需确保后续创建的EC2/RDS实例与RI的属性完全匹配,AWS会自动将RI优惠应用到对应实例上:

  • EC2 RI匹配条件:实例类型、区域/可用区、操作系统平台、租户属性(共享/专用)必须与RI一致
  • RDS RI匹配条件:数据库引擎、实例类型、区域、多AZ配置必须与RI一致

注:你提供的文档链接对应的是容量预留(Capacity Reservation),这是一种预留计算容量的实体资源,和RI属于不同概念,需注意区分。

二、预留实例(RI)能否用于Auto Scaling Group

完全可以。只要ASG启动的EC2实例满足RI的匹配条件,AWS会自动将RI的计费优惠应用到ASG的实例上,无需额外绑定操作。ASG实例扩缩容时,AWS会自动匹配可用的RI权益。

三、在ASG中关联容量预留(非RI)的配置方法

若你需要指定ASG使用已创建的容量预留(而非RI计费优惠),可在ASG配置中添加capacityReservationSpecification属性,指定目标容量预留的ID。基于你提供的代码,修改后示例如下:

const asg = new autoscaling.AutoScalingGroup(this, `${props.project}-${props.environment}-ASG`, {
  vpc: this.vpc,
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, props.environment == 'production' ? ec2.InstanceSize.SMALL : ec2.InstanceSize.MICRO),
  machineImage: new ec2.AmazonLinuxImage({
    generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2
  }),
  securityGroup: securityGroup,
  userData: ec2.UserData.custom(userData),
  minCapacity: 1,
  maxCapacity: 1,
  desiredCapacity: 1,
  role: role,
  // 配置使用指定的容量预留
  capacityReservationSpecification: {
    capacityReservationTarget: {
      capacityReservationId: 'cr-xxxxxxxxx' // 替换为你的容量预留ID
    }
  }
});

若你有多个容量预留并希望ASG自动选择可用的,也可通过capacityReservationResourceGroupArn指定容量预留资源组的ARN,而非单个ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:10:27