通过lambda调用Spring启动应用程序而不使用云形成模板



我想用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

中运行您的应用程序
  1. 在AWS中创建一个新的Lambda函数->从零开始创作。给出名称和运行时,如Java 8或11(Corretto)

  2. 在Code部分,上传jar

  3. 在运行时设置中,按如下方式编辑处理程序

    org.springframework.cloud.function.adapter.aws.FunctionInvoker: handleRequest

  4. 如果您在jar中定义了多个函数,那么Lambda需要知道应该调用哪个函数。要指定它,请转到Configuration部分。添加一个新的环境变量,如下所示变量名:spring_cloud_function_definition,值:<Name of your function>

注意:函数名应该与实现函数接口的方法名相同,以小写字母开头。

完成以上步骤后,就可以测试lambda了。

我在CodeTinkering博客的帮助下发布了这篇文章。您可以在这里参考原始文章CodeTinkering_Blog_AWSLambda_SpringCloudFunction

最新更新