Aws lamba, работающая локально на локальном стеке, не может найти зависимости - PullRequest
0 голосов
/ 26 октября 2018

Привет, ребята, у меня проблема с тем, что моя лямбда не может найти свои зависимости при загрузке на локальную aws лямбду, работающую на localstack.

Вот как я создаю свою лямбду

aws --endpoint-url=http://localhost:4574 lambda create-function --function-name=myFunction --runtime=java8 --role=r1 --handler=my.UpdateHandler --zip-file fileb://my-lambda-0.1.0-1540476215-64df908.zip

Вот как это выполняется

aws lambda --endpoint-url=http://localhost:4574 invoke --invocation-type RequestResponse --function-name myFunction --region eu-west-1 --payload {} out.txt

Трассировка стека выглядит следующим образом

Exception: Lambda process returned error status code: 1. Output:
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at cloud.localstack.LambdaExecutor.getHandler(LambdaExecutor.java:138)
    at cloud.localstack.LambdaExecutor.main(LambdaExecutor.java:52)
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
    at my.create(Houston.java:56)
    at my.UpdateHandler.<init>(UpdateHandler.java:17)
    ... 6 more
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 8 more

Просто отметим, что рассматриваемый класс находится внутри jar каталога lib, который также находится на верхнем уровне, как и сама лямбда.

Еще один момент, на который следует обратить внимание: запуск примера helloworld без внешних зависимостей работает нормально.

Любые указатели были бы полезны. заранее спасибо

...