1. Введение
AWS Lambda — это сервис бессерверных вычислений, предоставляемый Amazon для упрощения конфигурации серверов, ОС, масштабируемости и т. д. AWS Lambda может выполнять код в облаке AWS.
Он запускается в ответ на события на разных ресурсах AWS, которые запускают функции AWS Lambda. Плата взимается по мере использования, что означает, что мы не будем тратить деньги на простаивающие лямбда-функции.
Для этого руководства требуется действующая учетная запись AWS; Вы можете создать его здесь .
2. Зависимости Maven
Чтобы включить AWS lambda, нам нужна следующая зависимость в нашем проекте:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.1.0</version>
</dependency>
Эту зависимость можно найти в репозитории Maven .
Нам также понадобится плагин Maven Shade для сборки лямбда-приложения:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
3. Создать обработчик
Проще говоря, чтобы вызвать лямбда-функцию, нам нужно указать обработчик; существует 3 способа создания обработчика:
- Создание пользовательского
обработчика методов
- Реализация интерфейса
RequestHandler
- Реализация интерфейса
RequestStreamHandler
Давайте посмотрим, как это сделать, используя примеры кода.
3.1. Пользовательский обработчик методов
Мы создадим метод-обработчик, который будет точкой входа для входящих запросов. Мы можем использовать формат 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
в нашем классе и переопределить метод handleRequest
, который будет нашей точкой входа для запросов:
public class LambdaRequestHandler
implements RequestHandler<String, String> {
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
будет создан в целевой
папке.
5. Создайте лямбда-функцию через консоль управления
Войдите в AWS Amazon , а затем нажмите Lambda в разделе Services. На этой странице будет показан список лямбда-функций, который уже создан.
Вот шаги, необходимые для создания нашей лямбды:
- «Выберите план», а затем выберите « Пустая функция».
- «Настроить триггеры» (в нашем случае у нас нет ни триггеров, ни событий)
- «Настроить функцию»:
Имя: Укажите MethodHandlerLambda ,
Описание: все, что описывает нашу лямбда-функцию.
Время выполнения: выберите java8
Тип ввода кода и пакет функций: выберите « Загрузить файл .ZIP и Jar» и нажмите кнопку « Загрузить» . Выберите файл, содержащий лямбда-код.
Под обработчиком функции Lambda и ролью :
Имя обработчика: Укажите имя обработчика лямбда-функции
com.foreach.MethodHandlerLambda::handleRequest.
Имя роли: если какие-либо другие ресурсы AWS используются в лямбда-функции, предоставьте доступ, создав/используя существующую роль, а также определите шаблон политики.
В расширенных настройках:
Память: предоставьте память, которая будет использоваться нашей лямбда-функцией.
Тайм-аут: выберите время выполнения лямбда-функции для каждого запроса.
- Когда вы закончите со всеми входными данными, нажмите « Далее» , чтобы просмотреть конфигурацию.
- После завершения обзора нажмите « Создать функцию» .
6. Вызовите функцию
После создания лямбда-функции AWS мы проверим ее, передав некоторые данные:
- Нажмите на свою лямбда-функцию из списков, а затем нажмите кнопку « Тест » .
- Появится всплывающее окно, содержащее фиктивное значение для отправки данных. Переопределить данные с помощью «ForEach»
- Нажмите на кнопку « Сохранить и протестировать» .
На экране вы можете увидеть раздел результатов выполнения с успешно возвращенным выводом:
"Hello World - ForEach"
7. Заключение
В этой краткой вводной статье мы создали простое приложение AWS Lambda с использованием Java 8, развернули его в AWS и протестировали.
Полный исходный код примера приложения можно найти на Github .