如何从API网关链接两个lambda函数

时间:2019-02-28 02:59:07

标签: amazon-web-services aws-lambda backend aws-api-gateway

我有两个lambda函数

Lambda 1:

def save_events(event):
result = []
conn = pymysql.connect(rds_host, user=name, passwd=password, 
db=db_name,connect_timeout=30)
with conn.cursor() as cur:
cur.execute("SELECT * FROM bodyparts")
for row in cur:
result.append(list(row))
cur.close()
bodyparts = json.dumps(result)
bodyParts=(bodyparts.replace("\"", "'"))
def lambda_handler(event, context):
save_events(event)
return bodyParts

Lambda 2:

def save_events(event):
result = []
conn = pymysql.connect(rds_host, user=, passwd=, db=, connect_timeout=30)
with conn.cursor(pymysql.cursors.DictCursor) as cur:
cur.execute("select exid,exercise_name,image from exercise where bid = 3")
result = cur.fetchall()
cur.close()
print ("Data from RDS...")
print (result)
workout = json.dumps(result)
workouts=(workout.replace("\"", "'"))
def lambda_handler(event, context):
save_events(event)
return workouts

在成功执行lambda 1之后,它将使用API​​网关将列表作为json对象返回给浏览器,现在将根据用户从lambda1函数输出中的选择,如何在API网关中调用lambda 2函数。 在lambda2中,如何在查询中将用户选择的项目作为“出价”值传递。 我知道理论部分,作为后端开发的初学者真的很喜欢实现部分,任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

我认为对您来说一个不错的选择是AWS Step Function。如果您使用步骤函数,则可以有2个状态,每个状态都具有lambda,状态1执行您的lambda 1,并将结果传递给第二个状态,并在其中执行lambda2。请记住,可以从API Gateway调用Step Functions,因此如果您使用的是API网关(如端点),则只需将目标更改为“阶梯函数”,而不是lambda函数。创建所有这些资源的一种好方法是使用swagger。无服务器应用程序模型(SAM)。