amazon-web-services - 在 AWS CloudFormation 的 DashboardBody 中使用 Fn::FindInMap
问题描述
我正在使用 CloudFormation 创建一个 AWS CloudWatch 仪表板,并尝试在 DashboardBody 正文中使用Fn::FindInMap 。但是,该值没有被成功替换。有人可以帮忙吗?
下面是我的代码:
Mappings:
EnvSource:
Dev:
"SMSFailed": sns/us-east-1/XXX/DirectPublishToPhoneNumber/Failure
Resources:
MonitoringDashboard:
Type: "AWS::CloudWatch::Dashboard"
Properties:
DashboardName:
Monitoring-Test-Dashboard
DashboardBody:
!Sub "{\"widgets\":[{\"height\":6,\"width\":12,\"y\":1,\"x\":12,\"type\":\"log\",\"properties\":{\"query\":\"SOURCE 'Fn::FindInMap' : [ 'ABC', 'DomainParameters', 'DomainName'] | fields @timestamp, @message, delivery.providerResponse, status\\n| filter @message like //\\n|stats count(status) as ErrorCount by delivery.providerResponse\\n| sort @timestamp asc\",\"region\":\"us-east-1\",\"title\":\"SMS Failed\",\"view\":\"table\"}}]}"
解决方案
您可以使用以下列表形式Sub
:
Resources:
MonitoringDashboard:
Type: "AWS::CloudWatch::Dashboard"
Properties:
DashboardName:
Monitoring-Test-Dashboard
DashboardBody:
!Sub
- "{\"widgets\":[{\"height\":6,\"width\":12,\"y\":1,\"x\":12,\"type\":\"log\",\"properties\":{\"query\":\"SOURCE ${FindInMap} | fields @timestamp, @message, delivery.providerResponse, status\\n| filter @message like //\\n|stats count(status) as ErrorCount by delivery.providerResponse\\n| sort @timestamp asc\",\"region\":\"us-east-1\",\"title\":\"SMS Failed\",\"view\":\"table\"}}]}"
- DomainName: !FindInMap [ 'ABC', 'DomainParameters', 'DomainName']
推荐阅读
- python - Tensorflow v1.14 中的内核约束使用
- c# - 如何在 OpenGL 中直接使用屏幕空间坐标?
- kotlin - 安全控制器的测试
- node.js - 关于异步中复杂的商业逻辑
- javascript - 在 reactjs 中使用按钮创建显示和隐藏部分
- java - 如何找出从起点到终点经纬度的持续时间?
- android - 当我将可触摸之外的弹出窗口设置为错误时,编辑文本不会在弹出窗口中显示键盘
- ffmpeg - 将多个图像组合成一条图像 ffmpeg
- flexbox - 一个 flexbox 容器中的两个饼图
- apache-calcite - 如何将 Calcite 逻辑计划转换为另一个数据引擎的物理计划?