amazon-web-services - 如何接收来自 AWS S3 触发的 lambda 函数的响应?

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

我目前有一个设置,我的移动前端执行图像的 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 允许您发布到特定主题。

任何“订阅”到该主题的内容,将(接收通知/消息),无论何时(无状态更新)发布到该主题。

AWS SNS

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

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

这将避免轮询响应。

关于amazon-web-services - 如何接收来自 AWS S3 触发的 lambda 函数的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45326052/

相关文章:

amazon-web-services - 如何从CfnStack中获取资源?

c# - .NET v 5.0 缺少 Amazon S3 SelectObjectContent 支持?

amazon-s3 - 我可以为 cloudflare 设置 aws S3 策略吗?

c++ - 是否可以使用默认泛型参数在 C++ 中定义 lambda?

c# - 扩展方法中的 Lambdas : Possible memory leak?

amazon-web-services - 本地镜像大小和 ECR 图像大小不同 - 为什么?

java - AWS Pinpoint - 如何在程序中设置推送通知

c++ - 为什么我的签名与亚马逊的示例不同? (C++/REST/授权签名版本 4)

amazon-s3 - S3 Select 中的聚合函数

c++ - 如何在C++ Lambda中捕获 vector 中的元素?