【发布时间】:2017-07-24 21:48:24
【问题描述】:
我在创建一个不超过 50MB 大小限制的简单 Java AWS Lambda 时遇到了问题,我不确定我哪里出错了...
我的实际 Java 代码只有 100 行左右。我正在使用 Maven 来引入我的依赖项,其中大部分是 AWS 依赖项本身......
在我执行 mvn package 或 mvn clean install 后,生成的 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>
【问题讨论】:
-
不要引入整个 AWS 开发工具包 - 您拥有的东西比您需要的要多。从仅提取您正在使用的服务开始 - 在您的示例中,您将提取整个 SDK 和 S3。我假设在这种情况下你只想要 S3。请注意,Lambda 事件也会带来大量 - 你真的需要吗?我回答了一个类似的问题here,并且能够大大降低部署规模。
-
谢谢!这实际上解决了我的问题并大大减少了我的 jar 文件的大小!太感谢了! ;)
标签: java maven amazon-web-services lambda