У меня простой лямбда-запрос Micronaut AWS, обработанный с использованием функции micronaut-function-aws.
Сервис, который я внедряю, кажется, не создается, когда он запускается в AWS.
Если я выполняю весь обработчик функций скрипта groovy и использую @Field @Singleton TestService testService, то, кажется, он работает нормально при локальном запуске.
Есть идеи, что я делаю не так?
Сервис:
package testtest
import groovy.transform.CompileStatic
@CompileStatic
@Singleton
class TestService {
String test = "Test"
}
, обработчик:
package testtest
import com.amazonaws.services.lambda.runtime.Context
import io.micronaut.function.aws.MicronautRequestStreamHandler
import javax.inject.Inject
class TestHandler extends MicronautRequestStreamHandler {
@Inject TestService testService
@Override
protected void execute(InputStream input, OutputStream output, Context context) throws IOException {
output << testService.test
}
}
Трассировка стека от AWS lambda
Cannot get property 'test' on null object: java.lang.NullPointerException
java.lang.NullPointerException: Cannot get property 'test' on null object
at org.codehaus.groovy.runtime.NullObject.getProperty(NullObject.java:60)
at org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:190)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:304)
at testtest.TestHandler.execute(TestHandler.groovy:14)
at testtest.TestHandler.execute(TestHandler.groovy)
at io.micronaut.function.aws.MicronautRequestStreamHandler.handleRequest(MicronautRequestStreamHandler.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)