APIゲートウェイリクエストによってトリガされたラムダ関数を使用してファイルを処理するプロジェクトを開発しています。この関数はS3バケット内のファイルを取得し、読み込みを開始します。このポイントまで、すべてが期待されるように動作しますが、ファイルの読み込みを開始するには、我々は次のエラーを受信したとき:NoClassDefFoundErrorライブラリでAWSラムダ関数を実行している場合
ファイルは、我々が原因事実に私たち自身のカスタムファイル読み込み/プロセスライブラリ(Javaプロジェクト)を使用(...)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.24.amzn1.x86_64/jre/lib/rt.jar: error reading zip file
2017-02-06 19:15:06 <9025af71-eca0-11e6-82d2-9ff4b9184005> ERROR JRestlessHandlerContainer:339 - container failure
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.24.amzn1.x86_64/jre/lib/rt.jar: error reading zip file
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.24.amzn1.x86_64/jre/lib/rt.jar: error reading zip file
END RequestId: (some id)
REPORT RequestId: (some id) Duration: 3047.44 ms Billed Duration: 3100 ms Memory Size: 1536 MB Max Memory Used: 94 MB
Exception in thread "main" java.lang.Error: java.lang.NoClassDefFoundError: java/lang/Throwable$WrappedPrintWriter
at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:59)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:94)
Caused by: java.lang.NoClassDefFoundError: java/lang/Throwable$WrappedPrintWriter
at java.lang.Throwable.printStackTrace(Throwable.java:721)
at lambdainternal.UserFault.trace(UserFault.java:43)
at lambdainternal.UserFault.makeUserFault(UserFault.java:26)
at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:290)
at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:57)
... 3 more
START RequestId: (some id) Version: $LATEST
END RequestId: (some id)
です私たちのニーズに合わせてカスタマイズし、Mavenを使ってプロジェクトに追加しました。私たちのラムダジャーは、Mavenのシェードプラグインを使用して生成された:
<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>
ローカルプロジェクトをテストする、それが正常に動作し、我々は、ファイルの情報を取得することができます。このコードでは、JAX-RSとSpringを使用してAPIゲートウェイを処理しています(結果が妨げられるかどうかはわかりません)。しかし今までは、ラムダを使ってプロジェクトを実行するときにこの問題を解決することはできませんでした。私たちのテストでは、機能のタイムアウトとメモリを目的に応じて増やしましたが、限界が何であっても、エラーは持続します。
ありがとうございます。
pom.xmlファイル全体を表示できますか?あなたはこれを見ましたか?http://docs.aws.amazon.com/lambda/latest/dg/java-create-jar-pkg-maven-no-ide.html – Zigglzworth
この「コンテナの故障」は、エラーがAWS側にあることを確認します。サポートチームまたはAWSフォーラムにお持ちください。 –
こんにちは@JeshanBabooa、それも我々が疑うものです。すでにAWSフォーラムにもこの問題が掲載されていますが、今までは回答がなく、ここに投稿することも決定しました。 –