我在创建一个不超过50MB大小限制的简单Java AWS Lambda时遇到了麻烦,我不确定我哪里出错...
我的实际Java代码只有大约100行。我正在使用Maven来引入我的依赖项,其中大部分都是AWS依赖项本身......
在我做了mvn包或mvn clean安装后,生成的jar大约是64MB!
我在这里做错了什么?如果我不添加AWS依赖项,那么我无法使用maven构建,但如果我这样做,那么生成的jar文件很大,我无法将其上传到AWS lambda,因为大小限制......
我的pom文件如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>lambda-handler</groupId>
<artifactId>lambda-handler</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.166</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.166</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.3</version>
</dependency>
</dependencies>
</project>
答案 0 :(得分:1)
要解决此问题,您需要执行以下操作:
从您的pom中删除amazon SDK。
添加Execution Amazon SDK变量: AWSEXECUTIONENV - &gt; AWSLambdajava8
请记住在项目中使用Java8。一个简单项目的总大小约为7-10 MB。
如果您想通过github源查看HOW-TO并逐步进行,您可以在我的博客上看到它:
jmazzetti.com -> Serverless on AWS Lambda using Java
一切顺利, 何。
答案 1 :(得分:0)
您需要从maven项目中删除<artifactId>aws-java-sdk-s3</artifactId>
和<artifactId>aws-java-sdk</artifactId>
个依赖项,然后更新并重建您的maven项目。