繁体   English   中英

如何使用层构建和测试 AWS Lambda 代码

[英]How to build and test AWS Lambda code with layers

我是 AWS Lambdas 的新手。 运行 Java 11 并使用 IntelliJ。
我们目前有一个包含很多依赖项的层,因此我们的 lambdas 不必包含所有依赖项。 我们现在需要编写一组新的 lambda,它们将具有一些额外的通用功能,所以我想编写另一组通用代码,它也依赖于我们现有的依赖层。 然后,我们所有的新 lambda 将包含 Common 代码,其中还包含现有层

在我的新公共代码中,我像这样引用依赖层

<dependency>
   <groupId>com.xxx</groupId>
   <artifactId>my-layer</artifactId>
   <version>1.0-SNAPSHOT</version>
   <scope>provided</scope>
</dependency>

指定scope=provided以便该层不包含在 Common jar 中,而是由 AWS 在运行时提供。

问题是,当我编写另一个 lambda 试图将我的公共代码作为依赖项包含在内时,不包括依赖项层中的所有依赖项。 我只想能够在本地构建和测试。 有没有一种方法可以指定scope=provided仅在为实际部署构建时指定,但在本地测试时指定 scope scope=compile 或者也许是一种完全不同的方式?

您可以使用Maven 配置文件,创建类似这样的内容

<profiles>
    <profile>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <id>local</id>
        <dependencies>
            <dependency>
               <groupId>com.xxx</groupId>
               <artifactId>my-layer</artifactId>
               <version>1.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
    </profile>
    <profile>
        <id>deployment</id>
        <dependencies>
            <dependency>
               <groupId>com.xxx</groupId>
               <artifactId>my-layer</artifactId>
               <version>1.0-SNAPSHOT</version>
               <scope>provided</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>

因此,您将拥有本地开发的默认配置文件,并以这种方式使用您调用 maven 的其他依赖项定义

mvn -P deployment

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM