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

如何阻止CDK自动创建DynamoDB表的已消耗容量CloudWatch告警?

如何阻止CDK为DynamoDB自动扩缩容创建CloudWatch缩容告警

当使用CDK的scaleOnUtilization方法配置DynamoDB表的读写容量自动扩缩容时,默认会生成两个CloudWatch告警:一个触发扩容(当ConsumedCapacityUnits利用率超过目标阈值),另一个触发缩容(当利用率低于阈值)。要避免生成缩容相关的告警,你可以放弃使用scaleOnUtilization,转而通过以下两种方式配置仅扩容的缩放策略:

方法一:禁用缩容的目标追踪策略

通过autoScaleReadCapacity返回的IScalableTableAttribute,使用targetTrackingScalingPolicy并设置disableScaleIn为true,这样只会创建扩容相关的告警,不会生成缩容告警:

// 创建表
Table myTable = dynamodb.Table.Builder.create(this, "MyTable")
        .partitionKey(AttributeDefinition.builder().name("id").type(AttributeType.STRING).build())
        .billingMode(BillingMode.PROVISIONED)
        .readCapacity(10)
        .build();

// 配置自动扩缩容基础属性
EnableScalingProps readScalingProps = EnableScalingProps.builder()
        .minCapacity(10)
        .maxCapacity(100)
        .build();

IScalableTableAttribute scalableReadCapacity = myTable.autoScaleReadCapacity(readScalingProps);

// 创建目标追踪策略,禁用缩容
scalableReadCapacity.addTargetTrackingScalingPolicy("ReadCapacityScalingPolicy",
        TargetTrackingScalingPolicyProps.builder()
                .targetValue(50) // 目标利用率50%
                .predefinedMetric(PredefinedMetric.DYNAMO_DB_READ_CAPACITY_UTILIZATION)
                .disableScaleIn(true) // 禁用缩容,不会生成缩容告警
                .build());

方法二:手动定义扩容的指标缩放策略

如果你需要更精细的控制,可以直接基于CloudWatch指标创建仅扩容的缩放策略,完全跳过缩容逻辑:

// 创建表
Table myTable = dynamodb.Table.Builder.create(this, "MyTable")
        .partitionKey(AttributeDefinition.builder().name("id").type(AttributeType.STRING).build())
        .billingMode(BillingMode.PROVISIONED)
        .readCapacity(10)
        .build();

// 配置自动扩缩容基础属性
EnableScalingProps readScalingProps = EnableScalingProps.builder()
        .minCapacity(10)
        .maxCapacity(100)
        .build();

IScalableTableAttribute scalableReadCapacity = myTable.autoScaleReadCapacity(readScalingProps);

// 基于ConsumedReadCapacityUnits利用率创建扩容策略
scalableReadCapacity.scaleOnMetric("ScaleUpOnHighUtilization",
        MetricScalingProps.builder()
                .metric(myTable.metricConsumedReadCapacityUnits())
                .scalingSteps(List.of(
                        ScalingInterval.builder()
                                .lower(5) // 当ConsumedReadCapacityUnits超过当前配置容量的50%(即10*0.5=5)时扩容
                                .change(10) // 每次增加10个读容量
                                .build()
                ))
                .adjustmentType(AdjustmentType.CHANGE_IN_CAPACITY)
                .build());

以上两种方式都不会生成缩容对应的CloudWatch告警,可有效减少仪表盘的噪音。

内容的提问来源于stack exchange,提问作者Ramón J Romero y Vigil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:25:20