5

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

我正在寻找最好的(也是最省时的)方法来将步进函数结束时的输出返回到移动设备。

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

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

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

4

1 回答 1

1

我会使用 Amazon SNS -> 推送通知。您说您想避免提出“许多请求”(并等待响应 - 或轮询)。

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

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

AWS SNS

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

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

这将避免轮询响应。

于 2017-07-26T13:35:55.830 回答