由于来自Cloudwatch的Expression String

时间:2019-08-15 20:12:16

标签: amazon-cloudformation amazon-cloudwatch

我正在尝试使用表达式:在制作仪表板时在CloudFormation中搜索。

{“ expression”:“ SEARCH('{AWS / ApiGateway,ApiName} MetricName = \” Count \“','Sum',300)”,“ id”:“ e1”}

上面的行在创建窗口小部件时直接取自Cloudwatch源。必须为CloudFormation修改此属性,因为CloudFormation中的Dashboard是字符串类型。

我将其更改为:

{\“ expression \”:\“ SEARCH('{AWS / ApiGateway,ApiName} MetricName = \” Count \“','Sum',300)\”,\“ id \”:\“ e1 \ “}

问题是,当我尝试通过此更改更新CloudFormation时,失败。

我尝试使用文档,但AWS没有针对此类问题的任何东西,而且我似乎找不到合适的资源来说明应如何解决。

任何帮助都会很棒,谢谢。

-编辑-

这是我的模板的摘要:

关于模板,我可以为您提供摘要:

\"properties\": 
{
\"metrics\":
[
{ \"expression\": \"SEARCH('{AWS/ApiGateway,ApiName}   MetricName=\"Count\"', 'Sum', 300)\", \"id\": \"e1\" }
],
\"period\": 300,
\"stat\": \"Average\",
\"region\": \"$${AWS::Region}\"
}

我可以告诉所有人,表达式本身就是问题所在。如果我要一起删除该表达式并保存/更新,我的模板CloudFormation将更新并推送,但是表达式本身会导致错误,可能是由于格式所致。

-编辑#2-

所以我一直在努力,并获得了一些新信息和新错误,但我认为这是向前迈出的一步。

{ \"expression\": \"SEARCH('{AWS/ApiGateway,ApiName} MetricName=\\\"Count\\\"', 'Sum', 300)\", \"id\": \"e1\" }

我工作中的一位开发人员给了我对代码的更改,认为它可以工作,但是却出现此错误。

The dashboard body is invalid, there are 2 validation errors:
[
{ "dataPath": "/widgets/4/properties/metrics/0", "message": "Should be array" }, 
{ "dataPath": "/widgets/4/properties/metrics/0", "message": "Field \"metrics\" has to be an array of array of strings, with an optional metricRenderer object as last element" } 
]

(服务:AmazonCloudWatch;状态代码:400;错误代码:

1 个答案:

答案 0 :(得分:0)

这里没有几件事:

  1. metrics是一个数组数组,因此您的表达式应该用[]包裹起来。
  2. 也应转义MetricName=\"Count\"'中的反斜杠,将其改为:MetricName=\\\"Count\\\"'
  3. 您在该区域只需要一个美元符号,请将其更改为\"${AWS::Region}\"。您还需要将仪表板主体包装到Sub块中,以使其正常工作。

这是一个与您所需要的相似的完整示例:

{
    "Resources": {
        "ExampleDashboard": {
            "Type": "AWS::CloudWatch::Dashboard",
            "Properties": {
                "DashboardName": "SomeDashboard",
                "DashboardBody": {
                     "Fn::Sub": "{ \"widgets\": [{\"type\": \"metric\", \"x\": 0, \"y\": 0, \"width\": 12, \"height\": 6, \"properties\": { \"metrics\": [ [ { \"expression\": \"SEARCH('{AWS/ApiGateway,ApiName}   MetricName=\\\"Count\\\"', 'Sum', 300)\", \"id\": \"e1\" } ] ], \"region\": \"${AWS::Region}\", \"stat\": \"Average\", \"period\": 300, \"view\": \"timeSeries\", \"title\": \"CPUUtilization\", \"stacked\": false } } ] } "
                 }
            }
        }
    }
}