AWS Lambda com Java

AWS Lambda com Java

1. Introdução

AWS Lambda é um serviço de computação sem servidor fornecido pela Amazon para reduzir a configuração de servidores, sistema operacional, escalabilidade, etc. O AWS Lambda é capaz de executar código no AWS Cloud.

Ele é executado em resposta a eventos em diferentes recursos da AWS, o que aciona as funções do AWS Lambda. O preço é pré-pago, o que significa que não gastaremos nosso dinheiro em funções lambda ociosas.

Este tutorial requer uma conta AWS válida; você pode criar umhere.

2. Dependências do Maven

Para habilitar o AWS lambda, precisamos da seguinte dependência em nosso projeto:


    com.amazonaws
    aws-lambda-java-core
    1.1.0

Essa dependência pode ser encontrada emMaven repository.

Também precisamos deMaven Shade Plugin para construir o aplicativo lambda:


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

3. Criar manipulador

Simplificando, para invocar uma função lambda, precisamos especificar um manipulador; existem três maneiras de criar um manipulador:

  1. Criando umMethodHandler personalizado

  2. Implementando a interfaceRequestHandler

  3. Implementando a interfaceRequestStreamHandler

Vamos ver como fazer isso usando exemplos de código.

3.1. MethodHandler personalizado

Criaremos um método manipulador que será o ponto de entrada para solicitações de entrada. Podemos usar o formato JSON ou tipos de dados primitivos como valores de entrada.

Além disso, o objeto opcionalContext nos permitirá acessar informações úteis disponíveis no ambiente de execução do Lambda:

public class LambdaMethodHandler {
    public String handleRequest(String input, Context context) {
        context.getLogger().log("Input: " + input);
        return "Hello World - " + input;
    }
}

3.2. InterfaceRequestHandler

Também podemos implementarRequestHandler em nossa classe e substituir o métodohandleRequest, que será nosso ponto de entrada para solicitações:

public class LambdaRequestHandler
  implements RequestHandler {
    public String handleRequest(String input, Context context) {
        context.getLogger().log("Input: " + input);
        return "Hello World - " + input;
    }
}

Nesse caso, a entrada será a mesma do primeiro exemplo.

3.3. InterfaceRequestStreamHandler

Também podemos implementarRequestStreamHandler em nossa classe e simplesmente substituir o métodohandleRequest.

A diferença é que os objetosInputStream,ObjectStreameContext estão sendo passados ​​como parâmetros:

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. Build Deployment File

Com tudo configurado, podemos criar o arquivo de implantação simplesmente executando:

mvn clean package shade:shade

O arquivojar será criado na pastatarget.

5. Criar função Lambda via console de gerenciamento

Faça login emAWS Amazone clique em Lambda em serviços. Esta página mostrará a lista de funções lambda, que já foi criada.

Aqui estão as etapas necessárias para criar nossa lambda:

  1. “Select blueprint” e, em seguida, selecione “Blank Function”

  2. “Configure triggers” (no nosso caso, não temos gatilhos ou eventos)

  3. “Configurar função”:

    • Nome: ForneçaMethodHandlerLambda,

    • Descrição: qualquer coisa que descreva nossa função lambda

    • Tempo de execução: Selecionejava8

    • Tipo de entrada de código e pacote de funções: Selecione “Upload a .ZIP and Jar file”e clique no botão“Upload”. Selecione o arquivo que contém o código lambda.

    • EmLambda function handler and role:

      • Nome do manipulador: forneça o nome do manipulador da função lambdacom.example.MethodHandlerLambda::handleRequest

      • Nome da função: se quaisquer outros recursos da AWS forem usados ​​na função lambda, forneça acesso criando / usando a função existente e também defina o modelo de política.

    • Abaixo deAdvanced settings:

      • Memória: forneça memória que será usada por nossa função lambda.

      • Tempo limite: selecione um tempo para execução da função lambda para cada solicitação.

  4. Assim que terminar com todas as entradas, clique em “Next” que mostrará para você revisar a configuração.

  5. Assim que a revisão for concluída, clique em “Create Function”.

6. Invoque a função

Depois que a função lambda da AWS for criada, vamos testá-la passando alguns dados:

  • Clique na sua função lambda nas listas e, em seguida, clique no botão “Test”

  • Aparecerá uma janela pop-up que contém um valor fictício para o envio de dados. Substitua os dados com“example”

  • Clique no botão “Save and test”

Na tela, você pode ver a seçãoExecution result com a saída retornada com sucesso como:

"Hello World - example"

7. Conclusão

Neste artigo de introdução rápida, criamos um aplicativo AWS Lambda simples usando Java 8, o implantamos na AWS e o testamos.

O código-fonte completo do aplicativo de exemplo pode ser encontradoover on Github.