【问题标题】:Pass json String from API Gateway to Lambda将 json 字符串从 API 网关传递到 Lambda
【发布时间】: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


    【解决方案1】:

    API Gateway 映射仅支持发送 JSON 对象(发送到 Java Lambda 时会转换为 LinkedHashMap)。您应该简单地将 LinkedHashMap 转换为 Lambda 处理程序中的字符串。

    有一个例子说明如何做到这一点in this question,看起来像这样:

    String jsonString = new JSONObject(data).toString()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-18
      • 2020-11-05
      • 1970-01-01
      • 2017-11-14
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      相关资源
      最近更新 更多