Amazon web services 如何在AWS CloudWatch模板中参数化实例id?

Amazon web services 如何在AWS CloudWatch模板中参数化实例id?,amazon-web-services,amazon-cloudformation,amazon-cloudwatch,Amazon Web Services,Amazon Cloudformation,Amazon Cloudwatch,我正在尝试使用CPUUtilization指标配置仪表板。我们有12个实例,每周都会减少这些实例,如果没有这些底层实例,我们的Cloudwatch仪表板就会过时。 下次启动新的服务器集时,我们必须手动转到仪表板并使用新的实例ID对其进行编辑 这是一个手动过程,我们需要将其自动化。 我附上了我们用于当前仪表板的基本模板 { "widgets": [ { "type": "metric", "x": 0, "y": 0, "wi

我正在尝试使用CPUUtilization指标配置仪表板。我们有12个实例,每周都会减少这些实例,如果没有这些底层实例,我们的Cloudwatch仪表板就会过时。 下次启动新的服务器集时,我们必须手动转到仪表板并使用新的实例ID对其进行编辑 这是一个手动过程,我们需要将其自动化。 我附上了我们用于当前仪表板的基本模板

{
"widgets": [
    {
        "type": "metric",
        "x": 0,
        "y": 0,
        "width": 9,
        "height": 9,
        "properties": {
            "view": "timeSeries",
            "stacked": false,
            "metrics": [
                [ "AWS/EC2", "CPUUtilization", "InstanceId", "i-0894e335e6ad2e561", { "period": 60 } ],
                [ "...", "i-01fde0cee726e7896", { "period": 60 } ],
                [ "...", "i-096e96499aa827924", { "period": 60 } ],
                [ "...", "i-0e550d881bcbf41c5", { "period": 60 } ],
                [ "...", "i-041a59616f061a373", { "period": 60 } ],
                [ "...", "i-06a6237975ec0f274", { "period": 60 } ],
                [ "...", "i-052f844dd071eab25", { "period": 60 } ],
                [ "...", "i-02dfa8d807c1f5477", { "period": 60 } ],
                [ "...", "i-0cda118fc6e375093", { "period": 60 } ],
                [ "...", "i-02ef6dfd642f2ffd4", { "period": 60 } ],
                [ "...", "i-0e0e9c12d672a48a7", { "period": 60 } ],
                [ "...", "i-0eb432b4098c4e9d8", { "period": 60 } ]
            ],
            "region": "ap-southeast-2",
            "period": 300,
            "title": "TEST CPU Utilization",

        }
    }

]

知道如何解决吗?

我会通过生成相关的CloudFormation来实现这一点,特别是使用模板语言和bash脚本来引导模板

根据您选择的模板语言的语法,我希望您的模板文件如下所示:

...more cloudformation...
{
"widgets": [
    {
        "type": "metric",
        "x": 0,
        "y": 0,
        "width": 9,
        "height": 9,
        "properties": {
            "view": "timeSeries",
            "stacked": false,
            "metrics": [
                <% for instance in instances { %>
                    [ "AWS/EC2", "CPUUtilization", "InstanceId", "<% instance.id %>", { "period": 60 } ],
                <% } %> 
            ],
            "region": "ap-southeast-2",
            "period": 300,
            "title": "TEST CPU Utilization",
        }
    }

]
}
... more cloudformation...
这个命令应该从上面提到的同一个脚本运行,并将输出馈送到模板引擎


请注意,[tagName]和[tagValue]应替换为您自己提供给上述实例的标记名和tagValue。您可以在新运行的实例上触发cloudwatch事件

将lambda函数定义为目标函数,在其中,您可以:

cloudwatch事件将告诉您触发了哪个实例ID,您可以在提到的api调用中使用它

您还可以侦听terminate事件,并将实例自动从仪表板中删除

{
"widgets": [
    {
        "type": "metric",
        "x": 0,
        "y": 0,
        "width": 9,
        "height": 9,
        "properties": {
            "view": "timeSeries",
            "stacked": false,
            "metrics": [
                [ "AWS/EC2", "CPUUtilization", "InstanceId", "i-0894e335e6ad2e561", { "period": 60 } ],
                [ "...", "i-01fde0cee726e7896", { "period": 60 } ],
                [ "...", "i-096e96499aa827924", { "period": 60 } ],
                [ "...", "i-0e550d881bcbf41c5", { "period": 60 } ],
                [ "...", "i-041a59616f061a373", { "period": 60 } ],
                [ "...", "i-06a6237975ec0f274", { "period": 60 } ],
                [ "...", "i-052f844dd071eab25", { "period": 60 } ],
                [ "...", "i-02dfa8d807c1f5477", { "period": 60 } ],
                [ "...", "i-0cda118fc6e375093", { "period": 60 } ],
                [ "...", "i-02ef6dfd642f2ffd4", { "period": 60 } ],
                [ "...", "i-0e0e9c12d672a48a7", { "period": 60 } ],
                [ "...", "i-0eb432b4098c4e9d8", { "period": 60 } ]
            ],
            "region": "ap-southeast-2",
            "period": 300,
            "title": "TEST CPU Utilization",

        }
    }

]
最后,确保您的代码完全针对您想要的实例运行。我建议你用一个标签

client.put_dashboard(DashboardName='string', DashboardBody='string')