Amazon web services 它是AWS中处理事件的正确设计图吗?

Amazon web services 它是AWS中处理事件的正确设计图吗?,amazon-web-services,aws-lambda,message-queue,Amazon Web Services,Aws Lambda,Message Queue,我对AWS不是很有经验,所以我想检查一下我的设计图。处理检验事件的工作流可以按以下方式进行: 属于某个作业的检验事件应由EventHandlers分别为每个作业处理。然后将处理结果持久化到S3中。完成特定作业的处理和持久化后,EventConsumer应根据处理完成消息从S3检索结果 因此,为了将事件定向到EventHandler,我展示了SNS主题InspectionEvent 由于处理特定作业的事件需要大量资源,因此我们考虑为每个作业创建Lambda 如何为此Lambda创建触发器?在图中,

我对AWS不是很有经验,所以我想检查一下我的设计图。处理检验事件的工作流可以按以下方式进行:

属于某个作业的检验事件应由
EventHandlers
分别为每个作业处理。然后将处理结果持久化到S3中。完成特定作业的处理和持久化后,
EventConsumer
应根据处理完成消息从S3检索结果

因此,为了将事件定向到EventHandler,我展示了SNS主题InspectionEvent

由于处理特定作业的事件需要大量资源,因此我们考虑为每个作业创建Lambda

如何为此Lambda创建触发器?在图中,我展示了DynamoDB,如果出现新作业的检查事件,它可能会触发
EventHandler
Lambda。然后
EventHandler
从DynamoDB检索特定作业的事件,并在完成后将完成事件发布到另一个SNS主题–
eventprocessingeds
EventConsumer
获取特定作业的消息,并从S3检索结果

图像已附加。这个设计有意义吗?还有什么建议


首先,我建议使用SQS而不是SNS来启动图中的作业触发循环和图底部附近的事件消费者广场

AWS Lambda可以通过事件从SQS队列、S3更改或dynamodb中的更改中读取事件,因此我建议您使用它而不是SNS,SNS通常用于移动推送通知,或者需要向组发送多对多消息/通知的情况。在这种情况下,SQS是您想要的—有两个原因:

它对于生产者/消费者模式非常有效

  • 您可以将弹性Beanstalk消费者应用程序连接到SQS队列,并根据在服务器上执行的消费者的队列大小自动扩展
  • AWS Lambda可以直接从SQS队列读取事件,因此在无服务器作业处理队列中,异步运行Lambda函数的数量将随着队列吞吐量的增加而增加
  • 由于这种情况正是SQS设计的目的,因此它具有许多功能,您可以根据需要定制解决方案
要使用事件从其中一些源触发lambda函数,请执行以下操作:

  • (发电机B)
  • (S3)
  • (SQS)
此外,对于您的图表,请查看此工具,它非常适合AWS图表:

我不确定当事件处理结束时应该推荐什么-因为它看起来会触发事件消费者,所以我不确定满足什么要求。请随时发表评论,这里的任何人都可以帮助详细说明如何在活动结束时通知某些功能/资源的最佳实践,具体取决于您正在尝试做什么


祝你好运,希望这有帮助。

为什么你决定使用SNS而不是SQS?请查看。SNS允许推送到其他订户。坦白说,这是一个相当混乱的图表。事件使用者和事件处理程序是同义词。如果你要将其分解为多个服务,你应该定义目标。例如:MSVC A在执行某些操作时会发布。MSVC B将由a等的特定操作触发,因此…我希望利用Step功能来管理/协调事务。您可以利用服务集成来创建一个步骤,该步骤将向SNS发送消息,处理lambda,甚至在发生错误时处理错误。这也不需要DDB