簡體   English   中英

如何在CloudWatch儀表板模板中使用參數

[英]How to use Parameters in CloudWatch Dashboard template

我想創建一個CloudFormation模板來創建CloudWatch儀表板。 以下是模板代碼-

Parameters:
    MyEnvironment:
        Type: String
        Default: "do"
        Description: "Specifies the environment of the platform."
Resources:
    MyServiceDashboard:
        Type: AWS::CloudWatch::Dashboard
        Properties:
            DashboardName: "Test-My-Dashboard"
            DashboardBody: >
                {
                    "widgets": [
                        {
                            "type": "metric",
                            "x": 15,
                            "y": 18,
                            "width": 6,
                            "height": 6,
                            "properties": {
                                "view": "timeSeries",
                                "stacked": false,
                                "metrics": [
                                    [ "AWS/Kinesis", "GetRecords.IteratorAgeMilliseconds", "StreamName", 
"${MyEnvironment}-my-data-out"
                                    ]...

我正在嘗試使用MyEnvironment參數,該參數將在我實際使用此模板創建堆棧時提供。

問題是使用此方法創建了stack / dashbaord,但未在Dashboard指標中使用參數值,而是使用了"${MyEnvironment}-my-data-out"而不是"Dev-my-data-out"我已將"MyEnvironment"值提供為"Dev"

我嘗試了此鏈接中指定的方法- 在Cloudwatch儀表板模板(Cloudformation)中使用偽變量,但是當使用Sub >-關鍵字時, CloudFormation顯示無效的模板。

“ MyEnvironment”不是偽變量。 它僅適用於AWS變量,例如region。 如果要進行參數化,則需要使用“ Ref”。

    Parameters:
MyEnvironment:
    Type: String
    Default: "do"
    Description: "Specifies the environment of the platform."
    Resources:
MyServiceDashboard:
    Type: AWS::CloudWatch::Dashboard
    Properties:
        DashboardName: "Test-My-Dashboard"
        DashboardBody: >
            {
                "widgets": [
                    {
                        "type": "metric",
                        "x": 15,
                        "y": 18,
                        "width": 6,
                        "height": 6,
                        "properties": {
                            "view": "timeSeries",
                            "stacked": false,
                            "metrics": [
                                [ "AWS/Kinesis", "GetRecords.IteratorAgeMilliseconds", "StreamName",  {"Ref" : "MyEnvironment"}

                              ]... 

直接在MyEnvironment參數中傳遞“ Dev-my-data-out”,以避免復雜化。

嘗試各種選項之后,找到了解決辦法, 重要的 一點就是使用!Sub功能,否則參數值未在JSON字符串替換。

        DashboardName: "Test-My-Dashboard"
        DashboardBody: !Sub '{
                "widgets": [

注意DashboardBody屬性中的!Sub函數。 之后,您可以使用${PARAMETER_NAME}格式來引用參數值。

子功能文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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