AWS Ламбда с Java

1. Въведение

AWS Lambda е изчислителна услуга без сървър, предоставяна от Amazon за намаляване на конфигурацията на сървъри, операционна система, мащабируемост и др. AWS Lambda е способна да изпълнява код на AWS Cloud.

Той работи в отговор на събития в различни ресурси на AWS, което задейства функциите на AWS Lambda. Ценообразуването е платено, което означава, че няма да плащаме парите си за неактивни ламбда функции.

Този урок изисква валиден акаунт в AWS; можете да създадете такъв тук.

2. Зависимости на Maven

За да активираме AWS ламбда, се нуждаем от следната зависимост в нашия проект:

 com.amazonaws aws-lambda-java-core 1.1.0 

Тази зависимост може да бъде намерена в хранилището на Maven.

Също така се нуждаем от приставката Maven Shade, за да изградим ламбда приложението:

 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 ще бъде създаден под целевата папка.

5. Създайте Lambda функция чрез конзола за управление

Влезте в AWS Amazon и след това кликнете върху Lambda под услуги. Тази страница ще покаже списъка с ламбда функции, който вече е създаден.

Ето стъпките, необходими за създаването на нашата ламбда:

  1. „Изберете чертеж“ и след това изберете „ Празна функция“
  2. „Конфигуриране на задействания“ (в нашия случай нямаме задействания или събития)
  3. „Конфигуриране на функция“:
    • Име: Предоставете MethodHandlerLambda ,
    • Описание: Всичко, което описва нашата ламбда функция
    • Времетраене: Изберете java8
    • Тип на въвеждане на код и пакет от функции: Изберете „ Качване на .ZIP и Jar файл“ и кликнете върху бутона „ Качване“ . Изберете файла, който съдържа ламбда код.
    • Под манипулатор на функцията и ролята на Lambda :
      • Име на манипулатора: Предоставете име на манипулатор на ламбда функция com.baeldung.MethodHandlerLambda :: handleRequest
      • Име на ролята: Ако в ламбда функция се използват други ресурси на AWS, осигурете достъп чрез създаване / използване на съществуваща роля и също така дефинирайте шаблона на политиката.
    • Под Разширени настройки:
      • Памет: Осигурете памет, която ще се използва от нашата ламбда функция.
      • Време за изчакване: Изберете час за изпълнение на ламбда функция за всяка заявка.
  4. След като приключите с всички входове, щракнете върху „ Напред“, което ще ви покаже да прегледате конфигурацията.
  5. След като прегледът приключи, щракнете върху „ Създаване на функция“ .

6. Извикайте функцията

След като се създаде функцията за ламбда AWS, ще я тестваме, като предадем някои данни:

  • Кликнете върху ламбда функция от списъка, а след това кликнете на " Тест" бутон
  • Ще се появи изскачащ прозорец, който съдържа фиктивна стойност за изпращане на данни. Заменете данните с „Baeldung“
  • Кликнете върху " Запазване и тест" бутон

На екрана можете да видите секцията Резултат за изпълнение с успешно върнат изход като:

"Hello World - Baeldung"

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

В тази бърза статия за въвеждане създадохме просто приложение AWS Lambda, използвайки Java 8, внедрихме това в AWS и го тествахме.

Пълният изходен код за примерното приложение може да бъде намерен в Github.