我想用api网关调用lambda并点击spring启动应用程序api。有人可以帮助我这样做,而不使用云形成模板的好例子。
您需要使用Spring Cloud Function与aws依赖项和thin jar创建插件。
的依赖性 <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-function-adapter-aws</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.2.1</version>
</dependency>
构建插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.codetinkering.example.LambdaApp</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.5</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot.experimental</groupId>
<artifactId>spring-boot-thin-layout</artifactId>
<version>1.0.26.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
一旦构建了这个应用程序,您需要在AWS控制台中按照以下步骤在Lambda
中运行您的应用程序在AWS中创建一个新的Lambda函数->从零开始创作。给出名称和运行时,如Java 8或11(Corretto)
在Code部分,上传jar
在运行时设置中,按如下方式编辑处理程序
org.springframework.cloud.function.adapter.aws.FunctionInvoker: handleRequest
如果您在jar中定义了多个函数,那么Lambda需要知道应该调用哪个函数。要指定它,请转到Configuration部分。添加一个新的环境变量,如下所示变量名:
spring_cloud_function_definition
,值:<Name of your function>
注意:函数名应该与实现函数接口的方法名相同,以小写字母开头。
完成以上步骤后,就可以测试lambda了。
我在CodeTinkering博客的帮助下发布了这篇文章。您可以在这里参考原始文章CodeTinkering_Blog_AWSLambda_SpringCloudFunction