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

求助:通过告警配置Auto Scaling Group实例扩容遇代码报错

问题解决:Auto Scaling 告警触发缩放的配置错误

错误原因分析

  1. 第一个报错throw new Error('You must supply at least 2 intervals for autoscaling');
    StepScalingPolicy要求scalingSteps必须定义至少两个阈值区间,你只配置了一个change:1的条目,不符合Step缩放策略的要求。

  2. 第二个报错Resource handler returned message: "You should specify at least one StepAdjustment with a StepScaling policy.
    StepScalingAction不能单独使用,它必须关联已配置好的StepScalingPolicy,且StepScalingPolicy本身需要正确定义StepAdjustment(也就是scalingSteps)。

正确配置方案

你的需求是告警触发时创建1个新实例,这种单一动作的场景更适合使用SimpleScalingPolicy,而非StepScalingPolicy。以下是修正后的代码:

const gpuAlarm = new cloudwatch.Alarm(this, 'MemoryAlarm', {
  alarmName: metaInfo['alarmNameGpu'],
  comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD,
  threshold: 30,
  evaluationPeriods: 1,
  metric: new cloudwatch.Metric({
    namespace: `tt-${targetEnv}-gpu`,
    metricName: 'GPU Usage'
  })
});

// 使用SimpleScalingPolicy实现单一缩放动作
const simpleScalingPolicy = new autoscaling.SimpleScalingPolicy(this, 'ScaleOutPolicy', {
  autoScalingGroup: props!.aiAutoScalingGroup,
  adjustmentType: autoscaling.AdjustmentType.CHANGE_IN_CAPACITY,
  scalingAdjustment: 1, // 触发时增加1个实例
});

// 将告警与缩放策略关联
gpuAlarm.addAlarmAction(new actions.AutoScalingAction(simpleScalingPolicy));

如果确实需要使用StepScalingPolicy(比如未来要添加多阈值区间),则需要为scalingSteps配置至少两个区间,示例代码如下:

const gpuAlarm = new cloudwatch.Alarm(this, 'MemoryAlarm', {
  alarmName: metaInfo['alarmNameGpu'],
  comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD,
  threshold: 30,
  evaluationPeriods: 1,
  metric: new cloudwatch.Metric({
    namespace: `tt-${targetEnv}-gpu`,
    metricName: 'GPU Usage'
  })
});

const stepScalingPolicy = new autoscaling.StepScalingPolicy(this, 'MyStepScalingPolicy', {
  autoScalingGroup: props!.aiAutoScalingGroup,
  metric: new cloudwatch.Metric({
    namespace: `tt-${targetEnv}-gpu`,
    metricName: 'GPU Usage'
  }),
  scalingSteps: [
    { lower: 30, change: 1 }, // 指标>30时,增加1个实例
    { lower: 50, change: 2 }  // 指标>50时,增加2个实例
  ],
});

gpuAlarm.addAlarmAction(new actions.AutoScalingAction(stepScalingPolicy));

关键说明

  • SimpleScalingPolicy适用于单一阈值触发单一缩放动作的场景,配置简单直接。
  • StepScalingPolicy适用于多阈值区间对应不同缩放动作的场景,必须定义至少两个scalingSteps条目。
  • 无需单独创建StepScalingAction,缩放策略本身已经包含了动作配置,直接将告警与缩放策略关联即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 21:37:25