【发布时间】:2020-01-30 05:24:43
【问题描述】:
我无法通过他们提供的测试示例使用 Lambda 函数连接到 RDS
这是代码:
import sys
import logging
import rds_config
import pymysql
#rds settings
rds_host = "connection_link"
name = rds_config.db_username
password = rds_config.db_password
db_name = rds_config.db_name
logger = logging.getLogger()
logger.setLevel(logging.INFO)
try:
conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=5)
except:
logger.error("ERROR: Unexpected error: Could not connect to MySql instance.")
sys.exit()
logger.info("SUCCESS: Connection to RDS mysql instance succeeded")
def handler(event, context):
"""
This function fetches content from mysql RDS instance
"""
item_count = 0
with conn.cursor() as cur:
cur.execute("create table Employee3 ( EmpID int NOT NULL, Name varchar(255) NOT NULL, PRIMARY KEY (EmpID))")
cur.execute('insert into Employee3 (EmpID, Name) values(1, "Joe")')
cur.execute('insert into Employee3 (EmpID, Name) values(2, "Bob")')
cur.execute('insert into Employee3 (EmpID, Name) values(3, "Mary")')
conn.commit()
cur.execute("select * from Employee3")
for row in cur:
item_count += 1
logger.info(row)
#print(row)
return "Added %d items from RDS MySQL table" %(item_count)
这是我的部署包的结构
app/pymysql/...
app/app.py
app/rds_config.py
app/PyMySQL-0.7.11.dist-info/...
我已将 app 文件夹内的所有文件打包成一个 zip 文件。
这是get的错误
"errorMessage": "RequestId: 96fb4cd2-79c1-11e7-a2dc-f97407196dbb 进程在完成请求前退出"
我已经在 MYSQL Workbench 上检查了我的 RDS 连接,它工作正常
【问题讨论】:
-
“他们提供的测试示例”是什么意思?能给个链接吗?
-
他们在文档link@JohnRotenstein 中提供的python 示例
-
您有复制/粘贴错误或
def handler(event, context):函数没有内容。换句话说,def handler(event, context):行之后的所有内容都需要添加一个选项卡。在 Python 代码中,空格是语法。在尝试处理 AWS Lambda 之前,您需要掌握所使用语言的基本语法。 -
代码编译正常。它给出了捕获错误“错误:意外错误:无法连接到 MySql 实例。” @MarkB
-
这不是会阻止代码编译的错误,而是会阻止代码按您期望的方式工作的错误。您需要修复缩进以匹配您链接到的示例。此外,为了实现连接,您的 Lambda 函数需要与 MySQL RDS 实例位于同一 VPC 中,并且 RDS 安全组需要对分配给您的 Lambda 函数的安全组开放。
标签: python amazon-web-services aws-lambda