Como implantar uma função do AWS Lambda no Jenkins?

7

Eu tenho uma função Lambda simples que estou tentando implantar através do Jenkins -

public String handleRequest(String input, Context context) {
        String output = "";
        if (input.isEmpty()) {
            output = "No input provided";
        } else {
            output = "Hello, " + input + "! Checking invocation - 1";
        }
        return output;
    }

Sou capaz de implantar e invocar isso por meio do plug-in AWS Lambda do Eclipse sem problemas.

Estou usando o plug-in do AWS Lambda para Jenkins e seguindo a documentação deles .

  • Estou fornecendo meu repositório Git como fonte.
  • Localização do Artefato - src/main/java/
  • Nome do manipulador - lambda.Hello( lambda é o nome do pacote e Olá é o nome da classe). Eu também tentei usar lambda.Hello.handleRequest, lambda.Hello::handleRequeste outras variações.

Jenkins diz que a compilação foi bem-sucedida, mas quando a testo no console da AWS, estou recebendo:

"errorMessage": "Class not found: lambda.Hello",
  "errorType": "class java.lang.ClassNotFoundException"

Onde estou errado aqui? Ao exportar a função de teste da AWS e descompactá-la, vejo que o código no Git foi implantado definitivamente, mas não é possível encontrar a classe.

Anish Sana
fonte

Respostas:

3

Encontrei a solução ao tentar implantar manualmente a função Lambda como um arquivo jar. Estes são os passos -

  • Crie sua função Lambda como um projeto Maven usando a documentação da AWS .
  • Crie seu trabalho Jenkins como um projeto Maven e especifique packagena seção de metas.
  • Siga a documentação do plugin Jenkins Lambda para implementação e especifique target/your-project-1.0-SNAPSHOT.jarcomo o local do Artefato.

Isso deve criar sua função Lambda com o Maven e implantá-la na AWS.

Anish Sana
fonte