2

I'm trying to use Java with AWS Lambda. I created a jar file with all dependencies (using maven-assembly-plugin). Upon uploading, I cannot call the lambda. I receive the error Calling the Invoke API failed with message: Lambda was not able to unzip the file. The jar file is 11 MB. I can execute the jar with java -jar

Aleksandr Dubinsky
  • 22,436
  • 15
  • 82
  • 99

3 Answers3

2

maven-assemply-plugin needs to be told to output a zip, not a jar. (I didn't even know there was a difference!)

Add this to its configuration:

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-assembly-plugin</artifactId>
     ...
     <configuration>
         ...
         <formats>
            <format>zip</format>
         </formats>
     </configuration>
</plugin>
Aleksandr Dubinsky
  • 22,436
  • 15
  • 82
  • 99
1

I ran into this because a JAR packed with the Shade plugin generated both the file and directory META-INF\version\9.

By excluding these files the JAR could be run again. The following is the configuration section for the 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>
Phyxx
  • 15,730
  • 13
  • 73
  • 112
1

The suffered from the same issue.

Generally, This error occurred if .zip or .jar file size of a lambda function is more than 50MB after unzipping it

Make the sure that size of a lambda function code is less than 50MB

Pravin Garodi
  • 186
  • 1
  • 6