Рубрики
Без рубрики

REST API с использованием AWS Java SDK

В предыдущем посте мы рассмотрели простой обработчик лямбда-кода с использованием AWS Java SDK. В этом посте мы… С тегами aws, lambda, java, rest api.

В предыдущем посте мы рассмотрели простой обработчик лямбда-кода с использованием AWS Java SDK. В этом посте мы собираемся реализовать Rest API с помощью Lambda (используя интеграцию с прокси-сервером Lambda).

Что такое Интеграция Лямбда-прокси

Когда клиент отправляет запрос API, шлюз API передает запрос интегрированной функции Lambda как есть, за исключением того, что порядок параметров запроса не сохраняется. Эти данные запроса включают заголовки запроса, параметры строки запроса, переменные пути URL, полезную нагрузку и данные конфигурации API.

Данные конфигурации могут включать текущее имя этапа развертывания, переменные этапа, идентификатор пользователя или контекст авторизации (если таковые имеются). Внутренняя лямбда-функция анализирует данные входящего запроса. Шлюз API просто действует как почтальон для передачи запросов и ответов. Одним из преимуществ является то, что вы можете изменить реализацию лямбда-выражения, не влияя на API.

Давайте реализуем с помощью AWS Java Пакет SDK

Создайте пустой проект maven и обновите pom.xml со следующим содержанием.


    4.0.0
    net.rajanpanchal
    lambda-api-demo
    0.0.1-SNAPSHOT
    LambdaApiDemo
    Demonstrates API Request & Response Using Lambda and Java SDK for AWS
    
        1.8
        1.8
        2.14.11
    
    
        
            
                software.amazon.awssdk
                bom
                ${aws.java.sdk.version}
                pom
                import
            
        
    
    
        
        
            com.amazonaws
            aws-lambda-java-events
            3.2.0
        
        
            com.amazonaws
            aws-lambda-java-core
            1.2.0
        
    
    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    ${maven.compiler.source}
                    ${maven.compiler.target}
                
            
            
                org.apache.maven.plugins
                maven-shade-plugin
                3.2.4
                
                    
                        package
                        
                            shade
                        
                    
                
            
        
    


Мы добавляем здесь 2 основные зависимости:

  1. aws-лямбда-ядро java-ядра – Это обеспечивает Обработчик запросов
  2. aws-лямбда-java-события – Это обеспечивает Событие запроса прокси-сервера шлюза API и Событие ответа прокси-сервера шлюза API

Добавлено 2 плагина:

  1. Плагин компилятора – определяет версию java для компилятора.
  2. maven-shade-плагин – для создания fat jar, он же Uber jar (со всеми зависимостями)

Создайте класс Обработчик лямбды , со следующим содержимым.

package net.rajanpanchal.handlers;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;

public class LambdaHandler implements RequestHandler {
    @Override
    public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent requestEvent, Context context) {
        APIGatewayProxyResponseEvent responseEvent = new APIGatewayProxyResponseEvent();
        try {
            LambdaLogger logger = context.getLogger();
            logger.log("requestEventString:" + requestEvent.toString());
            logger.log("query string param:" + requestEvent.getQueryStringParameters());
            logger.log("headers:" + requestEvent.getHeaders());
            // fetching the value send in the request body
            String message = requestEvent.getBody();
            // Request request = gson.fromJson(message, Request.class);
            logger.log("message body:" + message);

            // setting up the response message
            responseEvent.setBody("Hello from Lambda!");
            responseEvent.setStatusCode(200);

            return responseEvent;

        } catch (Exception ex) {
            responseEvent.setBody("Invalid Response");
            responseEvent.setStatusCode(500);
            return responseEvent;
        }
    }
}

Приведенный выше код прост. событие запроса объект имеет тип Событие запроса прокси-сервера шлюза API . Вы получите заголовки, текст, строку запроса и т.д. от этого объекта. событие ответа объект имеет тип Событие ответа прокси-сервера шлюза API

Теперь выполните команду maven пакет mvn для создания файла jar в целевой папке. Войдите в консоль AWS, создайте функцию Lambda с помощью среды выполнения Java 8, позвольте ей создать роль выполнения и загрузите файл jar в Код функции раздел. В основных настройках задайте имя обработчика в формате:

*net.rajanpanchal.handlers.LambdaHandler::handleRequest*

Теперь перейдите к шлюзу API, создайте API REST Перейдите к действиям и создайте новый метод типа ПОЛУЧИТЬ . Выберите следующую конфигурацию: Чтобы включить интеграцию с прокси-сервером, обязательно установите флажок. Сохраните, чтобы создать метод.

Перейдите в раздел Действия и нажмите развернуть API, введите следующую информацию и нажмите Развернуть. Используйте созданный URL-адрес для доступа к API

Тестирование

Нажмите на URL-адрес в браузере, и вы увидите следующий ответ:

Перейдите в CloudWatch, откройте группы журналов с помощью навигации слева и получите доступ к журналам, соответствующим вашей функции lambda. Вы должны увидеть инструкции журнала из лямбда-обработчика.

исходный код:

Исходный код: Здесь мы завершаем наш REST API с помощью Lambda!

Исходный код: Здесь мы завершаем наш REST API с помощью Lambda! Если вам нравится этот пост, не стесняйтесь делиться и следовать за мной дальше Исходный код: Здесь мы завершаем наш REST API с помощью Lambda! Если вам понравился пост, не стесняйтесь делиться и подписываться на меня в Твиттере Исходный код: Здесь мы завершаем наш REST API с помощью Lambda! Если вам понравился пост, не стесняйтесь делиться и подписываться на меня в Твиттере для получения обновлений!

Оригинал: “https://dev.to/rajanpanchal/rest-api-using-aws-java-sdk-154k”