2016-03-30 7 views
0

私は複数のawsアカウントを持っており、スクリプトを介してほとんどの作業を管理したいと考えています。私はELBに接続することができますが、EC2はbotoプロファイルを使用していますが、RDSで動作するのと同じメカニズムを見つけることはできません。 EC2接続の場合boto.rds2はbotoプロフィールを使用して任意の地域に接続します

私のサンプルfucntionは次のようになります。reg(領域)は、それはそれはAWSののbotoにおける領域セットのデフォルトを選択します、他のものを読みます機能するために渡された場合

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) 

。同様に、プロファイルにオプションが指定されていない場合は、botoからデフォルトプロファイルを取得します。

しかし、私はRDS接続で同じことをすることができません。私はのbotoプロファイルとRDSの接続のために働くことができると思ったが、残念ながら動作していない

サンプルコード:おっと、これは畏敬の念が

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) 

です! :

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

後のBoto RDS2は、その中のプロファイルのいずれかの方法を持っていません。私は私のボックス上で実行しています

後のBotoバージョンは以下の通りです:

>>> print boto.Version 
2.39.0 

同じ問題に直面したいずれか。任意の提案PLZ。

答えて

0

感謝。私はawsで複数のサービスにアクセスするためのモジュールを作っていましたが、今完成しています。私はawsの鍵、秘密の鍵、すべてを知る必要はありません。

私は、RDSの接続の問題を修正するための方法以下で使用:

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

これは、散在している情報を見つける必要がある通常のAWS要約(AKA poor documentation)です。 (Pythonのヘルプ()でも多くの情報が得られません)

これは動作するサンプルコードです。 〜/ .aws /資格ファイルがあり、ファイルに[default]エントリがあるとします。 (溶液試料はここhttp://boto3.readthedocs.org/en/latest/guide/configuration.html見出される)

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メソッドを使用して密接に似ているboto3 boto.rds2ため渡す引数の方法を変更します。

0

regionは、オプションのkey=valueパラメータの一部ではありません。が必要です。パラメータです。 boto.ec2.connect_to_regionでもそうです。

connect_to_region(region_name, **kw_params) 

だからあなたのコードは次のようになります。すべてのご提案を

rdsconn = boto.rds2.connect_to_region(boto.ec2.get_region(reg.strip()), profile_name=profile) 
関連する問題