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

如何将CloudWatch Metrics Insight查询转为CDK Metric(Fargate vCPU)

如何用CDK实现CloudWatch中Fargate vCPU使用率的查询仪表盘?

我正在修改一个Serverless EventBridge ETL示例,已升级到CDK v2,部署和功能验证都正常,但新增的CloudWatch仪表盘组件无法显示Fargate vCPU使用率数据。

手动配置的CloudWatch查询Source

手动配置时,能正常显示数据的CloudWatch Source查询如下:

{
    "metrics": [
        [ { "expression": "SELECT COUNT(ResourceCount) FROM SCHEMA(\"AWS/Usage\", Class,Resource,Service,Type) WHERE Service = 'Fargate' AND Resource = 'vCPU'", "label": "Query1", "id": "q1" } ],
        [ "AWS/Usage", "ResourceCount", "Service", "Fargate", "Type", "Resource", { "id": "m1" } ]
    ],
    "view": "timeSeries",
    "title": "ExtractECSJob",
    "region": "us-west-2",
    "timezone": "Local",
    "stat": "Sum",
    "period": 300
}

我的CDK代码及问题

我用以下CDK TypeScript代码创建仪表盘组件:

const extractECSWidget = new GraphWidget({
    title: "ExtractECSJob",
    left: [
        new Metric({
            namespace: "AWS/Usage",
            metricName: "ResourceCount",
            statistic: "Sum",
            period: Duration.seconds(300),
            dimensionsMap: {
                "Service": "Fargate",
                "Type": "Resource",
                "Resource": "vCPU"
            }
        })
    ]
});

但生成的Source和手动配置不符,导致无数据显示,生成的Source如下:

{
    "view": "timeSeries",
    "title": "ExtractECSJob",
    "region": "us-west-2",
    "metrics": [
        [ "AWS/Usage", "ResourceCount", "Resource", "vCPU", "Service", "Fargate", "Type", "Resource", { "stat": "Sum" } ]
    ],
    "period": 300
}

尝试MathExpression的错误

我尝试用MathExpression来实现手动的查询逻辑:

let metrics = new MathExpression({
    expression: "SELECT COUNT('metricName') FROM SCHEMA('\"AWS/Usage\"', 'Class','Resource','Service','Type') WHERE Service = 'Fargate' AND Resource = 'vCPU'",
    usingMetrics: {}
})

const extractECSWidget = new GraphWidget({
    title: "ExtractECSJob",
    left: [
        metrics
    ]
});

但执行cdk diff时出现警告:

[Warning at /EventbridgeEtlStack/EventBridgeETLDashboard] Math expression 'SELECT COUNT(metricName) FROM SCHEMA($namespace, Class,Resource,Service,Type) WHERE Service = 'Fargate' AND Resource = 'vCPU'' references unknown identifiers: metricName, namespace, lass, esource, ervice, ype, ervice, argate, esource, vCPU. Please add them to the 'usingMetrics' map.

提问

如何将手动的metrics source定义映射到CDK构造?usingMetrics中应该配置什么内容?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:45:36