【问题标题】:Use Fn::FindInMap in DashboardBody in AWS CloudFormation在 AWS CloudFormation 的 DashboardBody 中使用 Fn::FindInMap
【发布时间】:2021-09-20 19:50:33
【问题描述】:

我正在使用 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\"}}]}"

输出:

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation amazon-cloudwatch


    【解决方案1】:

    您可以使用Sub 中的list form

    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']
    

    【讨论】:

    • 谢谢!它对我来说非常好。
    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 2017-03-01
    • 2018-05-09
    • 1970-01-01
    • 2019-05-13
    • 2021-01-02
    • 1970-01-01
    相关资源
    最近更新 更多