AWS Lambda с Java
1. Вступление
AWS Lambda - это сервис бессерверных вычислений, предоставляемый Amazon для уменьшения конфигурации серверов, ОС, масштабируемости и т. д. AWS Lambda может выполнять код в облаке AWS.
Он запускается в ответ на события на разных ресурсах AWS, что запускает функции AWS Lambda. Цены действительны, а это значит, что мы не будем тратить деньги на простаивающие лямбда-функции.
Для этого руководства требуется действующая учетная запись AWS; вы можете создать одинhere.
2. Maven Зависимости
Чтобы включить AWS lambda, нам нужна следующая зависимость в нашем проекте:
com.amazonaws
aws-lambda-java-core
1.1.0
Эту зависимость можно найти вMaven repository.
Нам также понадобитсяMaven Shade Plugin для создания лямбда-приложения:
org.apache.maven.plugins
maven-shade-plugin
2.4.3
false
package
shade
3. Создать обработчик
Проще говоря, для вызова лямбда-функции нам нужно указать обработчик; Есть 3 способа создания обработчика:
-
Создание пользовательскогоMethodHandler
-
Реализация интерфейсаRequestHandler
-
Реализация интерфейсаRequestStreamHandler
Давайте посмотрим, как это сделать, на примерах кода.
3.1. ПользовательскийMethodHandler
Мы создадим метод-обработчик, который будет точкой входа для входящих запросов. Мы можем использовать формат JSON или примитивные типы данных в качестве входных значений.
Кроме того, необязательный объектContext позволит нам получить доступ к полезной информации, доступной в среде выполнения Lambda:
public class LambdaMethodHandler {
public String handleRequest(String input, Context context) {
context.getLogger().log("Input: " + input);
return "Hello World - " + input;
}
}
3.2. RequestHandler Интерфейс
Мы также можем реализоватьRequestHandler в нашем классе и переопределить методhandleRequest, который будет нашей точкой входа для запросов:
public class LambdaRequestHandler
implements RequestHandler {
public String handleRequest(String input, Context context) {
context.getLogger().log("Input: " + input);
return "Hello World - " + input;
}
}
В этом случае вход будет таким же, как в первом примере.
3.3. RequestStreamHandler Интерфейс
Мы также можем реализоватьRequestStreamHandler в нашем классе и просто переопределить методhandleRequest.
Разница в том, что объектыInputStream,ObjectStream иContext передаются как параметры:
public class LambdaRequestStreamHandler
implements RequestStreamHandler {
public void handleRequest(InputStream inputStream,
OutputStream outputStream, Context context) {
String input = IOUtils.toString(inputStream, "UTF-8");
outputStream.write(("Hello World - " + input).getBytes());
}
}
4. Файл развертывания сборки
Со всем настроенным, мы можем создать файл развертывания, просто запустив:
mvn clean package shade:shade
Файлjar будет создан в папкеtarget.
5. Создать лямбда-функцию через консоль управления
Войдите вAWS Amazon, а затем нажмите «Лямбда» в разделе «Услуги». На этой странице будет показан список лямбда-функций, который уже создан.
Вот шаги, необходимые для создания нашей лямбды:
-
“Select blueprint”, а затем выберите «Blank Function”
-
“Configure triggers” (в нашем случае у нас нет триггеров и событий)
-
«Настроить функцию»:
-
Имя: ПредоставьтеMethodHandlerLambda,
-
Описание: все, что описывает нашу лямбда-функцию
-
Время выполнения: выберитеjava8
-
Тип ввода кода и набор функций: выберите «Upload a .ZIP and Jar file” и нажмите кнопку«Upload” ». Выберите файл, который содержит лямбда-код.
-
ПодLambda function handler and role:
-
Имя обработчика: укажите имя обработчика лямбда-функцииcom.example.MethodHandlerLambda::handleRequest
-
Имя роли. Если в лямбда-функции используются какие-либо другие ресурсы AWS, предоставьте доступ, создав / используя существующую роль, а также определите шаблон политики.
-
-
МенееAdvanced settings:
-
Память: предоставьте память, которая будет использоваться нашей лямбда-функцией.
-
Тайм-аут: выберите время для выполнения лямбда-функции для каждого запроса.
-
-
-
Когда вы закончите со всеми вводными данными, нажмите «Next”», чтобы увидеть, как вы можете просмотреть конфигурацию.
-
После завершения проверки щелкните «Create Function”.
6. Вызов функции
После создания лямбда-функции AWS мы протестируем ее, передав некоторые данные:
-
Щелкните свою лямбда-функцию в списке, а затем нажмите кнопку «Test”».
-
Появится всплывающее окно, содержащее фиктивное значение для отправки данных. Заменить данные с помощью“example”
-
Нажмите кнопку «Save and test”»
На экране вы можете увидеть разделExecution result с успешно возвращенным выводом как:
"Hello World - example"
7. Заключение
В этой быстрой вводной статье мы создали простое приложение AWS Lambda с использованием Java 8, развернули его в AWS и протестировали.
Полный исходный код примера приложения можно найти вover on Github.