使用 boto3 在 aws 中其 CPU 扩展策略低于特定阈值的所有自动扩展组的列表

Posted

技术标签:

【中文标题】使用 boto3 在 aws 中其 CPU 扩展策略低于特定阈值的所有自动扩展组的列表【英文标题】:list of all autoscaling groups whose scaling policy on CPU is below certain threshold in aws using boto3 【发布时间】:2021-04-27 06:05:13 【问题描述】:

我有一堆 ASG 想要使用 boto3 来获取所有在 CPU 上的扩展策略小于某个阈值的 ASG 名称(即所有设置了扩展策略且值


client = boto3.client('autoscaling', region_name='region_name')
response = client.describe_auto_scaling_groups()
#print(response)

# function to get all asg_names 
def get_asg_names():
    for asg_name in response['AutoScalingGroups']:
        asg_list = ((asg_name['AutoScalingGroupName']))
        #print(asg_list)
        get_scaling_policy_values(asg_list)

#print((asg_list))
asg_dict_map = dict()

def get_scaling_policy_values(asg_list):
    response2 = client.describe_policies(AutoScalingGroupName = asg_list)
    #print(response2)
    for policy_name in response2['ScalingPolicies']:
        asg_name_with_policy = policy_name['AutoScalingGroupName']
        target_value = policy_name['TargetTrackingConfiguration']['TargetValue']
        asg_dict_map[asg_names_with] =  asg_dict_map[target_value]
        #asg_dict_map['key'] = policy_name['AutoScalingGroupName']
        #asg_dict_map['value'] = policy_name['TargetTrackingConfiguration']['TargetValue']

get_asg_names()
print(asg_dict_map)```

【问题讨论】:

【参考方案1】:

你会:

使用describe_auto_scaling_groups() 获取Auto Scaling 组列表 对于他们每个人,调用 describe_policies() 并传入 Auto Scaling 组的名称 检查返回的配置并进行比较

您的代码稍作修改:

import boto3

asg_dict_map = dict()

client = boto3.client('autoscaling')
response = client.describe_auto_scaling_groups()

for asg in response['AutoScalingGroups']:
    asg_name = asg['AutoScalingGroupName']

    response2 = client.describe_policies(AutoScalingGroupName = asg_name)
    for policy in response2['ScalingPolicies']:
        policy_name = policy['AutoScalingGroupName']
        target_value = policy['TargetTrackingConfiguration']['TargetValue']
        asg_dict_map[policy_name] = target_value

print(asg_dict_map)

【讨论】:

嘿@john 我已经更新了,看看你能不能帮忙 asg_dict_map[asg_names_with] = asg_dict_map[target_value] 行试图从asg_dict_map 访问一个尚不存在的值。我想你的意思是使用:asg_dict_map[asg_name_with_policy] = target_value 但即使有多个具有扩展策略的 ASG,dict 始终是 returnign 单个项目 我在答案中添加了一些更新的代码。 非常感谢@john 的作品现在不得不在 for 循环中添加 try excepe 块

以上是关于使用 boto3 在 aws 中其 CPU 扩展策略低于特定阈值的所有自动扩展组的列表的主要内容,如果未能解决你的问题,请参考以下文章

Python使用boto3操作AWS S3中踩过的坑

如何:Zeppelin + boto3 + AWS 凭证

AWS Glue - boto3 爬虫未创建表

AWS 成本浏览器 boto3

使用 BOTO3 为 AWS Api Gateway 自动化 CORS

使用 boto3 在两个 AWS S3 存储桶之间移动文件