【发布时间】:2020-05-13 09:52:45
【问题描述】:
如果我在事件规则中使用输入......我应该如何在 lambda 中解析它?
现在我有:
MyJobScheduledRule:
Type: AWS::Events::Rule
Properties:
Description: Scheduled Rule
ScheduleExpression: !Sub "rate(${IntervalMinutes} minutes)"
State: "ENABLED"
Targets:
- Id: "MyJobLambda"
Arn: !GetAtt MyJobLambda.Arn
Input: "\"{\\\"key\\\":\\\"value\\\"}\"
使用以下 lambda:
public class MyJobLambda implements RequestHandler<Map<String, String>, Void> {
private static Logger LOGGER = LoggerFactory.getLogger(MyJobLambda.class);
@Override
public Void handleRequest(Map<String, String> event, Context context) {
LOGGER.debug("MyJob got value {} from input", event.get("key"));
return null;
}
}
但我得到以下运行时异常:
An error occurred during JSON parsing: java.lang.RuntimeException
java.lang.RuntimeException: An error occurred during JSON parsing
Caused by: java.io.UncheckedIOException: com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `java.util.LinkedHashMap` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('
{
"key": "value"
}
我也尝试过使用 POJO 作为 lambda 的输入。有什么想法吗?
【问题讨论】:
-
您可以打印出
event对象并在 CloudWatch Logs 中检查其结构 -
event.readValueAsTree().toString()
-
你的情况是什么类型的事件?
标签: amazon-web-services events aws-lambda jobs