Json 为cloudwatch仪表板设置小部件。获取错误“;仪表板主体无效,存在1个验证错误“;
我无法在小部件中引用servicename 使用给定代码获取以下错误: 仪表板正文无效,存在1个验证错误:[{“数据路径”:“/widgets/0/properties/metrics/0”,“消息”:“不应包含超过3项”}](服务:AmazonCloudWatch;状态代码:400;错误代码:InvalidParameterInputJson 为cloudwatch仪表板设置小部件。获取错误“;仪表板主体无效,存在1个验证错误“;,json,amazon-web-services,amazon-cloudformation,amazon-cloudwatch,amazon-cloudwatch-metrics,Json,Amazon Web Services,Amazon Cloudformation,Amazon Cloudwatch,Amazon Cloudwatch Metrics,我无法在小部件中引用servicename 使用给定代码获取以下错误: 仪表板正文无效,存在1个验证错误:[{“数据路径”:“/widgets/0/properties/metrics/0”,“消息”:“不应包含超过3项”}](服务:AmazonCloudWatch;状态代码:400;错误代码:InvalidParameterInput "CloudwatchDashboard": { "Type": "AWS::CloudWatch::Dashboard", "Prop
"CloudwatchDashboard": {
"Type": "AWS::CloudWatch::Dashboard",
"Properties": {
"{ \"widgets\":
[{ \"type\":\"metric\",
\"x\":0,
\"y\":0,
\"width\":12,
\"height\":6,
\"properties\":
{ \"metrics\":
[[ \"AWS/ECS\", \"CPUUtilization\", \"ServiceName\",
{ \"Fn::Sub\": [ \"${Service}\", { \"Service\": {\"Ref\" : \"AWS::StackName\" }} ]}]],
\"region\": \"us-east-1\",
\"stat\":\"Average\",
\"period\": 300,
\"view\": \"timeSeries\",
\"title\":\"CPUUtilization\",
\"stacked\": false } }]}"
}
}
仪表板主体是一个字符串,因此将
Sub
语法放在该字符串中会使其成为仪表板定义的一部分,从而使其无效
我建议切换到yaml语法。这将使您的仪表板定义更清晰,您可以像这样使用Sub
:
ExampleDashboard:
Type: AWS::CloudWatch::Dashboard
Properties:
DashboardName: 'SomeDashboard'
DashboardBody: !Sub |
{
"widgets": [
{
"type": "metric",
"x": 0,
"y": 0,
"width": 12,
"height": 6,
"properties": {
"metrics": [
[ "AWS/ECS", "CPUUtilization", "ServiceName", "${AWS::StackName}"]
],
"region": "us-east-1",
"stat": "Average",
"period": 300,
"view": "timeSeries",
"title": "CPUUtilization",
"stacked": false
}
}
]
}
以下是json中的相同内容:
"ExampleDashboard": {
"Type": "AWS::CloudWatch::Dashboard",
"Properties": {
"DashboardName": "SomeDashboard",
"DashboardBody": {
"Fn::Sub": "{\n \"widgets\": [\n {\n \"type\": \"metric\",\n \"x\": 0,\n \"y\": 0,\n \"width\": 12,\n \"height\": 6,\n \"properties\": {\n \"metrics\": [\n [ \"AWS/ECS\", \"CPUUtilization\", \"ServiceName\", \"${AWS::StackName}\"]\n ],\n \"region\": \"us-east-1\",\n \"stat\": \"Average\",\n \"period\": 300,\n \"view\": \"timeSeries\",\n \"title\": \"CPUUtilization\",\n \"stacked\": false\n }\n }\n ]\n}\n"
}
}
}
您可以在yaml模板中用JSON定义CloudWatch仪表板,如下所示:
示例仪表板:
类型:AWS::CloudWatch::Dashboard
特性:
仪表板名称:“SomeDashboard”
仪表板主体:!Sub'
{
“小部件”:[
{
“类型”:“公制”,
“x”:0,
“y”:0,
“宽度”:12,
“高度”:6,
“财产”:{
“指标”:[
[“AWS/ECS”、“CPUUtilization”、“ServiceName”、“${AWS::StackName}”]
],
“区域”:“us-east-1”,
“统计”:“平均值”,
“期间”:300,
“视图”:“timeSeries”,
“标题”:“CPUuUtilization”,
“堆叠”:错误
}
}
]
}
'
我无法将格式从JSON更改为YAML,因为JSON是我在所有项目中使用的标准格式。你知道如何将其转换为JSON吗?