我正在尝试使用表达式:在制作仪表板时在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;错误代码:
答案 0 :(得分:0)
这里没有几件事:
metrics
是一个数组数组,因此您的表达式应该用[]
包裹起来。MetricName=\"Count\"'
中的反斜杠,将其改为:MetricName=\\\"Count\\\"'
\"${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 } } ] } "
}
}
}
}
}