运行 micronaut 本地无服务器

Running micronaut serverless locally

我正在尝试使用函数创建带有 micronaut 的 AWS Lambda 函数,即我创建了我的 poc 项目:

mn create-function-app --build=maven --jdk=11 micronaut-test

我可以非常轻松地构建它并将其部署到 AWS,但我想知道是否有办法在本地 运行 它以便我可以像 运行 常规测试一样快速测试更改

的 micronaut 应用
mvn mn:run

现在只是示例应用程序,重新表述我的问题; BookRequestHandler 中的 execute 方法是否可以在不上传到 AWS 的情况下触发?

提前致谢。

Maven 配置文件可用于 select 运行 时间(在此示例中使用 netty)和主要 class:

    <profiles>
        <profile>
            <id>local</id>
            <properties>
                <exec.mainClass>micronaut.Application</exec.mainClass>
                <micronaut.runtime>netty</micronaut.runtime>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>io.micronaut</groupId>
                    <artifactId>micronaut-http-server-netty</artifactId>
                    <scope>compile</scope>
                </dependency>
            </dependencies>
        </profile>
    </profiles>

使用控制器创建主 class,控制器具有调用函数的 Post 方法

package micronaut;

import io.micronaut.http.annotation.Body;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Post;
import io.micronaut.runtime.Micronaut;
import micronaut.test.Book;
import micronaut.test.BookRequestHandler;
import micronaut.test.BookSaved;

public class Application {

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

    @Controller()
    public static class LambdaController {

        private static final BookRequestHandler handler = new BookRequestHandler();

        @Post
        public BookSaved execute(@Body Book book) {
            return handler.execute(book);
        }
    }
}

和运行以及

mvnw mn:run -Plocal

现在您可以使用

curl --location --request POST 'http://localhost:8080/' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "Test"}'

回归

{
    "name": "Test",
    "isbn": "2a163c3d-4bd6-444d-914d-58daf3e649b8"
}

这有点 hacky,要测试您的功能,您可以查看 micronaut-test/src/test/java/micronaut/test/BookRequestHandlerTest。java class 或查看 Testing Lambda Handlers官方文档.

注意: 对于使用 mn create-app -f aws-lambda ... 创建的应用程序不需要 in pom.xml,生成Application.java.