AWS API Gateway + AWS Lambda + Spring Boot: как передать несколько входных аргументов в лямбда-функцию? - PullRequest
0 голосов
/ 17 апреля 2019

Я реализовал приложение Spring Boot и загрузил его в функции AWS Lambda.У меня есть два вопроса:

  1. Чтобы проверить лямбда-функцию, как передать несколько аргументов в «Настроить тестовое событие»?Обычно запрашивается передача JSON.

  2. Как передать два входных аргумента с помощью шлюза API, если API вызывает эту лямбда-функцию?

Контроллер пружинной загрузки

@RestController
@RequestMapping("/controller")
public class Contoller{
    public String method(String a, String b) {
        return "Input passed a ["+a+"], b["+b+"]";
    }
}

Лямбда-манипулятор с пружинной загрузкой

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import com.amazonaws.serverless.exceptions.ContainerInitializationException;
import com.amazonaws.serverless.proxy.model.AwsProxyRequest;
import com.amazonaws.serverless.proxy.model.AwsProxyResponse;
import com.amazonaws.serverless.proxy.spring.SpringBootLambdaContainerHandler;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;

public class LambdaHandler implements RequestStreamHandler {

    private static SpringBootLambdaContainerHandler<AwsProxyRequest, AwsProxyResponse> handler;

    static {
        try {
            handler = SpringBootLambdaContainerHandler.getAwsProxyHandler(Application.class);
            handler.activateSpringProfiles("lambda");
        } catch (ContainerInitializationException e) {
            // Re-throw the exception to force another cold start
            e.printStackTrace();
            throw new RuntimeException("Could not initialize Spring Boot application", e);
        }
    }

    @Override
    public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
        handler.proxyStream(inputStream, outputStream, context);

        // just in case it wasn't closed by the mapper
        outputStream.close();
    }
}
...