API 게이트웨이 요청에 의해 트리거 된 람다 함수를 사용하여 파일을 처리하는 프로젝트를 개발 중입니다. 그런 다음 S3 버킷에서 파일을 가져 와서 읽기 시작합니다. 이 점까지, 모든 것이 예상처럼 작동하지만, 파일 읽기 시작 우리는 다음과 같은 오류가 나타나면NoClassDefFoundError 라이브러리가있는 AWS 람다 함수를 실행할 때
파일 우리는 사실 때문에 우리 자신의 사용자 정의 파일 읽기/프로세스 라이브러리 (자바 프로젝트)를 사용(...)
/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을 사용하여 프로젝트에 추가했습니다. 우리의 람다 단지는 메이븐 그늘 플러그인을 사용하여 생성되었습니다
<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 포럼에도이 문제를 게시했지만 지금까지 답변을 얻지 못했으며 여기에도 게시하기로 결정했습니다. –