AWS API网关和LAMBDA功能

时间:2017-08-05 15:11:16

标签: amazon-web-services aws-lambda

我有一个aws API,它连接到用JAVA.in API网关编写的AWS-LAMBDA。在Integration响应中我从上下文变量传递一些json字符串 如下所示

#set($inputRoot = $input.path('$'))
{
    "UserID":"$context.authorizer.claims.sub",
    "Identity":"$context.identity.cognitoIdentityId",
    "Account ID":"$context.identity.accountId",
    "UserID2":"$context.authorizer.claims.email"
}

但是在我的lambda函数中,我尝试读取这些值,如下所示。

context.getLogger().log("Input or Query String"+ input);

它正在读取完整文本而不是json格式的问题。它给我一个类似下面的格式。

Input or Query String{UserID=379fa501-0028-XXXX-a1c2-f0c54691b4d3, Identity=XX, Account ID=XX, UserID2=XXXXXXX@gmail.com}

如何将此转换为json格式..?

2 个答案:

答案 0 :(得分:1)

AWS传入Java Lambda函数的JSON将是Map<String, Object>类型的Map。 logger类将传入的对象序列化为一个字符串,所以当你查看日志中的输入时,它看起来就像一个json字符串,即使它不是。

试试这个:

public class LambdaFunctionHandler implements RequestHandler<Object, Object>{

    @Override
    public Object handleRequest(Object input, Context context) {
        Map<String, Object> mappedInput = (Map<String, Object>)input;
        context.getLogger().log("User ID: " + mappedInput.get("UserID"));
    }

你显然想要使用比我在这里所包含的更多的类型检查。

答案 1 :(得分:0)

您需要将字符串解析为json,下面的链接是一些简单的方法。 http://www.java67.com/2016/10/3-ways-to-convert-string-to-json-object-in-java.html?m=1