【发布时间】:2021-07-26 18:13:56
【问题描述】:
我正在编写一个 lambda 函数,该函数将根据一些磁盘指标创建警报。到目前为止的代码如下所示:
import collections
from datetime import datetime
import calendar
def lambda_handler(event, context):
client = boto3.client('cloudwatch')
alarm = client.put_metric_alarm(
AlarmName='Disk Monitor',
MetricName='disk_used_percent',
Namespace='CWAgent',
Statistic='Maximum',
ComparisonOperator='GreaterThanOrEqualToThreshold',
Threshold=60.0,
Period=10,
EvaluationPeriods=3,
Dimensions=[
{
'Name': 'InstanceId',
'Value': '{instance_id}'
},
{
'Name': 'AutoScalingGroupName',
'Value': '{instance_id}'
},
{
'Name': 'fstype',
'Value': 'xfs'
},
{
'Name': 'path',
'Value': '/'
}
],
Unit='Percent',
ActionsEnabled=True)
正如所见,{instance_id} 是一个变量,因为它的想法是它将用于每个实例。但是,我想知道如何为AutoScalingGroupName 编写相同的代码,因为我也要求它也是一个变量。我知道下面为我提取了AutoScalingGroupName,但是我如何在语法方面将其添加到上面的块中,这是我的问题:
aws autoscaling describe-auto-scaling-instances --output text --query "AutoScalingInstances[?InstanceId == '<instance_dets>'].{AutoScalingGroupName:AutoScalingGroupName}"
例如,我是否可以添加如下开头的块:
def lambda_handler(event, context):
client = boto3.client('autoscaling')
如果是这样,我将如何在语法方面编写所需的代码以获取 'Value': '{AutoScalingGroupName}',我的意思是一个保存 ASG 的变量?
【问题讨论】:
-
instance_id和asg_name变量从何而来? -
它们是在系统级别设置的全局变量
标签: python lambda aws-lambda boto3