列出带有标记的AWS实例的Boto问题

2024-03-29 12:25:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我对我的AWS实例使用自定义标记。我试图在CSV文件中列出所有实例(运行和停止)。作为一名程序员,我搜索并复制/粘贴代码,并附带了一个运行良好的脚本。但是我注意到,如果缺少一个标记,那么脚本就会抛出一个错误并停止在那里。如果标记已创建但为空,则脚本将打印空白,但如果根本没有创建标记,则脚本将停止。例如,如果缺少标记Owner,那么它抛出一个错误keyrerror:'Owner',并在那里停止。我的剧本贴在下面。有人能告诉我需要做些什么更改,这样如果标记不存在,脚本就会打印出N/A而不是停止。在

#!/usr/bin/env python
import boto.ec2 
from boto.ec2 import EC2Connection
csv_file = open('/home/sbasnet/Scripts/Instances/instances_east.csv','w+')
 def process_instance_list(connection):
    map(build_instance_list,connection.get_all_instances())
 def build_instance_list(reservation):
    map(write_instances,reservation.instances)
 def write_instances(instance):
    if (instance.platform == 'windows'):
        platform = 'Windows'
    else:
        platform = 'Linux'
    csv_file.write("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n"%(instance.id,instance.private_ip_address,instance.tags['Classification'],instance.tags['FQDN'],instance.tags['Owner'],instance.tags['RunType'],instance.instance_type,instance.subnet_id,instance.key_name,platform,instance.placement))
    csv_file.flush()
 if __name__=="__main__":
    connection = EC2Connection(aws_access_key_id='ACCESS',aws_secret_access_key='SECRET')
    process_instance_list(connection)
    csv_file.close()

TIA公司 sbasnet公司


Tags: csvinstancesinstancekey标记脚本iddef
1条回答
网友
1楼 · 发布于 2024-03-29 12:25:37

也许这样的事情就可以了?在

警告:未测试

#!/usr/bin/env python
import boto.ec2 
from boto.ec2 import EC2Connection

csv_file = open('/home/sbasnet/Scripts/Instances/instances_east.csv','w+')

def process_instance_list(connection):
    map(build_instance_list,connection.get_all_instances())

def build_instance_list(reservation):
    map(write_instances,reservation.instances)

def get_tag(tags, tag_name):
    if tag_name in tags.keys():
        return tags[tag_name]
    else:
        return "N/A"

def write_instances(instance):
    if instance.platform == 'windows':
        platform = 'Windows'
    else:
        platform = 'Linux'
    csv_file.write("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n"%(instance.id,
                                                         instance.private_ip_address,
                                                         get_tag(instance.tags, "Classification"),
                                                         get_tag(instance.tags, "FQDN"),
                                                         get_tag(instance.tags, "Owner"),
                                                         get_tag(instance.tags, "RunType"),
                                                         instance.instance_type,
                                                         instance.subnet_id,
                                                         instance.key_name,
                                                         platform,
                                                         instance.placement))
    csv_file.flush()


if __name__=="__main__":
    connection = EC2Connection(aws_access_key_id='ACCESS',aws_secret_access_key='SECRET')
    process_instance_list(connection)
    csv_file.close()

相关问题 更多 >