我有一个正在运行的 RDS mysql 实例
其在默认 VPC 中分配给所有默认子网
有一个安全组,入站规则集用于监听所有流量,所有 协议(protocol), 所有端口范围和源 0.0.0.0/0
公开访问设置为 True
我能够从 SQl Workbench 以及本地 python 脚本连接到 RDS
-在我的 python lambda 函数中 -
已分配 AWSLambdaVPCAccessExecutionRole 、lambda_basic_execution 角色
2.Lambda未分配给任何VPC
我从 lambda 收到以下错误消息 "errorMessage": "RequestId: xx 进程在完成请求之前退出"
代码在尝试连接到数据库 get_database_connection() 时失败,并且在 block 日志记录消息除外logger.error("错误:意外错误:无法连接到 MySql 实例。")
lambda 是否可以连接到默认 VPC 中的 RDS 实例? lambda 未分配给任何 VPC
Lambda 代码
import sys
import logging
import package.pymysql
import logging
import package.pymysql.cursors
DATABASE_HOST = 'XXX'
DATABASE_USER = 'XXX'
DATABASE_PASSWORD = 'XXX'
DATABASE_DB_NAME = 'XXX'
port = 3306
def get_database_connection():
"Build a database connection"
conn = pymysql.connect(DATABASE_HOST, user=DATABASE_USER,
passwd=DATABASE_PASSWORD, db=DATABASE_DB_NAME, connect_timeout=5)
return conn
try:
conn = get_database_connection()
except:
logger.error("ERROR: Unexpected error: Could not connect to MySql instance.")
sys.exit()
logger.info("SUCCESS: Connection to RDS mysql instance succeeded")
def lambda_handler(event, context):
print("Lambda executed")
点击了此链接 [https://docs.aws.amazon.com/lambda/latest/dg/vpc-rds-deployment-pkg.html][1]
最佳答案
您需要做的是:
为默认 VPC 创建 2 个私有(private)子网
xxx.xxx.64.0/20
xxx.xxx.128.0/20
转到控制台中的 Lambda 函数。
向下滚动并在左侧选择默认 VPC。
Select the 2 Private Subnets as your subnets on your lambda function.
关于mysql - 无法从 AWS Lambda 连接到默认 VPC 中的 AWS RDS 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51012502/