Amazon web services 如何在AWS CloudWatch模板中参数化实例id?
我正在尝试使用CPUUtilization指标配置仪表板。我们有12个实例,每周都会减少这些实例,如果没有这些底层实例,我们的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
{
"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')