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:
-
Criando umMethodHandler personalizado
-
Implementando a interfaceRequestHandler
-
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:
-
“Select blueprint” e, em seguida, selecione “Blank Function”
-
“Configure triggers” (no nosso caso, não temos gatilhos ou eventos)
-
“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.
-
-
-
Assim que terminar com todas as entradas, clique em “Next” que mostrará para você revisar a configuração.
-
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.