1
resposta

Spring Boot e Lambda

Criei um projeto Spring Boot normal e tenho as seguintes dependencias para a AWS no meu pom.xml:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E tenho o shade do maven para subir com todas as dependências:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Porém ao subir o arquivo .jar na lambda AWS ele me retorna o seguinte erro:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Já verifiquei a pastar target e a classe está lá

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Quando testei apenas o main:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Quando testei a classe Handler

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Meu LambdaApplication que testei primeiro:

@SpringBootApplication public class LambdaApplication {

public static void main(String[] args) {
    SpringApplication.run(LambdaApplication.class, args);
}

@Bean
public Function<String, String> reverse(){
    return (s) -> String.valueOf(new StringBuilder(s).reverse());
}

}

Depois deixei o LambdaApplication apenas com o main e criei o TesteHandler

Meu TesteHandler:

public class TesteHandler implements RequestHandler<String, String> {

@Override
public String handleRequest(String s, Context context) {
    return s;
}

}

Obs: Já tentei testar com as anotações: @Component e @Service

1 resposta

Olá, Lucas.

Tudo bem?

Pelo que você descreveu, parece que o problema está relacionado com a configuração do seu arquivo JAR e a localização da classe principal no contexto do AWS Lambda. O erro "Class not found" geralmente indica que a AWS Lambda não está conseguindo localizar a classe especificada no arquivo JAR enviado.

Aqui estão algumas sugestões para resolver esse problema:

  1. Verifique o Caminho da Classe no AWS Lambda: Certifique-se de que o nome da classe configurada no AWS Lambda (incluindo o pacote completo) corresponde exatamente ao que está no seu código. Por exemplo, se a sua classe está em br.com.lambda.LambdaApplication, esse deve ser o caminho completo especificado no Lambda.

  2. Revisão do Maven Shade Plugin: O Maven Shade Plugin pode às vezes causar problemas ao criar o arquivo JAR, especialmente se a configuração não incluir todas as classes necessárias. Aqui está uma configuração básica que você pode verificar ou adicionar ao seu pom.xml para garantir que todas as classes e recursos necessários estejam incluídos no JAR final:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.3.0</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <createDependencyReducedPom>false</createDependencyReducedPom>
                    <shadedArtifactAttached>true</shadedArtifactAttached>
                    <shadedClassifierName>aws</shadedClassifierName>
                    <transformers>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                            <mainClass>br.com.lambda.LambdaApplication</mainClass>
                        </transformer>
                    </transformers>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    Certifique-se de ajustar o <mainClass> para o caminho correto da sua classe principal.

  3. Verifique o Arquivo JAR: Após construir o JAR com o Maven, verifique novamente se a classe LambdaApplication realmente está dentro do arquivo JAR. Você pode usar ferramentas como o WinRAR, 7-Zip ou o comando jar tf nome-do-arquivo.jar no terminal para listar o conteúdo do JAR.

  4. Teste Localmente Antes de Enviar: Se possível, teste a execução do seu JAR localmente usando um ambiente que simule o AWS Lambda, como o SAM CLI da AWS, para ver se há alguma outra mensagem de erro que possa ajudar a diagnosticar o problema.

  5. Logs e Monitoramento: Utilize as ferramentas de logging e monitoramento da AWS para obter mais detalhes sobre o que pode estar falhando durante a execução do Lambda.

Espero que isso resolva o problema que você está enfrentando com a execução do Spring Boot no AWS Lambda. Qualquer dúvida manda aqui. Bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software