ObjectMapper 通过 API 网关破坏 AWS Lambda

有一个 API 网关使用 lambda 代理调用 lambda 函数。


记录以下工作正常的身体并将身体发回:


package com.dapper.cloud.function;


import java.util.Map;


import com.amazonaws.services.lambda.runtime.Context;

import com.amazonaws.services.lambda.runtime.RequestHandler;

import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;


public class GrantJwt implements RequestHandler<Map<String, Object>, APIGatewayProxyResponseEvent>{ 

    @Override

    public APIGatewayProxyResponseEvent handleRequest(Map<String, Object> input, Context context){


        System.out.println(input.get("body").toString());


        return new APIGatewayProxyResponseEvent().withStatusCode(200).withBody(input.get("body").toString());

    }

当我更新它以使用ObjectMapper这样的方式时:


package com.dapper.cloud.function;


import java.util.Map;


import com.amazonaws.services.lambda.runtime.Context;

import com.amazonaws.services.lambda.runtime.RequestHandler;

import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;

import com.fasterxml.jackson.databind.ObjectMapper;


public class GrantJwt implements RequestHandler<Map<String, Object>, APIGatewayProxyResponseEvent>{ 

    @Override

    public APIGatewayProxyResponseEvent handleRequest(Map<String, Object> input, Context context){

        ObjectMapper m = new ObjectMapper();

        System.out.println(input.get("body").toString());


        return new APIGatewayProxyResponseEvent().withStatusCode(200).withBody(input.get("body").toString());

    }

日志不显示正文,响应是:


{

    "message": "Internal server error"

}

我可以在 AWS Lambda 中使用 Jackson 吗?


父POM


<dependencies>

    <dependency>

        <groupId>junit</groupId>

        <artifactId>junit</artifactId>

        <version>4.12</version>

        <scope>test</scope>

    </dependency>

    <dependency>

        <groupId>com.amazonaws</groupId>

        <artifactId>aws-lambda-java-core</artifactId>

        <version>1.2.0</version>

    </dependency>


SMILET
浏览 85回答 1
1回答

温温酱

好愚蠢,但如果这对任何人都有帮助,我会很高兴。ObjectMapper 不是问题。我使用 travis-ci 进行了几次部署,显然如果未设置 memory_size 和超时,则会使用默认的 128 mb 和 3 秒。这不同于 512 mb 和 15 秒的新 lambda 的默认值。我在 travis 论坛上提出了更改此设置的请求。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java