我正在使用基础架构的代码为cloudwatch写一个仪表盘,为了实现这个目标,我在yaml文件的DashboardBody里有一个json,我的问题是,当我试图使用一个函数 fn::xxxx
在json的metrics里面,如下所示。
Resources:
DashboardTestYAML:
Type: AWS::CloudWatch::Dashboard
Properties:
DashboardName: SummaryDashboard
DashboardBody: '{
"widgets": [{
"type": "metric",
"x": 0,
"y": 0,
"width": 6,
"height": 6,
"properties": {
"metrics": [
[ "AWS/ApplicationELB", "RequestCount", "LoadBalancer", {"Fn::ImportValue": "LoadBalancerFullName"} ]
],
"view": "timeSeries",
"stacked": false,
"region": "eu-west-1",
"stat": "Sum",
"period": 300,
"title": "Load-blancer-requests"
}
}]
}'
我尝试了以下方法,但都没有用(有些甚至不是有效的json,但尝试是免费的。
{"Fn::ImportValue": "LoadBalancerFullName"}
"{"Fn::ImportValue": "LoadBalancerFullName"}"
'{"Fn::ImportValue": "LoadBalancerFullName"}'
{Fn::ImportValue: LoadBalancerFullName}
Fn::ImportValue: LoadBalancerFullName
-Fn::ImportValue: LoadBalancerFullName
任何想法,如果这是可能的做法?关于全部迁移到yaml的问题,我们放弃了,因为我们要把所有的迁移到yaml上使用。Amazon CDK
和迁移将是浪费时间。
硬编码的名称是可行的,但由于负载均衡器也在cloudformation上,我不能这样做。
谢谢。
我想应该可以用以下方法来实现这一点 !"子 以数组形式出现。
DashboardBody:
!Sub
- |
{
"widgets": [{
"type": "metric",
"x": 0,
"y": 0,
"width": 6,
"height": 6,
"properties": {
"metrics": [
[ "AWS/ApplicationELB", "RequestCount", "LoadBalancer", "${LoadBalancerName}" ]
],
"view": "timeSeries",
"stacked": false,
"region": "eu-west-1",
"stat": "Sum",
"period": 300,
"title": "Load-blancer-requests"
}
}]
}
- LoadBalancerName: !ImportValue LoadBalancerFullName
我的语法或意图可能有误, 但我认为可以看到核心结构,当... ... !Sub
是用。