2016-03-30 6 views
0

Ich habe mehrere aws Konto und ich möchte den Großteil der Arbeit über Skript verwalten. Ich bin in der Lage, ELB, EC2 mit Boto-Profil zu verbinden, aber ich bin nicht in der Lage, den gleichen Mechanismus zu finden, um mit RDS zu arbeiten.boto.rds2 Verbindung zu einer beliebigen Region mit Boto-Profil

Für EC2 Verbindung sieht meine Probe fucntion wie folgt aus:

def Ec2Conn(reg,profile = 'default'): 
     ec2conn = '' 
     try: 
       ec2conn = boto.ec2.EC2Connection(profile_name=profile, region=boto.ec2.get_region(reg.strip())) 
     except Exception, e: 
       boto.log.error("Cannot validate provided AWS credentials: %s" % e) 
     return(ec2conn) 

Wenn reg (Region), um es Funktion übergeben wird, dass sonst lesen sie die Region als Standard festlegen in aws Boto wählt. Wenn keine Option für das Profil angegeben wird, wird das Standardprofil von boto übernommen.

Allerdings kann ich nicht das gleiche mit RDS-Verbindung tun.

Beispielcode, die ich dachte, für RDS-Verbindung mit Boto Profil arbeiten konnte aber leider nicht funktioniert:

def RDSConn(reg,profile = 'default'): 
     rdsconn = '' 
     try: 
       rdsconn = boto.rds2.connect_to_region(region=boto.ec2.get_region(reg.strip()), profile_name=profile) 
     except Exception, e: 
       boto.log.error("Cannot validate provided AWS credentials: %s" % e) 
     return(elbconn) 

Oops das ist Ehrfurcht !! :

>>> dir(boto.rds2) 
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'connect_to_region', 'get_regions', 'regions'] 
>>> 

Boto RDS2 hat keine Methode für das Profil darin.

Boto Version, die ich auf meiner Box leite ist wie folgt:

>>> print boto.Version 
2.39.0 

Irgend jemand, der das gleiche Problem konfrontiert. Irgendein Vorschlag plz.

Antwort

0

Vielen Dank für Ihren Vorschlag alle. Ich machte ein Modul für den Zugriff auf mehrere Dienste bei Aws, die jetzt abgeschlossen ist. Ich brauche den aws-Schlüssel, den geheimen Schlüssel und alles andere nicht. Ich habe meine Sachen ein für allemal automatisiert.

habe ich unten Art und Weise rds Verbindung Problem zu beheben:

def RDSConn(reg,profile = 'default'): 
     rdsconn = '' 
     endpt = 'rds.' + reg + '.amazonaws.com' 
     reg = boto.regioninfo.RegionInfo(name=reg,endpoint=endpt) 
     try: 
       rdsconn=boto.connect_rds2(profile_name=profile, region=reg) 
     except Exception, e: 
       boto.log.error("Cannot validate provided AWS credentials: %s" % e) 
     return(rdsconn) 
0

Dies ist üblich AWS zusammengefasst (AKA schlechte Dokumentation), dass Sie Informationen verstreut finden müssen. (Python Hilfe() gibt Ihnen auch nicht viel Informationen)

Dies ist der Beispielcode, der funktioniert. Angenommen, Sie haben eine ~/.aws/Anmeldedatei mit einem [Standard] -Eintrag in der Datei. (Die Lösungsprobe wird hier http://boto3.readthedocs.org/en/latest/guide/configuration.html gefunden)

rds_conn = boto.rds2.connect_to_region("eu-central-l", profile_name="default") 
#you cannot specifiy region=, and things like profile_name= not mentioned as arguments 

AWS den Weg des Arguments für boto.rds2 vorbei ändern, wobei das Verfahren unter Verwendung von eng boto3 ähneln.

0

region ist nicht Teil des optionalen Parameters key=value, es ist ein erforderlicher Parameter. Das gilt auch für boto.ec2.connect_to_region.

connect_to_region(region_name, **kw_params) 

So sollte Ihr Code sein:

rdsconn = boto.rds2.connect_to_region(boto.ec2.get_region(reg.strip()), profile_name=profile) 
Verwandte Themen