使用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
相关产品推荐
相关产品推荐

