Перейти к основному содержимому

Базовый пример AWS Lambda с Java

· 4 мин. чтения

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 способа создания обработчика:

  1. Создание пользовательского обработчика методов
  2. Реализация интерфейса RequestHandler
  3. Реализация интерфейса 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. На этой странице будет показан список лямбда-функций, который уже создан.

Вот шаги, необходимые для создания нашей лямбды:

  1. «Выберите план», а затем выберите « Пустая функция».
  2. «Настроить триггеры» (в нашем случае у нас нет ни триггеров, ни событий)
  3. «Настроить функцию»:
  • Имя: Укажите MethodHandlerLambda ,

  • Описание: все, что описывает нашу лямбда-функцию.

  • Время выполнения: выберите java8

  • Тип ввода кода и пакет функций: выберите « Загрузить файл .ZIP и Jar» и нажмите кнопку « Загрузить» . Выберите файл, содержащий лямбда-код.

  • Под обработчиком функции Lambda и ролью :

  • Имя обработчика: Укажите имя обработчика лямбда-функции com.foreach.MethodHandlerLambda::handleRequest.

  • Имя роли: если какие-либо другие ресурсы AWS используются в лямбда-функции, предоставьте доступ, создав/используя существующую роль, а также определите шаблон политики.

  • В расширенных настройках:

  • Память: предоставьте память, которая будет использоваться нашей лямбда-функцией.

  • Тайм-аут: выберите время выполнения лямбда-функции для каждого запроса.

  1. Когда вы закончите со всеми входными данными, нажмите « Далее» , чтобы просмотреть конфигурацию.
  2. После завершения обзора нажмите « Создать функцию» .

6. Вызовите функцию

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

  • Нажмите на свою лямбда-функцию из списков, а затем нажмите кнопку « Тест » .
  • Появится всплывающее окно, содержащее фиктивное значение для отправки данных. Переопределить данные с помощью «ForEach»
  • Нажмите на кнопку « Сохранить и протестировать» .

На экране вы можете увидеть раздел результатов выполнения с успешно возвращенным выводом:

"Hello World - ForEach"

7. Заключение

В этой краткой вводной статье мы создали простое приложение AWS Lambda с использованием Java 8, развернули его в AWS и протестировали.

Полный исходный код примера приложения можно найти на Github .