亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

BOTO3:在特定區域打印實例信息

BOTO3:在特定區域打印實例信息

暮色呼如 2023-06-20 15:46:21
我正在嘗試編寫一個 Python/BOTO3 腳本來獲取 us-east-1、us-west-1、ap-southeast-1 區域中的所有實例。我試圖收集的信息是:實例編號實例類型附加到實例的 IAM 角色列表項 所有告警的狀態我的目標是將其輸出到 CSV 文件。目前我已經走了這么遠,我有點卡住了,一些幫助將不勝感激:import boto3from collections import defaultdictregions = [    '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 :-)
查看完整描述

1 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

獲取所有警報是一個棘手的部分,因為除非您預先了解它們,否則很難找到所有警報。盡管如此,我還是以開發演示代碼為例CPUUtilization:


import boto3


regions = [

    '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, OK

us-east-1 i-0f7cd6d6123e6c47e t2.micro N/A


查看完整回答
反對 回復 2023-06-20
  • 1 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號