在json中使用Fn::ImportValue,json位于cloudformation中的yaml中



我正在为cloudwatch编写一个仪表板,使用基础设施作为代码来实现这一点。我在yaml文件的DashboardBody中有一个json,当我尝试在json的度量中使用函数fn::xxxx时,我的问题来了,如下所示:

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是丢弃的,因为我们正试图将所有迁移都使用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时可以看到核心结构。

相关内容

最新更新