我有一个如下所示的架构: -
多个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的缺点吗?
请帮忙。如果您需要更多信息,请与我们联系。
答案 0 :(得分:0)
您的问题没有太多详细信息,因此我将尝试解释您的需求。
选项1:SQS轮询
如果转换需要很长时间才能处理,这种方法很有用。可以根据队列中的工作量来缩放EC2实例的数量。 可以同时接收多条消息。这是一种传统的基于消息的方法。
选项2:使用Lambda
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
更多详细信息:
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