首页 > 解决方案 > 在 Cloudwatch 仪表板模板 (Cloudformation) 中使用伪变量

问题描述

我正在尝试设置 Cloud Formation 模板来创建 Cloudwatch-Dashboard。在这种情况下,我想使用伪变量来确定区域。

如果我只是使用伪变量AWS::Region,代码似乎不起作用:

AutoscalingDashboard:
Type: AWS::CloudWatch::Dashboard
Properties:
  DashboardName: AutoscalingDashboard
  DashboardBody: '
     {
      "widgets":[
        {
            "type":"metric",
            "x":0,
            "y":0,
            "width":12,
            "height":6,
            "properties":{
                "metrics":[
                    [ "AWS/ECS", "MemoryUtilization", "ServiceName", "invoice_web", "ClusterName", "InvoicegenappCluster" ],
                    [ "...", "invoice_data", ".", "." ],
                    [ "...", "invoice_generator", ".", "." ]
                ],
                "region": "AWS::Region",
                "period": 300,
                "view": "timeSeries",
                "title":"ECS MemoryUtilization",
                "stacked": false
            }

如何使用伪变量AWS::RegionRef函数来动态保持变量?

谢谢

标签: amazon-cloudformation

解决方案


在您的示例中, theDashboardBody是一个字符串,因此AWS::Region不会被替换。添加该功能可能会更好Fn::Sub,例如:

AutoscalingDashboard:
  Type: 'AWS::CloudWatch::Dashboard'
  Properties:
    DashboardName: 'AutoscalingDashboard'
    DashboardBody: !Sub >-
     {
      "widgets":[
         {
            "type":"metric",
            "x":0,
            "y":0,
            "width":12,
            "height":6,
            "properties":{
                "metrics":[
                    [ "AWS/ECS", "MemoryUtilization", "ServiceName", "invoice_web", "ClusterName", "InvoicegenappCluster" ],
                    [ "...", "invoice_data", ".", "." ],
                    [ "...", "invoice_generator", ".", "." ]
                ],
                "region": "${AWS::Region}",
                "period": 300,
                "view": "timeSeries",
                "title":"ECS MemoryUtilization",
                "stacked": false
            }           
          }]
      }

注意${}周围的区域,还有 YAML块字符串>-


推荐阅读