Как выполнить AWS лямбда с Open JDK 11 в качестве пользовательской среды выполнения?
AWS позволяет создавать лямбда-функции с Java 8
(Откройте JDK 8) как время выполнения. Мне нужно создать простую функцию, используя Open JDK 11
что-то вроде этого:
package example;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
public class Hello {
public String myHandler(int myCount, Context context) {
LambdaLogger logger = context.getLogger();
logger.log("received : " + myCount);
return String.valueOf(myCount);
}
}
Есть опция, которая позволяет использовать пользовательскую среду выполнения и учебник, содержащий пример с Shell. Однако нет примера с Java
,
Кто-нибудь уже имел дело с лямбдой AWS с настраиваемой средой исполнения Java?
5 ответов
Мне также было любопытно, почему мы еще не видели никаких пользовательских сред выполнения для Java, поэтому около месяца назад я начал играть с идеей создания одного из Java 11 с использованием Jigsaw для создания небольшого времени выполнения. Хотя это не совсем учебник, я написал довольно подробный файл Readme о том, как его построить, и код достаточно прост, чтобы следовать.
Вот мой проект на GitHub:
https://github.com/andthearchitect/aws-lambda-java-runtime
Я только что опубликовал это недавно, и это, безусловно, POC, поэтому используйте на свой страх и риск.
Corretto кажется интересным, но я думаю, что все еще найдутся люди, которым более комфортно с официальным выпуском OpenJDK. Я надеюсь, что это может быть отправной точкой для готовой к работе среды с открытым исходным кодом для Java.
Больше нет необходимости использовать настраиваемую среду выполнения, поскольку AWS Lambda теперь поддерживает Java 11.
Однако функции Lambda, использующие эту среду выполнения, будут запускаться с Amazon Corretto 11, а не с OpenJDK 11.
Если вы хотите запускать свою лямбда-функцию с OpenJDK 11 вместо Corretto 11, то по-прежнему рекомендуется использовать настраиваемую среду выполнения.
Как сказал Арун Гупта, они работают над сборками Corretto 11, соответствующими Open JDK 11, и выпустят их со временем для тестирования до апреля 2019 года...
Тем не менее, все еще можно добавить пользовательскую среду выполнения, которая позволяет "реализовать среду выполнения AWS Lambda на любом языке программирования".
Там нет примера для JDK 11
в официальной документации AWS, но я нашел проект, использующий пользовательскую среду выполнения 25 МБ, собранную из JDK 11
, с jlink
, Вы можете посмотреть по этой ссылке
Я сомневаюсь, что вы можете сделать это еще. По данным AWS:
"Мы работаем над сборками Corretto 11, соответствующими Open JDK 11, и выпустим их со временем для тестирования до апреля 2019 года".
https://forums.aws.amazon.com/thread.jspa?messageID=875742&tstart=0 https://aws.amazon.com/blogs/opensource/amazon-corretto-no-cost-distribution-openjdk-long-term-support/
Пользовательские среды выполнения будут хороши, если программирование стиля модуля выполнено, это уменьшит нежелательные зависимости, размер и улучшит время запуска.