当前位置: 首页 > 知识库问答 >
问题:

将json字符串从API网关传递到Lambda

方德宇
2023-03-14

我是aws lambda和api网关的新手,我正在尝试向lambda函数传递一个json字符串。

但是,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的字符串对象?

共有1个答案

查锦程
2023-03-14

API网关映射仅支持发送JSON对象(当发送到Java Lambda时,会将其转换为LinkedHashMap)。只需将LinkedHashMap转换为Lambda处理程序中的字符串即可。

这个问题中有一个如何做到这一点的例子,看起来像这样:

String jsonString = new JSONObject(data).toString()
 类似资料:
  • 我有一个C#方法,我已经成功地发布为AWS Lambda函数。它看起来像这样: 我已通过web界面执行以下操作来配置API网关: 创建了新的API 创建了一个名为“myclass”且路径为“/myclass”的新资源 为资源创建了一个新的GET方法,使用“Lambda函数”作为集成类型,并指向我的Lambda函数 我希望能够像这样调用Lambda函数(无需在请求中传递任何指定的头):https:/

  • 我试图在php脚本和c程序之间传递参数。我的php脚本如下所示 然后我想我的c程序返回给我一个字符串(但我真的不知道怎么做),你能帮忙吗?

  • 我正在尝试将API网关与Lambda代理集成, API服务器接收带有以下参数的请求,即邮政编码和住所 代码:

  • 问题内容: 背景: 我创建了一个非常简单的前端,用户可以在其中输入字符串。输入并单击“检查”按钮后,我想将此字符串作为JSON传递给python字符串,它将在其中进行SQL查找。根据SQL外观,python脚本应传递一个布尔值,该值应更改?到✔或✘。 题: 一旦按下“检查”按钮作为JSON到Python脚本,然后如何将字符串从Python传递到HTML,将?更改为✔或✘,如何传递字符串? 研究:

  • 如何在Lambda函数中引用API网关GET查询字符串参数? 当我进行测试时,我可以使用 当我使用post进行测试时,我可以使用body参数作为带有 的事件,使用get请求,但我没有body。我如何使用查询字符串参数,然后在请求中引用它们。我使用什么事件或其他属性来获取查询参数,或者我需要进行什么设置或更改? 在测试时,我引用了event[“username”],对于作为查询字符串参数传递它的AP