2016-05-10 3 views
1

Ich habe versucht, ein Python-Skript folgendermaßen auszuführen python script.py -env - Rolle, um Instanzen für angegebene Umgebungs- und Rollenwerte abzurufen. Hier ist mein Skript:Python-Skript zum Auflisten von Instanzen basierend auf benutzerdefinierten Tags Werte, die während der Skriptausführung übergeben wurden

import argparse 
    import boto.ec2 

    AWS_ACCESS_KEY_ID = '<xxxxxx>' 
    AWS_SECRET_ACCESS_KEY = '<xxxxx>' 
    ec2conn = boto.ec2.connection.EC2Connection(AWS_ACCESS_KEY_ID,   AWS_SECRET_ACCESS_KEY) 

    env = '' 
    role = '' 

    def get_ec2_instances(): 
    regions = ['us-east-1','us-west-1','us-west-2','eu-west-1','sa-east-1', 
       'ap-southeast-1','ap-southeast-2','ap-northeast-1'] 
    parser = argparse.ArgumentParser() 
    parser.add_argument('env', help='tag:environment'); 
    parser.add_argument('role', help='tag:role'); 
    args = parser.parse_args() 
    global env 
    global role 
    env = args.env 
    role = args.role 

    reservations = ec2conn.get_all_instances(filters={"tag:environment" : "env","tag:role" : "role"}) 
    #reservations = ec2conn.get_all_instances() 
    inst = [i for r in reservations for i in r.instances] 
    for i in inst: 
     print "%s" % (i.tags['Name']) 

    if __name__ =='__get_ec2_instances__':get_ec2_instances() 

Sein keinen Fehler zu werfen und kein Ergebnis ..

+0

'inst' Liste ist wahrscheinlich leer ... – mvelay

+0

Und Sie haben eine Vertiefung Fehler, so dass die letzte' if' Anweisung wird nicht ausgeführt. –

+0

Fixed Indentation Fehler immer noch nicht funktioniert – Titto

Antwort

0

Dies ist typisch Fracht-Kult-Codierung, die Sie nicht verstehen, was Sie kopieren, vor allem den argparse Teil, die Name Teil, auch die für den nächsten Teil. Auch Boto ist veraltet! Boto ist veraltet! Boto ist veraltet! Verwenden Sie Boto3.

import argparse 
import boto3 

def get_ec2_instances(Env,Role): 
    ec2 = boto3.client("ec2") 
    reservations = ec2.describe_instances(Filters= 
      [{ 
       "Name": "tag:environment", 
       "Values" : [Env], 
      },{ 
       "Name": "tag:role", 
       "Values" : [Role] 
      }]) 
    # following for diagnostic purposes 
    # reservations = ec2.describe_instances() 
    for reservation in reservations["Reservations"] : 
     for instance in reservation["Instances"]: 
      print "instance {} : Name:{} ".format(instance["InstanceId"], instance["Tags"][0]['Value']) 


if __name__ == '__main__': 
    parser = argparse.ArgumentParser() 
    parser.add_argument('env', default="environment", help='value for tag:environment'); 
    parser.add_argument('role', default="role", help='value for tag:role'); 
    args = parser.parse_args() 

    get_ec2_isntance(args.env, args.role) 

filters is one of the poorly documented boto3 "magic"

+0

Immer noch Fehler "Ungültiger Typ für Parameter Filter, Wert: {'Tag: Rolle': 'es', 'Tag: Umgebung': 'qa'}, Typ: , gültige Typen: , " – Titto

Verwandte Themen