LNI*_*LNI 5 amazon-cloudwatch aws-fargate aws-cdk aws-cdk-typescript
我正在修改https://github.com/cdk-patterns/serverless/tree/main/the-eventbridge-etl/typescript上的示例,因为我想向我的 CloudFormation 堆栈添加一个仪表板小部件来显示 Fargate vCPU 使用情况。我已经能够升级应用程序以使用 CDK v2,并且部署/功能已得到确认。但是,我无法在仪表板中获取 vCPU 小部件来显示任何数据。
如果我在 AWS 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
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用 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"
}
})
]
});
Run Code Online (Sandbox Code Playgroud)
这并不翻译为上面的内容,并且此小部件中不显示任何信息。新的来源如下所示:
{
"view": "timeSeries",
"title": "ExtractECSJob",
"region": "us-west-2",
"metrics": [
[ "AWS/Usage", "ResourceCount", "Resource", "vCPU", "Service", "Fargate", "Type", "Resource", { "stat": "Sum" } ]
],
"period": 300
}
Run Code Online (Sandbox Code Playgroud)
如何将上述指标源定义映射到 CDK 源构造?
我尝试使用 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
]
});
Run Code Online (Sandbox Code Playgroud)
我在以下期间收到警告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.
Run Code Online (Sandbox Code Playgroud)
我应该在 usingMetrics 地图中放置什么?任何帮助表示赞赏。
感谢 AWS 支持,我得以修复此问题。更新后的代码如下所示:
let metrics = new MathExpression({
expression: "SELECT COUNT(ResourceCount) FROM SCHEMA(\"AWS/Usage\", Class,Resource,Service,Type) WHERE Service = 'Fargate' AND Resource = 'vCPU'",
usingMetrics: {},
label: "Query1"
})
let metric2 = new Metric({
namespace: "AWS/Usage",
metricName: "ResourceCount",
period: cdk.Duration.seconds(300),
dimensionsMap: {
"Service": "Fargate",
"Type": "Resource",
}
})
const extractECSWidget = new GraphWidget({
title: "ExtractECSJobTest",
left: [metrics, metric2],
region: "us-west-2",
statistic: "Sum",
width: 24
});
dashboardStack.addWidgets(
extractECSWidget
);
Run Code Online (Sandbox Code Playgroud)
运行时cdk deploy,我仍然收到相同的警告(关于引用未知标识符),但小部件按预期运行。
| 归档时间: |
|
| 查看次数: |
3405 次 |
| 最近记录: |