amazon-web-services - 由SQS触发的AWS Lambda会增加SQS请求数量

标签 amazon-web-services aws-lambda amazon-sqs

我有一个由SQS触发的AWS Lambda函数。每天大约触发100次此功能,但是每天向SQS队列发出的请求计数大约为20.000次。我不明白为什么对SQS提出的请求数量太多。我的期望是,对SQS的请求数量应与Lambda调用相同。

我的帐户中只有一个Lambda函数和一个SQS队列。

可以与SQS队列的轮询相关吗?我试图从队列配置中更改SQS的轮询间隔,但未进行任何更改。另一种可能性是从Lambda函数配置更改轮询间隔。但是,我找不到任何相关参数。

简而言之,我想减少SQS请求的数量,如何在使用SQS调用Lmabda函数的同时做到这一点?

最佳答案

在将SQS用作AWS Lambda的事件源时,AWS Lambda会定期轮询已配置的SQS队列以获取新消息。尽管官方文档还不清楚这一点,但是blog post announcing that feature进入了细节:

When an SQS event source mapping is initially created and enabled, or when messages first appear after a period with no traffic, then the Lambda service will begin polling the SQS queue using five parallel long-polling connections.



根据AWS documentation,从AWS Lambda到SQS的长时间轮询的默认持续时间为20秒。

这导致AWS Lambda函数每20秒向SQS发出五个请求,而没有明显的负载,每天总计约为〜21600,接近您遇到的20000。

虽然增加长轮询持续时间似乎是减少请求数量的一种简便方法,但这是不可能的,因为默认情况下,AWS Lambda使用的20秒已是maximum possible duration for an SQS queue。将它用作AWS Lambda的事件源时,恐怕没有简单的方法可以减少对SQS的请求。取而代之的是,值得评估是否另一个事件源(例如SNS)也适合您的用例。

关于amazon-web-services - 由SQS触发的AWS Lambda会增加SQS请求数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52904643/

相关文章:

amazon-web-services - DynamoDB到ElasticSearch Geohash

amazon-web-services - 如何使用加密的DLQ向SNS添加Redrive策略

java - 如何在 AWS Elastic Beanstalk 上设置编码?

javascript - 在 React Native (Expo) 中将图像转换为 blob 并上传到 S3 存储桶

amazon-web-services - 使用 CloudFormation 将 LambdaFunctionAssociation 添加到现有 CloudFront 分配

amazon-web-services - SQS 过期 token : The security token included in the request is expired status code:

amazon-web-services - 如何调试 Amazon SQS 订阅 SNS 的问题

wordpress - 建立数据库连接 EC2 Amazon 时出错

node.js - 使用 Node 将文件从一个 AWS S3 存储桶复制到另一个存储桶

aws-lambda - AWS Lambda 在 DynamoDB 表更改时触发 SNS