ObjectMapper ломает AWS Lambda через API-шлюз - PullRequest
1 голос
/ 11 июля 2019

Существует API-шлюз, вызывающий лямбда-функцию с использованием лямбда-прокси.

Ниже работает нормально тело регистрируется и тело отправляется обратно:

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?

POM 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>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-lambda-java-events</artifactId>
        <version>2.2.6</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.9</version>
    </dependency>
</dependencies>

Детское телосложение

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <createDependencyReducedPom>false</createDependencyReducedPom>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

1 Ответ

0 голосов
/ 11 июля 2019

Ну, как глупо, но если это кому-нибудь поможет, я очень счастлив.

ObjectMapper не проблема.Я выполнил развертывание с travis-ci пару раз и, по-видимому, когда это произойдет, если для параметра memory_size и timeout не задано значение по умолчанию 128 МБ и используется 3 секунды.Это отличается от значений по умолчанию для новой лямбды, которая составляет 512 МБ и 15 секунд.

Я открыл запрос на изменение этого параметра на форуме travis.

...