我尝试将Java与AWS Lambda一起使用。我创建了一个包含所有依赖项的jar文件(使用maven-assembly-plugin)。上传后,我无法调用lambda。我收到错误Calling the Invoke API failed with message: Lambda was not able to unzip the file
。 jar文件是11 MB。我可以用java -jar
答案 0 :(得分:2)
maven-assemply-plugin
输出zip
,而不是jar
。 (我甚至不知道有什么不同!)
将其添加到其配置中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
...
<configuration>
...
<formats>
<format>zip</format>
</formats>
</configuration>
</plugin>
答案 1 :(得分:1)
同样的问题。
通常,如果lambda函数的.zip或.jar文件大小解压缩后大于 50MB ,则会发生此错误
确保lambda函数代码的大小小于 50MB
答案 2 :(得分:0)
之所以遇到这个问题,是因为打包了Shade插件的JAR既生成了文件,又生成了目录META-INF\version\9
。
通过排除这些文件,可以再次运行JAR。以下是Maven-shade-plugin的配置部分。
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>META-INF/versions/9</exclude>
<exclude>META-INF/versions/9/*</exclude>
</excludes>
</filter>
</filters>
</configuration>