2016-12-01 19 views
2

私は、RDSインスタンスと同じVPCとセキュリティグループに割り当てられたラムダ関数を持っています。ラムダ関数から非公開アクセス可能なRDS/MYSQLにアクセスできない

セキュリティグループは、どこからでもすべての着信/発信トラフィックを許可します。

ラムダ関数の実行の役割は、AWSLambdaVPCAccessExecutionRoleAmazonVPCFullAccessAmazonRDSFullAccessを持っています。

私はスケジュールされたイベントとしてこれをテストするとき、私はいつもこのエラーを受け取ります。名前解決で

(2003年、「上のMySQLサーバに接続できません '###。###。us-east-1.rds.amazonaws.com'([ERRNO -3]一時的な障害) ")

ラムダは、同じVPC内で互いにアクセスする必要があると言うことができる限り、私は言うことができます。私は単純なPYMSQL呼び出しを使用しています。

try: 
    conn = pymysql.connect(str(os.environ['rds_host']), user=str(os.environ['db_username']), passwd=str(os.environ['db_password']), db=str(os.environ['db_name']), connect_timeout=20) 
except pymysql.MySQLError as e: 
    logger.error(e) 
    sys.exit() 

logger.info("SUCCESS: Connection to RDS mysql instance succeeded") 

答えて

0

サブネットが、私はラムダ関数を割り当てたので、これは働いていなかった理由がどこにあるすべてのパブリック - はいに(別名「自動割り当て公衆IP」)をwasset。サブネットの1つを「いいえ」に設定し、そのサブネットのみを使用していました。

ラムダをVPC内で動作させたい場合は、プライベートサブネットでのみ割り当ててください!