【发布时间】:2019-11-27 20:02:30
【问题描述】:
我是 aws lambda 和 api gateway 的新手,我正在尝试将 json 字符串传递给 lambda 函数。
但是,没有使用字符串调用 lambda。
这是 lambda。它获取一个对象作为输入,并返回该类的字符串表示形式和该对象的值。
public class TestMapping implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
return "inputClass = " + input.getClass() + ", input = " + String.valueOf(input);
}
}
api网关的映射模板是
#set($allParams = $input.params().querystring)
{
"resourcePath" : "$context.resourcePath",
"httpMethod" : "$context.httpMethod",
"header": "$input.params().header",
"path": "$input.params().path",
"inputJson": "$input.json()",
"queryParameters" : [
#foreach($type in $allParams.keySet())
{"name": "$type", "value": "$allParams.get($type)"}#if($foreach.hasNext),
#end
#end
]
}
api网关测试中的日志说:
Endpoint request body after transformations: {
"resourcePath" : "/testmapping",
"httpMethod" : "GET",
"header": "{}",
"path": "{}",
"inputJson": "",
"queryParameters" : [
{"name": "month", "value": "6"},
{"name": "employeeId", "value": "1"}
]
}
我希望将 json 字符串传递给 lambda(作为字符串对象),但不是这个,而是 TestMapping Lambda 返回
"inputClass = class java.util.LinkedHashMap, input = {resourcePath=/testmapping, httpMethod=GET, header={}, path={}, inputJson=, queryParameters=[{name=month, value=6}, {name=employeeId, value=1}]}"
如您所见,LinkedHashMap 被传递给 lambda。
我该怎么做,以 json 字符串作为值传递给 lambda 的字符串对象?
【问题讨论】:
标签: amazon-web-services aws-lambda aws-api-gateway