![](/img/trans.png)
[英]Cloudformation ImportValue within ParameterOverride CodePipeline
[英]use Fn::ImportValue inside a json which is inside a yaml in cloudformation
我正在使用基础设施即代码为 cloudwatch 编写一个仪表板来实现这一点我在 yaml 文件的 DashboardBody 中有一个 json 当我尝试在 json 的指标中使用 function 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
知道这是否可行吗? 关于 migrate all to yaml 被丢弃了,因为我们正在准备 migrate all to use Amazon CDK
并且迁移会浪费时间。
对名称进行硬编码是可行的,但由于负载均衡器也在 cloudformation 上,我无法做到这一点。
谢谢。
我认为应该可以使用数组形式的!Sub来做到这一点:
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
时可以看到核心结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.