2017-07-24 62 views
2

我在創建不超過50MB大小限制的簡單Java AWS Lambda時遇到了問題,並且我不確定我要出錯的地方...簡單的AWS Lambda Maven項目超出了最大大小限制?

我的實際Java代碼只有100行左右。我正在使用Maven來拉我的依賴,其中大部分是AWS的依賴本身...

我做了一個mvn包或mvn乾淨安裝後,生成的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

請勿吸入整個AWS開發工具包 - 您的數量超過您需要的數量。首先簡單介紹一下你正在使用的服務 - 在你的例子中,你拉動了整個SDK **和** S3。我假設你只是想在這種情況下的S3。請注意,Lambda事件也拉大量 - 你真的需要嗎?我回答了一個類似的問題[這裏](https://stackoverflow.com/questions/42458440/use-proguard-for-scala-aws-lambda),並且能夠大大減少部署的大小。 – stdunbar

+0

謝謝!這實際上解決了我的問題,並大大減少了我的jar文件的大小!非常感謝! ;) – MikeAnthony

回答

0

你需要從你的Maven項目,並更新刪除<artifactId>aws-java-sdk-s3</artifactId><artifactId>aws-java-sdk</artifactId>依賴關係和重建Maven項目。

1

來解決這個問題,你需要做到以下幾點:

  1. 從你的POM中刪除亞馬遜SDK。

  2. 添加執行亞馬遜SDK變量: AWSEXECUTIONENV - > AWSLambdajava8

請記住,在你的項目中使用Java8。一個簡單項目的總大小將在7-10 MB左右。

如果你想一步看HOW-TO與GitHub的來源和步驟中,您可以看到它在我的博客:

jmazzetti.com -> Serverless on AWS Lambda using Java

一切順利,何塞 。

相關問題