BOTO3:在特定区域打印实例信息

我正在尝试编写一个 Python/BOTO3 脚本来获取 us-east-1、us-west-1、ap-southeast-1 区域中的所有实例。

我试图收集的信息是:

  • 实例编号

  • 实例类型

  • 附加到实例的 IAM 角色

  • 列表项 所有告警的状态

我的目标是将其输出到 CSV 文件。

目前我已经走了这么远,我有点卡住了,一些帮助将不胜感激:

import boto3

from collections import defaultdict


regions = [

    'ap-southeast-1',

    'us-west-1',

    'us-east-1',

]


ec2 = boto3.resource('ec2',  region_name="us-east-2")


running_instances = ec2.instances.filter(Filters=[{

    'Name': 'instance-state-name',

    'Values': ['running']}])


ec2info = defaultdict()

for instance in running_instances:

    ec2info[instance.id] = {

        'Instance ID': instance.id,

        'State': instance.state['Name'],

        'Instance Type': instance.instance_type,


        }


attributes = ['Instance ID', 'State', "Instance Type"]

for instance_id, instance in ec2info.items():

    for key in attributes:

        print("{0}: {1}".format(key, instance[key]))

    print("------")```



Thanks in advance :-)


暮色呼如
浏览 94回答 1
1回答

Qyouu

获取所有警报是一个棘手的部分,因为除非您预先了解它们,否则很难找到所有警报。尽管如此,我还是以开发演示代码为例CPUUtilization:import boto3regions = [    'ap-southeast-1',    'us-west-1',    'us-east-1',]for region in regions:        ec2 = boto3.resource('ec2', region_name=region)          running_instances = ec2.instances.filter(Filters=[{        'Name': 'instance-state-name',        'Values': ['running']}])        cw = boto3.client('cloudwatch', region_name=region)            for instance in running_instances:                        instance_profile = 'N/A';                if instance.iam_instance_profile:            instance_profile = instance.iam_instance_profile['Arn']                print(region,               instance.id,               instance.instance_type,              instance_profile)                    alarms = cw.describe_alarms_for_metric(                    Namespace='AWS/EC2',                    MetricName='CPUUtilization',                    Dimensions=[                            {                                'Name': 'InstanceId',                                'Value': instance.id                            }]                    )                                        if 'MetricAlarms' in alarms:            for alarm in alarms['MetricAlarms']:                print(f" - {alarm['AlarmName']}, {alarm['StateValue']}")示例输出:us-west-1 i-0d45a86caf2ee0e71 t2.micro arn:aws:iam::353693526480:instance-profile/InstanceRole - awsec2-i-0d45a86caf2ee0e71-CPU-Utilization, OKus-east-1 i-0f7cd6d6123e6c47e t2.micro N/A
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python