Amazon web services Can';t通过Lambda函数访问非公开访问的RDS/MYSQL

Amazon web services Can';t通过Lambda函数访问非公开访问的RDS/MYSQL,amazon-web-services,lambda,rds,Amazon Web Services,Lambda,Rds,我有一个Lambda函数,分配给与RDS实例相同的VPC和安全组 安全组允许来自任何地方的所有入站/出站流量 Lambda函数的执行角色具有AWSLambdaVPCAccessExecutionRole、AmazonVPCFullAccess和AmazonRDSFullAccess 由于某些原因,当我将其作为计划事件进行测试时,总是会出现此错误 (2003年,“无法连接到“#######美国东部-1.rds.amazonaws.com”上的MySQL服务器([Errno-3]名称解析暂时失败)”

我有一个Lambda函数,分配给与RDS实例相同的VPC和安全组

安全组允许来自任何地方的所有入站/出站流量

Lambda函数的执行角色具有AWSLambdaVPCAccessExecutionRoleAmazonVPCFullAccessAmazonRDSFullAccess

由于某些原因,当我将其作为计划事件进行测试时,总是会出现此错误

(2003年,“无法连接到“#######美国东部-1.rds.amazonaws.com”上的MySQL服务器([Errno-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")

这不起作用的原因是,我分配Lambda函数的子网将all public(又称“Auto assign public IP”)设置为Yes。我将其中一个子网设置为“否”,并仅使用了该子网……它起作用了

如果您希望Lambda在专有网络内运行,请仅在专用子网中分配