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

使用AWS CDK创建数据库告警:指定DB实例ID报错求助

问题描述

我尝试用AWS CDK创建监控数据库剩余空间的告警。不指定数据库名称时能成功创建告警,但由于没有对应监控的数据库,该告警并无实际作用。请问如何正确指定数据库实例名称?

我尝试的维度配置代码如下:

new cloudwatch.Alarm(this, 'FreeStorageSpace', {
  metric: new cloudwatch.Metric({
    "metricName": "FreeStorageSpace",
    "namespace": "AWS/RDS",
    "period": Duration.minutes(1),
    "unit": cloudwatch.Unit.COUNT,
    "statistic": cloudwatch.statistics.SUM,
    "dimensions": {
        "Name": "DBInstanceIdentifier",
        "Value": "rdsalarm-development"
     },
  }),
  threshold: 90,
  evaluationPeriods: 1,
})

构建时出现错误:

Error: Resolution error: Supplied properties not correct for "CfnAlarmProps"
dimensions: element 0: supplied properties not correct for "DimensionsProperty"
value: {"Name":"DBInstanceIdentifier", "Value":"rdsalarm-development"} should be a string

解决方案

错误原因是AWS CDK的Metric类中,dimensions参数要求直接传入键值对对象,而非{Name: "...", Value: "..."}的结构。只需将维度名称作为键,数据库实例名称作为值即可:

修正后的代码:

new cloudwatch.Alarm(this, 'FreeStorageSpace', {
  metric: new cloudwatch.Metric({
    metricName: "FreeStorageSpace",
    namespace: "AWS/RDS",
    period: Duration.minutes(1),
    unit: cloudwatch.Unit.BYTES, // 注意:FreeStorageSpace的实际单位是字节,不是COUNT
    statistic: cloudwatch.Statistics.SUM,
    dimensions: {
      DBInstanceIdentifier: "rdsalarm-development" // 直接用键值对指定维度
    },
  }),
  threshold: 90 * 1024 * 1024 * 1024, // 若阈值是90GB,需转换为字节单位
  evaluationPeriods: 1,
})

额外提示:

  • FreeStorageSpace指标的单位是BYTES,修正单位可避免统计逻辑异常
  • 阈值需与单位匹配,比如90GB要转换成字节值,否则告警触发条件会不符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:45:42