如何从AWS S3触发lambda函数接收响应?

时间:2017-07-26 11:47:24

标签: amazon-web-services amazon-s3 lambda aws-step-functions aws-sdk-js

我目前有一个设置,我的移动前端执行AWS s3上传图像。 s3上载触发AWS lambda函数,该函数启动AWS步骤功能(状态机),执行各种作业和操作。

我正在寻找最好(也是最节省时间)的方法,让步骤功能结束时的输出回到移动设备。

一种方法是监视状态机的executionARN,并在完成后获取数据。这似乎是awslabs lambda-refarch-imagerecognition implementation here的情况。但是,我的前端是移动设备,我宁愿不必发送和接收许多请求来检查状态机是否已完成。

另一种可能的解决方案是重构流程,以便s3上传是一个独立的事件,一旦成功,就向AWS API网关发出API请求,触发步骤功能。然后,API POST请求将返回响应。这里的问题是应用程序必须等待s3响应才能继续启动状态机。

是否有更好的方法来执行此序列并接收响应。理想情况下,s3上传将返回状态机的完整响应。这种方式有一个请求(图像上传)和一个响应。

1 个答案:

答案 0 :(得分:0)

我会使用Amazon SNS - >推送通知。你说你想避免发出“许多请求”(等待回复 - 或者轮询)。

Amazon SNS允许您发布到特定主题。

任何“订阅”主题的内容,只要向主题发布一个(无状态更新),就会(收到通知/消息)。

AWS SNS

“移动前端”(设备 - 您提及)“将收到消息”/从SNS端点/主题接收推送通知。

这可以在“状态机”完成时触发,允许移动设备通过推送通知“及时更新”。

这样可以避免轮询回复。