【发布时间】:2020-05-28 16:38:18
【问题描述】:
我是 AWS 的一名亲戚,如果这是一个愚蠢的问题,请道歉。
我有一个用 Java 编写的 AWS Lambda。我还有一个接收 AWS S3 事件消息的 SQS 队列。然后,我针对 SQS 队列创建了一个 Lambda 触发器,以便我的 Lambda 将 S3 事件作为 SQS 消息接收并适当地处理它们。
一切都很好。我遇到的唯一问题是 Lambda 似乎每 2 分钟接收一次 SQS 事件消息的通知,即使 SQS 队列中没有消息也是如此。
Java 代码如下所示:
public class SQSEventHandler implements RequestHandler<SQSEvent, Void> {
@Override
public Void handleRequest(SQSEvent sqsEvent, Context context) {
if (sqsEvent != null) {
LOGGER.debug("Received SQS event: {}", sqsEvent.toString());
... do stuff...
如果我查看 CloudWatch 日志(我使用 SLF4J 进行日志记录),我可以看到 Lambda 每 2 分钟触发一次不同的 SQS 消息,即使在没有 S3 事件消息要处理的时间段内也是如此:
02:54:16 START RequestId: d5454080-8ea3-4c44-93e9-caa5bd903599 Version: $LATEST
02:54:16 [2020-02-13 02:54:16.220] - [d5454080-8ea3-4c44-93e9-caa5bd903599] DEBUG <package>.SQSEventHandler - Received SQS event: {}
02:54:16 END RequestId: d5454080-8ea3-4c44-93e9-caa5bd903599
02:54:16 REPORT RequestId: d5454080-8ea3-4c44-93e9-caa5bd903599 Duration: 1.05 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 161 MB
02:56:16 START RequestId: 9d5acbba-b96c-47e9-81c2-2d448e4ca6e9 Version: $LATEST
02:56:16 [2020-02-13 02:56:16.386] - [9d5acbba-b96c-47e9-81c2-2d448e4ca6e9] DEBUG <package>.SQSEventHandler - Received SQS event: {}
02:56:16 END RequestId: 9d5acbba-b96c-47e9-81c2-2d448e4ca6e9
02:56:16 REPORT RequestId: 9d5acbba-b96c-47e9-81c2-2d448e4ca6e9 Duration: 1.23 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 161 MB
02:58:16 START RequestId: 54bc4fa4-bcaf-4834-9185-09c9c7e2d757 Version: $LATEST
02:58:16 [2020-02-13 02:58:16.451] - [54bc4fa4-bcaf-4834-9185-09c9c7e2d757] DEBUG <package>.SQSEventHandler - Received SQS event: {}
02:58:16 END RequestId: 54bc4fa4-bcaf-4834-9185-09c9c7e2d757
02:58:16 REPORT RequestId: 54bc4fa4-bcaf-4834-9185-09c9c7e2d757 Duration: 1.01 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 161 MB
没有其他 SQS 队列具有此 Lambda 的触发器。
如您所见,SQS 事件对象不为空,但在 toString() 调用中不会产生任何内容。
我无法找出问题所在 - 如有任何帮助,我们将不胜感激。
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-sqs