一个简单的AWS Lambda maven项目超出了最大大小限制?

时间:2017-07-24 21:48:25

标签: java maven amazon-web-services lambda

我在创建一个不超过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>

2 个答案:

答案 0 :(得分:1)

要解决此问题,您需要执行以下操作:

  1. 从您的pom中删除amazon SDK。

  2. 添加Execution Amazon SDK变量: AWSEXECUTIONENV - &gt; AWSLambdajava8

  3. 请记住在项目中使用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项目。