2016-12-01 1 views
2

Ich habe eine Lambda-Funktion, die derselben VPC- und Sicherheitsgruppe wie die RDS-Instanz zugewiesen ist.Zugriff auf nicht öffentlich zugängliche RDS/MYSQL von Lambda-Funktion nicht möglich

Die Sicherheitsgruppe lässt den gesamten eingehenden/ausgehenden Datenverkehr von überall zu.

Die Ausführung Rolle für die Lambda-Funktion hat AWSLambdaVPCAccessExecutionRole, AmazonVPCFullAccess und AmazonRDSFullAccess.

Aus irgendeinem Grund, wenn ich dies als ein geplantes Ereignis testen, bekomme ich immer diesen Fehler.

(2003: „Kann nicht zum MySQL-Server auf eine Verbindung '###. ###. Us-east-1.rds.amazonaws.com' ([Errno -3] Vorübergehende Fehler bei der Namensauflösung) ")

Soweit ich das sagen kann, sollte der Lambda in der gleichen VPC sein, wie Zugang zueinander haben. Ich verwende einen einfachen PYMSQL-Anruf.

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") 

Antwort

0

Der Grund, warum dies nicht funktioniert, weil die Subnetze ich die Lambda-Funktion zuzuweisen, bei der alle öffentlichen (aka - „Auto-zuweisen öffentlichen IP“) wasset auf Ja. Ich habe eines der Subnetze auf "Nein" gesetzt und nur dieses verwendet ... es hat funktioniert.

Wenn Sie wollen, dass Ihr Lambda innerhalb einer VPC arbeitet, vergeben Sie nur in PRIVATE SUBNETS!

Verwandte Themen