[英]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.