【发布时间】:2020-07-26 02:54:46
【问题描述】:
我正在使用 AWS Lambda 函数来使用在 AWS SQS 上收到的消息。 lambda 函数将进一步调用我的服务,但现在,我试图获取在 SQS 队列上发送的消息。我在 SQS 中创建了一个标准队列,在 Java 中创建了一个 Lambda 函数。我在我的 Eclipse IDE 中创建了一个新的 lambda 项目,这是我的功能:
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<String, String> {
@Override
public String handleRequest(String input, Context context) {
context.getLogger().log("Input: " + input);
return (String) input;
}
}
该文件没有显示任何错误。我将项目导出为 .jar 文件并将 jar 文件上传到我的 lambda 函数。我还在我的 lambda 函数 (packageName.className) 中指定了处理程序。如果我测试 lambda 函数,它执行得很好,但是当我向 SQS 发送消息时,它会增加 message flight 中的消息数量,我已经阅读的是消费者未使用的消息,在我的情况下是 lambda。
如果还有什么需要请告诉我。
【问题讨论】:
-
您是否检查过 CloudWatch 日志中的 lambda?消息正在传输中,因为您的 lambda 可能出错了。
-
@Marcin CloudWatch 上没有显示任何内容。
No Log Groups To Show. -
所以你的 lambda 没有 CW 的权限。添加它们,您应该会看到它的日志组。
-
查看我的编辑。我有这两个权限。是否还有其他需要添加的权限? @Marcin这3个动作来自我创建的前一个函数,但是当我创建这个函数时我从日志中删除了它。我做错什么了吗?
-
所以发送更多的sqs消息。如果您的 lambda 具有 CW 权限,则应为新的函数调用重新创建日志组。
标签: amazon-web-services aws-lambda amazon-sqs