簡體   English   中英

在 cloudformation 中的 yaml 中的 json 中使用 Fn::ImportValue

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM