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

Напишите свой первый AWS Lambda на Java

До сих пор я писал лямбда-функцию на Python для всех своих проектов AWS. В Python это просто, Дж… С тегами java, aws, lambda, без сервера.

До сих пор я писал лямбда-функцию на Python для всех своих AWS проектов . В Python это просто, просто импортируйте модуль boto3 и начните кодирование. Все немного по-другому, когда вы пишете лямбда-обработчики на Java. Давайте рассмотрим и посмотрим, как вы можете написать простой лямбда-обработчик HelloWorld на java. Я запланировал несколько практических проектов, которые я собираюсь написать на Java. Поэтому я решил сделать сообщение Hello World, прежде чем мы погрузимся в сложные обработчики. Не стесняйтесь следить за мной в twitter для предстоящих обновлений.

Для реализации обработчика мы будем использовать Maven, Eclipse и AWS SDK для Java. Ниже приведены версии:

  • Java: 1.8
  • Затмение: Версия: 2020-06 (4.16.0)
  • ПАКЕТ SDK AWS: 2.14.11
  • Maven: 3.6.3 (Входит в комплект eclipse)

Для начала создайте новый пустой проект maven в eclipse. Перейдите в раздел Файл-> Создать -> Проект Maven. В диалоговом окне “Новый проект”. выберите “создать простой проект” и нажмите “Далее”. На следующем экране. добавьте соответствующую информацию о проекте и нажмите “Готово”. Например:

Теперь ваш проект создан. Открыть pom.xml и добавьте следующий код.


    4.0.0
    net.rajanpanchal
    lambda-java-demo
    1
    Lambda-Java-Demo
    HelloWorld Lambda handler in java
    
        1.8
        1.8
        2.14.11
    
    
        
            
                software.amazon.awssdk
                bom
                ${aws.java.sdk.version}
                pom
                import
            
        
    
    
        
            com.amazonaws
            aws-lambda-java-core
            1.2.0
        

        
            com.google.code.gson
            gson
            2.8.6
        
    
    
        
            
                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
                        
                    
                
            
        
    


Мы устанавливаем некоторые свойства в теге <свойства> , такие как версия AWS SDK и версия Java. Мы добавляем зависимость AWS SDK и зависимость от лямбда-ядра с желаемой версией. Добавлена зависимость Google JSON для преобразования между JSON и объектом Java и наоборот. В плагинах мы определяем плагин компилятора maven для компиляции кода и еще один важный плагин, называемый maven-shade-plugin . Этот плагин помогает создать банку жира он же Uber jar . Этот jar будет содержать все зависимости, необходимые для успешного выполнения лямбда-функции.

Теперь давайте создадим обработчик.

package net.rajanpanchal.handlers;

import java.util.Map;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class HelloWorldHandler implements RequestHandler, String>{
      Gson gson = new GsonBuilder().setPrettyPrinting().create();
      @Override
      public String handleRequest(Map event, Context context)
      {
        LambdaLogger logger = context.getLogger();
        String response = new String("200 OK");
        // log execution details
        logger.log("ENVIRONMENT VARIABLES: " + gson.toJson(System.getenv()));
        logger.log("CONTEXT: " + gson.toJson(context));
        // process event
        logger.log("EVENT: " + gson.toJson(event));
        logger.log("EVENT TYPE: " + event.getClass().toString());
        return response;
      }
    }

Здесь мы реализуем Обработчик запросов , который будет принимать Карту из строки и выводит a Строка ответ. Обработчик делает не так уж много. Просто записываю кое-что из контекста и событие и в ответ он отправляет 200 OK строку. После этого щелкните правой кнопкой мыши на проекте, перейдите в раздел “Запуск от имени” и нажмите “Сборка Maven”. Откроется окно конфигурации. В поле “Цели” введите пакет и нажмите “Выполнить”. Сборка должна быть успешной и создаст жирную банку в папке target .

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

Результат может выглядеть примерно так:

START RequestId: c40b4095-27f5-4153-ac37-fd2c103f4476 Version: $LATEST
ENVIRONMENT VARIABLES: {
  "PATH": "/usr/local/bin:/usr/bin/:/bin:/opt/bin",
  "_AWS_XRAY_DAEMON_ADDRESS": "169.254.79.2",
  "LAMBDA_TASK_ROOT": "/var/task",
  "AWS_LAMBDA_FUNCTION_MEMORY_SIZE": "128",
  "TZ": ":UTC",
  "AWS_SECRET_ACCESS_KEY": "",
  "AWS_EXECUTION_ENV": "AWS_Lambda_java8",
  "AWS_DEFAULT_REGION": "us-east-1",
  "AWS_LAMBDA_LOG_GROUP_NAME": "/aws/lambda/helloworldjava",
  "_HANDLER": "net.rajanpanchal.handlers.HelloWorldHandler::handleRequest",
  "LANG": "en_US.UTF-8",
  "LAMBDA_RUNTIME_DIR": "/var/runtime",
  "AWS_SESSION_TOKEN": "",
  "LD_LIBRARY_PATH": "/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib",
  "_X_AMZN_TRACE_ID": "Root\u003d1-5f545c5d-22c8a803badd636859a0f387;Parent\u003d23df427f78bc46e4;Sampled\u003d0",
  "AWS_SECRET_KEY": "",
  "AWS_REGION": "us-east-1",
  "AWS_LAMBDA_LOG_STREAM_NAME": "2020/09/06/[$LATEST]57c598b33b164acf8e8151660249e50e",
  "AWS_XRAY_DAEMON_ADDRESS": "169.254.79.2:2000",
  "_AWS_XRAY_DAEMON_PORT": "2000",
  "AWS_XRAY_CONTEXT_MISSING": "LOG_ERROR",
  "AWS_LAMBDA_FUNCTION_VERSION": "$LATEST",
  "AWS_ACCESS_KEY": "",
  "AWS_LAMBDA_FUNCTION_NAME": "helloworldjava"
}CONTEXT: {
  "memoryLimit": 128,
  "awsRequestId": "c40b4095-27f5-4153-ac37-fd2c103f4476",
  "logGroupName": "/aws/lambda/helloworldjava",
  "logStreamName": "2020/09/06/[$LATEST]57c598b33b164acf8e8151660249e50e",
  "functionName": "helloworldjava",
  "functionVersion": "$LATEST",
  "invokedFunctionArn": "arn:aws:lambda:us-east-1::function:helloworldjava",
  "cognitoIdentity": {
    "identityId": "",
    "poolId": ""
  },
  "logger": {}
}EVENT: {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}EVENT TYPE: class java.util.LinkedHashMapEND RequestId: c40b4095-27f5-4153-ac37-fd2c103f4476
REPORT RequestId: c40b4095-27f5-4153-ac37-fd2c103f4476  Duration: 516.04 ms Billed Duration: 600 ms Memory Size: 128 MB Max Memory Used: 79 MB  Init Duration: 393.54 ms

Здесь мы завершаем наш первый лямбда-обработчик на Java. В следующем посте мы увидим, как мы можем реализовать API с помощью AWS SDK.

Оригинал: “https://dev.to/rajanpanchal/write-your-first-aws-lambda-in-java-1j2k”