2016-12-01 91 views
2

我有一個Lambda函數,它與RDS實例分配給相同的VPC和安全組。無法從Lambda函數訪問非公開訪問的RDS/MYSQL

安全組允許來自任何地方的所有入站/出站流量。

的lambda函數的執行角色有AWSLambdaVPCAccessExecutionRoleAmazonVPCFullAccessAmazonRDSFullAccess

由於某種原因,當我測試這個計劃的事件時,我總是得到這個錯誤。

(2003年,「無法連接到MySQL服務器上的 '###。###。us-east-1.rds.amazonaws.com'([錯誤-3]臨時名稱解析失敗)「)

據我可以告訴Lambda應該在相同的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

這是不工作的原因是因爲子網我被分配lambda函數,所有公共(又名 - 「自動分配公網IP」)wasset爲是。我將其中一個子網設置爲「否」,只使用那個.....它工作。

如果您希望您的Lambda在VPC內部運行,只需在私有子網中進行分配!