AWS Lambda Використання DynamoDB з Java

1. Вступ

AWS Lambda - це безсерверна обчислювальна послуга, що надається Amazon Web Services, а WS DynamoDB - це служба баз даних NoSQL, що також надається Amazon.

Цікаво, що DynamoDB підтримує як сховище документів, так і сховище ключ-значення і повністю управляється AWS.

Перш ніж розпочати, зауважте, що для цього підручника потрібен дійсний обліковий запис AWS (його можна створити тут). Крім того, спершу прочитайте статтю AWS Lambda with Java.

2. Залежності Мейвена

Для увімкнення лямбда нам потрібна наступна залежність, яку можна знайти на Maven Central:

 com.amazonaws aws-lambda-java-core 1.1.0  

Для використання різних ресурсів AWS нам потрібна наступна залежність, яку також можна знайти на Maven Central:

 com.amazonaws aws-lambda-java-events 1.3.0  

А для побудови програми ми будемо використовувати плагін Maven Shade:

 org.apache.maven.plugins maven-shade-plugin 3.0.0  false    package  shade    

3. Лямбда-код

Існують різні способи створення обробників у лямбда-програмі:

  • MethodHandler
  • RequestHandler
  • RequestStreamHandler

У нашому додатку ми використовуватимемо інтерфейс RequestHandler . Ми приймаємо PersonRequest в форматі JSON, і відповідь буде PersonResponse також в JSON форматі :

public class PersonRequest { private String firstName; private String lastName; // standard getters and setters } 
public class PersonResponse { private String message; // standard getters and setters }

Далі - наш клас точки входу, який реалізує інтерфейс RequestHandler як:

public class SavePersonHandler implements RequestHandler { private DynamoDB dynamoDb; private String DYNAMODB_TABLE_NAME = "Person"; private Regions REGION = Regions.US_WEST_2; public PersonResponse handleRequest( PersonRequest personRequest, Context context) { this.initDynamoDbClient(); persistData(personRequest); PersonResponse personResponse = new PersonResponse(); personResponse.setMessage("Saved Successfully!!!"); return personResponse; } private PutItemOutcome persistData(PersonRequest personRequest) throws ConditionalCheckFailedException { return this.dynamoDb.getTable(DYNAMODB_TABLE_NAME) .putItem( new PutItemSpec().withItem(new Item() .withString("firstName", personRequest.getFirstName()) .withString("lastName", personRequest.getLastName()); } private void initDynamoDbClient() { AmazonDynamoDBClient client = new AmazonDynamoDBClient(); client.setRegion(Region.getRegion(REGION)); this.dynamoDb = new DynamoDB(client); } } 

Тут, коли ми реалізуємо інтерфейс RequestHandler , нам потрібно реалізувати handleRequest () для фактичної обробки запиту. Що стосується решти коду, ми маємо:

  • Об'єкт PersonRequest - який буде містити значення запиту, передані у форматі JSON
  • Контекстний об'єкт - використовується для отримання інформації із середовища виконання лямбда-сигналу
  • PersonResponse - який є об'єктом відповіді на лямбда-запит

Створюючи об’єкт DynamoDB, ми спочатку створимо об’єкт AmazonDynamoDBClient і використаємо його для створення об’єкта DynamoDB . Зверніть увагу, що регіон є обов’язковим.

Щоб додати елементи до таблиці DynamoDB, ми використаємо об'єкт PutItemSpec - вказавши кількість стовпців та їх значення.

Нам не потрібна будь-яка заздалегідь визначена схема в таблиці DynamoDB, нам потрібно лише визначити ім'я стовпця Первинний ключ, яке в нашому випадку є “id” .

4. Створення файлу розгортання

Щоб побудувати лямбда-програму, нам потрібно виконати таку команду Maven:

mvn clean package shade:shade

Програма Lambda буде скомпільована та упакована у файл jar під цільовою папкою.

5. Створення таблиці DynamoDB

Для створення таблиці DynamoDB виконайте такі дії:

  • Увійдіть в обліковий запис AWS
  • Клацніть на "DynamoDB", який можна знайти в розділі "Усі послуги"
  • На цій сторінці відображатимуться вже створені таблиці DynamoDB (якщо такі є)
  • Натисніть «Table» Створити кнопку
  • Введіть "Назва таблиці" та "Первинний ключ" із типом даних як "Номер"
  • Натисніть на «Створити» кнопку
  • Таблиця буде створена

6. Створення лямбда-функції

Для створення функції лямбда виконайте такі дії:

  • Увійдіть в обліковий запис AWS
  • Клацніть на «Лямбда», яке можна знайти в розділі «Усі послуги»
  • На цій сторінці буде показано вже створену лямбда-функцію (якщо така є) або лямбда-функцію не створено, натисніть кнопку «Почати зараз»
  • “Вибрати план” -> Вибрати “ Пусту функцію”
  • «Налаштування тригера» -> Натисніть кнопку «Далі» кнопка
  • “Налаштування функції”
    • “Ім'я” : SavePerson
    • “Опис” : Зберегти особу в DDB
    • “Runtime” : Виберіть “Java 8”
    • «Завантажити» : натисніть кнопку «Завантажити» та виберіть файл jar лямбда-програми
  • “Обробник” : com.baeldung.lambda.dynamodb.SavePersonHandler
  • “Роль” : Виберіть “Створити власну роль”
  • З'явиться нове вікно, яке дозволить налаштувати роль IAM для виконання лямбда-сигналу, і нам потрібно додати в нього гранти DynamoDB. Після цього натисніть кнопку «Дозволити» кнопку
  • Натисніть «Next» кнопка
  • “Огляд” : перегляньте конфігурацію
  • Натисніть «Створити функцію» кнопка

7. Тестування лямбда-функції

Наступним кроком є ​​перевірка лямбда-функції:

  • Натисніть «Test» кнопку
  • З'явиться вікно "Подія тестування вводу" . Тут ми надамо вхід JSON для нашого запиту:
{ "id": 1, "firstName": "John", "lastName": "Doe", "age": 30, "address": "United States" }
  • Натисніть «Зберегти та тест» або «Зберегти» кнопку
  • Вихідні дані можна побачити в розділі «Результат виконання» :
{ "message": "Saved Successfully!!!" }
  • Нам також потрібно перевірити в DynamoDB, чи зберігається запис:
    • Перейдіть до «Консолі управління DynamoDB»
    • Виберіть таблицю “Особа”
    • Виберіть вкладку “Елементи”
    • Тут ви можете побачити дані про особу, які передавались на запит до лямбда-програми
  • Тож запит успішно обробляється нашим лямбда-додатком

8. Висновок

У цій короткій статті ми дізналися, як створити програму Lambda за допомогою DynamoDB та Java 8. Детальні вказівки повинні створити вам все для початку.

І, як завжди, повний вихідний код для прикладу програми можна знайти на Github.