我的设计是api会触发第一个lambda函数,这个函数然后发送sns并返回,sns触发第二个lambda函数。现在我希望api从第二个lambda函数得到响应。
这是流程: api从用户获取请求然后触发第一个lambda函数,第一个lambda函数创建一个sns并返回。现在api处于lambda函数阶段,仍在等待第二个lambda的响应。 sns触发第二个lambda函数;第二个lambda函数返回一些结果并将其传递给api。 api获得响应并将其发送回用户。
我知道有一种方法可以使用sdk来获取第二个lambda函数并设置事件类型以使其成为异步。但在这里我想使用sns,是否可能?
需要一些帮助/建议。提前谢谢!
答案 0 :(得分:0)
当然可以。 Lambda为您提供了一种方法来实现您想要的几乎任何任意功能,无论是将记录插入DynamoDB,从S3存储桶读取对象,计算电子商务网站上所选项目的税额,还是只是调用API 请注意,在这里你不需要任何事件来从lambda调用你的api,就像你直接调用api一样 在使用Node时,您只需使用http请求即可;像这样的东西:
console.log('username is ' + cognitoUser.getUsername());
答案 1 :(得分:0)
以下是您的问题可能出现的问题,但需要进行投票。
整合到 - > Lambda1
如果成功,则触发SNS清理存储桶中的响应数据,其中有效负载为SHA,将由另一个lambda清理。
现在,带有SHA的有效负载存在于SNS
中答案 2 :(得分:0)
你需要一些东西来与lambda_func_1共享lambda_func_2的返回,api网关请求上下文仅在你在func1上调用#Do a group by on df_one on A, B, and C and find the mean
df_group = df_one.groupby(['A','B','C']).mean()
#Change the index
df_two.index = [df_two['A'],df_two['B'],df_two['C']]
#Transfer the value of mean from D to
df_two['D'] = df_group['D']
时返回,你不能保存或发送callback
到另一个lb_func。
我的解决方案是使用Dynamodb(或每个数据库)来共享f2的结果。
F1向sns发送数据,日期包括request contex
(uuid或timestamp)等密钥。然后“等待”直到F1收到表中的结果(例如:tbl_f2_result)并执行transactionID
函数并返回结果。也许用callback
查询,直到你收到数据或只尝试10次(一次超时2秒,最坏的情况下你会等20秒)
F2被SNS触发,用数据包括transactionID
然后将结果(成功或不成功,错误消息......)插入结果表(transactionID
){{1 }} => tbl_f2_result
,回调结束F2。
transactionID
是表的索引键:D
你必须增加F1的超时 - 默认为6秒。