我有一个简单的lambda应用程序,该应用程序目前尚未投入生产,仅用于测试和调试。该功能向SQS发送消息以在外部应用程序上执行CRUD操作。我已将此功能设置为在收到消息时由SQS调用,因此该功能正在发送和接收。
我刚刚收到一封电子邮件,说我已经使用了超过85%的免费SQS请求配额,或者在过去2周中使用了超过850,000个请求。我确定这些请求不是正在发送到队列或未接收到的消息。对于我使用该应用程序的频率,发送/接收的数量必须少于1000。我还使用SQS监视验证了队列中没有任何消息。发送的邮件数量或多或少是我的预期,数量很少。
就像我说的那样,这个应用程序仅由我自己使用,每周进行几天的测试。超过850,000个请求来自何处?
答案 0 :(得分:2)
Amazon SQS按每百万API调用收费0.40美元。调用包括发送,接收和删除,因此一条消息可能使用3个以上的API调用。
来自AWS Lambda Adds Amazon Simple Queue Service to Supported Event Sources | AWS News Blog:
此功能没有额外的费用,但是由于Lambda服务一直在长时间轮询SQS队列,因此将以标准SQS定价费率向这些API调用收费。
长轮询耗时20秒,每天进行4320次轮询。相当于两周内60,480,或每月129,600。诚然,如果消息正在流动,情况将会更多,因为只要有消息,就会退出长时间的轮询。
因此,要么队列被大量使用(并且您的0.40美元获得了可观的价值),要么还有其他东西可以生成许多SQS API调用。
答案 1 :(得分:0)
如果您使用相同的功能向SQS发送和从SQS接收,则表示:
Lambda发送消息给SQS-> SQS接收消息-> SQS触发Lambda-> Lambda发送消息给SQS
而且...这是一个无限循环:)