使用 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 扩展策略低于特定阈值的所有自动扩展组的列表的主要内容,如果未能解决你的问题,请参考以下文章