Я создал функцию AWS Lambda и теперь пытаюсь настроить развертывание на AWS. Я создал файл buildspec.yml со следующим содержимым:
version: 0.1
phases:
build:
commands:
- echo Entering build phase...
- echo Build started on `date`
- mvn package shade:shade
- mv target/classes/* .
- rm -rf target src buildspec.yml pom.xml
- aws cloudformation package --template template.json --s3-bucket $S3_BUCKET --output-template template-export.json
artifacts:
type: zip
files:
- template-export.json
Теперь, когда я отправляю свой код в AWS CodeCommit, процесс сборки выполняется успешно, но в выходной корзине s3 есть выходной файл размером всего 130 КБ. Это означает, что в созданном пакете отсутствуют мои зависимости, и когда я пытаюсь запустить свою лямбду, я получаю следующую ошибку:
Ошибка при загрузке класса com.test.handler: org/apache/log4j/Logger: class java.lang.NoClassDefFoundError
В моем файле pom.xml я добавил плагин тени:
<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>
Когда я запускаю команду mvn package
на своем ПК, все в порядке, и я получаю файл jar, содержащий все мои зависимости (размер немногим более 10 МБ), и если я вручную развертываю этот jar в лямбда-функции AWS, все работает, как и ожидалось.
Я также пытался следовать этому руководству: Ссылка а>, но ничего не изменилось.
Может кто-нибудь помочь, я действительно не знаю, что мне здесь не хватает:/