簡體   English   中英

AWS Lambda 與 Java Spring

[英]AWS Lambda with Java Spring

我正在嘗試使用 Java Spring 實施 AWS Lambda 服務。 我經歷了一大堆教程,這些教程告訴了我一大堆方法,但我無法讓它工作。

我遇到的主要問題是 AWS Lambda 庫要求類具有零參數構造函數,這使得使用 Spring IOC 容器變得困難。 我找到了一個教程,它有一個解決方法,並且能夠在創建后將我的 Spring bean 注入到 class 中,但這種方法似乎不適用於從定義的接口創建的匿名類的 bean 實例化(例如 Z38008DD81C2F4D7985CEF16C數據庫存儲庫)這是我的應用程序使用的東西。

我找到了有關 AWS lambda 庫的 Spring 包裝器的教程,但這似乎也不起作用; 我想我已經或多或少地從他們的示例代碼中正確地復制了他們的代碼,但是當我在 Lambda 上運行它時,我收到以下錯誤:

 START RequestId: d9e62756-e72b-45f0-8df4-2164f3979dd7 Version: $LATEST Failed to discover main class. An attempt was made to discover main class as 'MAIN_CLASS' environment variable, system property as well as entry in META-INF/MANIFEST.MF (in that order).: java.lang.IllegalStateException java.lang.IllegalStateException: Failed to discover main class. An attempt was made to discover main class as 'MAIN_CLASS' environment variable, system property as well as entry in META-INF/MANIFEST.MF (in that order). at org.springframework.cloud.function.utils.FunctionClassUtils.getStartClass(FunctionClassUtils.java:83) at org.springframework.cloud.function.utils.FunctionClassUtils.getStartClass(FunctionClassUtils.java:60) at org.springframework.cloud.function.adapter.aws.FunctionInvoker.start(FunctionInvoker.java:104) at org.springframework.cloud.function.adapter.aws.FunctionInvoker.<init>(FunctionInvoker.java:70) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

這是我的代碼:

pom.xml

 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.2.4.RELEASE</version> <relativePath/> <.-- lookup parent from repository --> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>JobsTest</artifactId> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-function-adapter-aws</artifactId> <version>3.0.2.RELEASE</version> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-lambda-java-events</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-lambda-java-core</artifactId> <version>1.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <configuration> <createDependencyReducedPom>false</createDependencyReducedPom> <shadedArtifactAttached>true</shadedArtifactAttached> <shadedClassifierName>aws</shadedClassifierName> </configuration> </plugin> </plugins> </build> </project>

JobTestApplication.java(我用來嘗試讓這個該死的東西工作的示例 PoC 應用程序,然后我將一一添加更多高級功能):

 package jobtest; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import java.util.function.Function; @SpringBootApplication public class JobTestApplication { public static void main(String[] args) { SpringApplication.run(JobTestApplication.class, args); } @Bean public Function<Object, String> uppercase() { return input -> "Hello World;" } }

有人可以向我解釋我做錯了什么嗎? 我已經花了 2 天半的時間來解決這個問題,但我無法弄清楚。 謝謝。

我遇到了同樣的問題。 根據此鏈接, https://github.com/spring-cloud/spring-cloud-function/issues/439 , Spring Cloud Function 版本 3 可以解決您的問題。

aws lambda 更新功能配置--功能名稱 testFunction--環境“變量={MAIN_CLASS=path.to.mainClass}”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM