AWS Lambda использует DynamoDB с Java
1. Введение
AWS Ламбда это служба без серверов, предоставляемая Amazon Web Services и WS ДинамоДБ является услугой базы данных NoS’L, также предоставляемой Amazon.
Интересно, что DynamoDB поддерживает как магазин документов, так и магазин ключей и полностью управляется AWS.
Прежде чем мы начнем, обратите внимание, что этот учебник требует действительной учетной записи AWS (вы можете создать один здесь ). Кроме того, это хорошая идея, чтобы сначала прочитать AWS Lambda с Java статья.
2. Мейвен зависимостей
Для того, чтобы lambda нам нужна следующая зависимость, которая может быть найдена на Мавен Центральный :
com.amazonaws aws-lambda-java-core 1.1.0
Для использования различных ресурсов AWS нам нужна следующая зависимость, которую также можно найти на Мавен Центральный :
com.amazonaws aws-lambda-java-events 1.3.0
И чтобы создать приложение, мы собираемся использовать Maven Shade Plugin :
org.apache.maven.plugins maven-shade-plugin 3.0.0 false package shade
3. Код Ламбды
Существуют различные способы создания обработчиков в приложении lambda:
- МетодХэндлер
- ЗапросHandler
- ЗапросСтримЭндлер
Мы будем использовать ЗапросХэндлер интерфейс в нашем приложении. Мы примем ПерсонаРеквест в формате JSON, и ответ будет ЧеловекОтветчик также в JSON формат :
public class PersonRequest { private String firstName; private String lastName; // standard getters and setters }
public class PersonResponse { private String message; // standard getters and setters }
Далее идет наш класс начальной точки, который будет ЗапросХэндлер интерфейс как:
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); } }
Здесь, когда мы реализуем ЗапросХэндлер интерфейс, мы должны реализовать ручкаРеквест() для фактической обработки запроса. Что касается остальной части кода, у нас есть:
- ПерсонаРеквест объект, который будет содержать значения запроса, пройденные в формате JSON
- Контекст объект – используется для получения информации из среды исполнения lambda
- PersonResponse – который является объектом ответа на запрос lambda
Создавая объект DynamoDB, мы сначала создадим AmazonDynamoDBClient объект и использовать это для создания Динамоб объект. Обратите внимание, что регион является обязательным.
Чтобы добавить элементы в таблицу DynamoDB, мы будем использовать PutItemSpec объект – путем указания количества столбцов и их значений.
Нам не нужна какая-либо предопределенная схема в таблице DynamoDB, нам просто нужно определить имя столбца Primary Key, которое “id” в нашем случае.
4. Создание файла развертывания
Чтобы создать приложение lambda, нам нужно выполнить следующую команду Maven:
mvn clean package shade:shade
Заявка Lambda будет составлена и упакована в банку файл под целевой папкой.
5. Создание таблицы DynamoDB
Следуйте этим шагам, чтобы создать таблицу DynamoDB:
- Войти в Учетная запись AWS
- Нажмите “Динамо” которые могут быть расположены под “Все услуги”
- На этой странице будут покажем уже созданные таблицы DynamoDB (если таковые имеются)
- Нажмите “Создать таблицу” пуговица
- Обеспечить “Название стола” и “Первичный ключ” с его типом данных как “Номер”
- Нажмите на “Создать” пуговица
- Таблица будет создана
6. Создание функции Lambda
Следуйте этим шагам, чтобы создать функцию Lambda:
- Войти в Учетная запись AWS
- Нажмите “Ламбда” которые могут быть расположены под “Все услуги”
- Эта страница будет показывать уже созданные функции Lambda (если таковые имеются) или нет функции lambda создаются нажмите на “Начать сейчас”
- “Выберите план” -> Выберите ” Пустая функция”
- “Настройка триггеров” -> Нажмите “Следующий” пуговица
- “Настройка функции”
- “Имя” : СохранитьПерсон
- “Описание” : Сохранить человека в DDB
- “Бег” : Выберите “Ява 8”
- “Загрузить” : Нажмите “Загрузить” кнопку и выберите банку файл применения lambda
- “Обработчик” : com.baeldung.lambda.dynamodb.SavePersonHandler
- “Роль” : Выберите “Создать пользовательскую роль”
- Новое окно будет поп и позволит настроить роль IAM для исполнения lambda, и мы должны добавить ДинамоDB гранты в нем. После этого щелкните “Разрешить” пуговица
- Нажмите “Следующий” пуговица
- “Обзор” : Просмотрите конфигурацию
- Нажмите “Создать функцию” пуговица
7. Тестирование функции Lambda
Следующим шагом является тестирование функции lambda:
- Нажмите на “Тест” пуговица
- “Событие входного теста” окно будет показано. Здесь мы предоставим ввод JSON для нашего запроса:
{ "id": 1, "firstName": "John", "lastName": "Doe", "age": 30, "address": "United States" }
- Нажмите “Сохранить и проверить” или “Сохранить” пуговица
- Выход можно увидеть на “Результат исполнения” секция:
{ "message": "Saved Successfully!!!" }
- Также необходимо проверить в ДинамоББ, что запись сохраняется:
- Иди в Управленческая консоль «ДинамоДБ»
- Выберите таблицу “Человек”
- Выберите “Предметы” вешалка
- Здесь вы можете увидеть данные человека, которые были переданы в запросе на применение lambda
- Таким образом, запрос успешно обрабатывается нашим приложением lambda
8. Заключение
В этой быстрой статье мы узнали, как создать приложение Lambda с DynamoDB и Java 8. Подробные инструкции должны дать вам старт в настройке все вверх.
И, как всегда, полный исходный код для примера приложения можно найти более на Github .