mysql - 无法从 AWS Lambda 连接到默认 VPC 中的 AWS RDS 实例

标签 mysql amazon-web-services aws-lambda amazon-rds

我有一个正在运行的 RDS mysql 实例

  1. 其在默认 VPC 中分配给所有默认子网

  2. 有一个安全组,入站规则集用于监听所有流量,所有 协议(protocol), 所有端口范围和源 0.0.0.0/0

  3. 公开访问设置为 True

我能够从 SQl Workbench 以及本地 python 脚本连接到 RDS

-在我的 python lambda 函数中 -

  1. 已分配 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/

相关文章:

mysql - 将多个表连接到单个 mysql 表中,为每条记录添加新字段

mysql - Jdbc (mysql) unicode 行为

mysql - 如果第一行将被随机化,其余行应按标准排序,如何选​​择行

amazon-web-services - 托管在 AWS EC2 实例中的 Power BI 本地数据网关

amazon-s3 - Cloudfront 和 Lambda@Edge - 根据用户代理从自定义来源获取

mysql - SQL更新与where not in

java - 使用变量的值作为枚举值

javascript - AWS rekognition 和 s3 存储桶区域

amazon-web-services - AWS Lambda : Even after STS:AssumeRole was successful, lambda 函数仍然使用旧的 IAM 角色

amazon-ec2 - 通过 CloudFormation 模板基于可用 AMI 启动 EC2 实例