Локальный запуск AWS Lambda с Java в IntelliJ - Нет ответа от контейнера вызова для функции (проблема с Docker?)

Я получаю эту ошибку при запуске AWS Lambda No response from invoke container for Function. Я ожидал, что он вернет строку hello world, которую я определил как выход:

ошибка

Я также пробовал использовать эту более простую лямбда-функцию, но получаю ту же ошибку:

public class App implements RequestHandler<String, String> {

    public String handleRequest(final String input, final Context context) {
            return "H";
    }
    
}

Я запустил Docker локально, чтобы запустить эту Lambda с помощью терминала быстрого запуска Docker:

мой терминал быстрого запуска Docker

Может быть, мне нужно что-то еще делать в Docker?

Вот как я создал новый проект AWS Lambda с помощью IntelliJ Plugin AWS Toolkit:

  1. Файл - ›Новый проект:

новый проект

и выбрал следующие настройки:

настройки

  1. В созданном проекте было много ошибок (Невозможно разрешить символ String и т. Д.). Мне удалось устранить ошибки, удалив папку .idea и щелкнув «Файл» - ›Invalidate Caches and Restart:

ошибки

Затем проект загружается правильно, но я не вижу этого символа лямбда рядом с моим классом приложения:

отсутствует лямбда-символ

  1. Итак, я перехожу к pom.xml, щелкаю правой кнопкой мыши и затем Import as Maven project. Это работает, и теперь я вижу символ лямбда:

с лямбда-символом

Но я получаю новую ошибку в классе AppTest, и когда я пытаюсь ее запустить, он говорит, что не могу найти обработчик приложения. 5. Я решил эту проблему, изменив APIGatewayProxyRequestEvent в RequestHandler на «Объект»:

устраненная ошибка

введите описание изображения здесь


person A501X    schedule 05.01.2021    source источник


Ответы (1)


Я никогда не пробовал создавать и выполнять лямбда-функцию так, как вы описали. Лично я использую IntelliJ и API среды выполнения Java Lambda для создания функции Lambda, а затем использую Maven для ее упаковки и развертывания с помощью Консоли управления AWS по адресу:

https://console.aws.amazon.com/lambda/home?region=us-east-1#/functions

Вы можете протестировать его с консоли и увидеть результат в журналах Cloudwatch. Это работает без проблем. Дополнительные сведения о том, как упаковать функцию Lambda с помощью Maven и развернуть ее с помощью Консоли управления AWS, см. В этом руководстве AWS:

https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javav2/usecases/creating_workflows_stepfunctions

Если вы построили свой пример лямбда-функции способом, указанным в этом руководстве, у вас не будет проблем:

public class App implements RequestHandler<String, String> {

    public String handleRequest(final String input, final Context context) {
            return "H";
    }
    
}
person smac2020    schedule 05.01.2021