json - 设置 CloudWatch 仪表板的小部件。收到错误 "The dashboard body is invalid, there are 1 validation errors"

标签 json amazon-web-services aws-cloudformation amazon-cloudwatch amazon-cloudwatch-metrics

我无法在小部件中引用服务名称。

使用给定的代码出现以下错误: 仪表板正文无效,有 1 个验证错误:[ { "dataPath": "/widgets/0/properties/metrics/0", "message": "Should NOT have more than 3 items"} ] (服务:AmazonCloudWatch ;状态代码:400;错误代码:InvalidParameterInput

"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"
                }
            }
        }

关于json - 设置 CloudWatch 仪表板的小部件。收到错误 "The dashboard body is invalid, there are 1 validation errors",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56616110/

相关文章:

android - JSON 不适用于 Android Lollipop

json - Go 语言返回 JSON

jQuery GetJSON 安全问题。复制 URL 并粘贴到浏览器中

amazon-web-services - 如何运行 AWS ECS 任务覆盖环境变量

amazon-web-services - 如何创建CDK NestedStack?

aws-cloudformation - 有没有办法解析 Amazon Cloudformation 中的 EMR MasterPublicDNS?

php json数组问题

amazon-web-services - 数据湖 - S3 和 Databricks

ios - 如何使用 AWS Rekognition 在 Swift 3 中检测图像标签和人脸

amazon-web-services - 使用无服务器框架创建 S3 存储桶并添加文件