AWS Lambda с Java

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

  1. Создание пользовательскогоMethodHandler

  2. Реализация интерфейсаRequestHandler

  3. Реализация интерфейса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, а затем нажмите «Лямбда» в разделе «Услуги». На этой странице будет показан список лямбда-функций, который уже создан.

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

  1. “Select blueprint”, а затем выберите «Blank Function”

  2. “Configure triggers” (в нашем случае у нас нет триггеров и событий)

  3. «Настроить функцию»:

    • Имя: ПредоставьтеMethodHandlerLambda,

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

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

    • Тип ввода кода и набор функций: выберите «Upload a .ZIP and Jar file” и нажмите кнопку«Upload” ». Выберите файл, который содержит лямбда-код.

    • ПодLambda function handler and role:

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

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

    • МенееAdvanced settings:

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

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

  4. Когда вы закончите со всеми вводными данными, нажмите «Next”», чтобы увидеть, как вы можете просмотреть конфигурацию.

  5. После завершения проверки щелкните «Create Function”.

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

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

  • Щелкните свою лямбда-функцию в списке, а затем нажмите кнопку «Test”».

  • Появится всплывающее окно, содержащее фиктивное значение для отправки данных. Заменить данные с помощью“example”

  • Нажмите кнопку «Save and test”»

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

"Hello World - example"

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

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

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