AWS Lambda删除的SQS轮询有哪些缺点?

时间:2017-06-10 03:18:47

标签: aws-lambda amazon-sqs

我有一个如下所示的架构: -

多个SNS - > (AWS Lambda或带轮询器的SQS)??? - > Dynamo Db

因此,基本上多个SNS已经使用Poller订阅了AWS Lambda或SQS,并将该数据推送到Dynamo Db。

但是这个?事情之间做了许多信息的转换。所以,现在对于这种情况,我可以使用AWS Lambda或SQS与Poller。使用AWS Lambda,我可以在Lambda函数中进行转换,使用带有Poller的SQS,我可以在Poller中进行转换。使用AWS Lambda,我发现一个问题是代码会变得非常大,因为转换非常复杂(有很多规则),所以我想使用SQS。但在最终确定SQS之前,我想知道AWS Lambda删除的SQS的缺点吗?

请帮忙。如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:0)

您的问题没有太多详细信息,因此我将尝试解释您的需求。

选项1:SQS轮询

  • 信息将发送至Amazon SNS主题
  • SQS队列订阅了SNS主题
  • 在Amazon EC2实例上运行的应用程序定期轮询 SQS队列以请求消息
  • 如果有消息可用,则会转换消息中的数据并将其保存到 Amazon DynamoDB

如果转换需要很长时间才能处理,这种方法很有用。可以根据队列中的工作量来缩放EC2实例的数量。 可以同时接收多条消息。这是一种传统的基于消息的方法。

选项2:使用Lambda

  • 信息将发送至Amazon SNS主题
  • AWS Lambda函数订阅了SNS主题
  • 当消息发送到SNS主题时,调用
  • Lambda函数转换消息中的数据并将其保存到 Amazon DynamoDB

AWS Lambda函数仅限于五分钟的执行时间,因此只有在转换过程可以在该时间范围内完成时,此方法才有效。

不需要服务器,因为Lambda将自动并行运行多个功能。如果不执行任何工作,则不会执行任何Lambda函数,也不会产生计算费用。

在这两个选项之间,使用 AWS Lambda更高效,可扩展,但可能会因您的具体工作量而异。

答案 1 :(得分:0)

我们现在可以使用SQS消息来触发AWS Lambda函数。

  

2018年6月28日:AWS Lambda将Amazon Simple Queue Service添加到受支持   事件来源

此外,不再需要运行消息轮询服务或创建SQS到SNS映射。 AWS Serverless Model支持以下新事件源:

Type: SQS
 PropertiesProperties:
  QueueQueue: arn:aws:sqs:us-west-2:213455678901:test-queue arn:aws:sqs:us-west-2:123791293
  BatchSize: 10

AWS控制台还支持: enter image description here

更多详细信息:
https://aws.amazon.com/blogs/aws/aws-lambda-adds-amazon-simple-queue-service-to-supported-event-sources/
https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html