Описание:
Приложение java8 запускается локально после выполнения sam build; sam local invoke...
, но завершается неудачно с исключением ClassNotFound при развертывании с использованием sam package; sam deploy
Действия по воспроизведению проблемы:
- Инициализация приложения Java8 / gradle:
sam init -r java8 -d gradle && cd sam-app
- Выполнить
sam build
: sam build --use-container
- Заметьте, что функция работает успешно локально (это происходит с тем же исключением ClassNotFound без сборки sam выше):
sam local invoke HelloWorldFunction --no-event
- Пакет + развертывание:
sam package --template-file template.yaml --output-template-file packaged.yaml --s3-bucket <some bucket name>
sam deploy --template-file packaged.yaml --stack-name java8-gradle-test --capabilities CAPABILITY_IAM --region eu-west-2 --no-fail-on-empty-changeset
- В консоли AWS Lambda найдите функцию
java8-gradle-test-HelloWorldFunction-...
, добавьте произвольное тестовое событие и нажмите test
Наблюдаемый результат:
Результат выполнения: сбой
Журналы:
START RequestId: a5e25d74-4a0d-4763-b7a7-383aeede5c82 Version: $LATEST
Class not found: helloworld.App: java.lang.ClassNotFoundException
java.lang.ClassNotFoundException: helloworld.App
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
END RequestId: a5e25d74-4a0d-4763-b7a7-383aeede5c82
REPORT RequestId: a5e25d74-4a0d-4763-b7a7-383aeede5c82 Duration: 58.33 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 69 MB
Ожидаемый результат:
Тот же успешный ответ, что и при запуске sam local invoke
для этой функции.
Кажется, есть некоторая неожиданная разница между тем, что происходит с sam local invoke
и с sam package
, когда последний не берет артефакты из sam build
.