我目前有一个设置,我的移动前端执行图像的 AWS s3 上传。 s3 上传触发 AWS lambda 函数,该函数启动执行各种作业和操作的 AWS 步骤函数(状态机)。
我正在寻找最好的(也是最省时的)方法来将步进函数结束时的输出返回到移动设备。
一种方法是监控 executionARN
状态机,并在完成后获取数据。 awslabs lambda-refarch-imagerecognition 实现似乎就是这种情况here .但是,我的前端在移动设备上,我宁愿不必发送和接收许多请求来检查状态机是否已完成。
另一种可能的解决方案是重构流程,使 s3 上传成为一个独立事件,一旦成功,就向触发 step-function 的 AWS API 网关发出 API 请求。然后 API POST 请求将返回响应。这里的问题是应用程序必须等待 s3 响应才能继续启动状态机。
是否有更好的方法来执行此序列并接收响应。理想情况下,s3 上传将从状态机返回完整响应。这样就有一个请求(图像上传)和一个响应。
最佳答案
我会使用 Amazon SNS -> 推送通知。你说你想避免提出“很多请求”(并等待响应 - 或轮询)。
Amazon SNS 允许您发布到特定主题。
任何“订阅”到该主题的内容,将(接收通知/消息),无论何时(无状态更新)发布到该主题。
“移动前端”(您提到的设备)“将接收消息”/接收来自 SNS 端点/主题的推送通知。
这可以在“状态机”完成时触发,允许移动设备通过推送通知“获得及时更新”。
这将避免轮询响应。
关于amazon-web-services - 如何接收来自 AWS S3 触发的 lambda 函数的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45326052/