【发布时间】:2020-02-10 22:33:00
【问题描述】:
我对 AWS 比较陌生,如果我要为以下场景正确设计 AWS Lambda,我很难理解:
- SQS 消息正在写入 AWS lambda 正在侦听并已触发的特定队列。
- AWS lambda on read sqs 消息将其进一步传递到多个目标,例如 SNS/DynamoDB/另一个 SQS 查询。
这个设计好吗?我应该将每个目标分成单独的 AWS lambda 还是应该成为其中的一部分?
AWS lambda 目标在其中的作用是什么?我应该为这些亚马逊服务中的每一个创建一个单独的目的地,还是 AWS 目标的目的不同? (比如处理成功/失败场景?)
不确定是否重要,但我打算使用 C# 语言编写此解决方案。
【问题讨论】:
-
lambda 函数几乎可以对从 SQS 队列中检索到的消息执行任何操作。它可以将消息进一步发布到 SNS,写入 DynamoDB 并将消息发布到 SQS,只需一次操作。您希望 lambda 函数用一条消息完成所有这三件事吗?
-
这个初始 Lambda 的目的仅仅是将消息的副本分发到多个目标(无论它们是其他 Lambda、SQS、SNS 等)吗?还是它实际上对消息进行处理(而不是转发它)?如果它全部转发它,那么您应该将 SNS 视为消息的原始目标,而不是 SQS,并且 SNS 主题有多个订阅者(例如 Lambda、SQS)。
-
仅分发,我首先考虑使用 SNS/Eventbridge,但据我所知,SNS 本身不支持转发到 DynamoDB 并且 EventBridge 很难完成工作(不确定是否有可能的?)。如果我必须使用 Lambda 进一步传递此消息,那么在初始目标上使用 SNS 和 SQS 是否有好处?
-
据我所知,没有任何东西支持自动转发到 DynamoDB。为什么会呢?您需要一个应用程序将数据写入 DynamoDB 表。
标签: c# amazon-web-services aws-lambda