2

https://spring.io/blog/2018/10/22/functional-bean-registrations-in-spring-cloud-functionに記載されている機能 Bean 登録を使用して、AWS Lambda にデプロイしようとしました。https://github.com/mydeveloperplanet/MySpringCloudFunctionPlanet/tree/feature/aws-funtion-bean-definitionのコードを参照してください。

ただし、アプリケーションを関数 Bean スタイルに変換すると、次のエラーが発生します。

2020-10-24 11:11:42.910  INFO 8 --- [           main] lambdainternal.AWSLambda                 : Starting AWSLambda on 169.254.55.181 with PID 8 (/var/runtime/lib/aws-lambda-java-runtime-0.2.0.jar started by sbx_user1051 in /var/task)
2020-10-24 11:11:42.932  INFO 8 --- [           main] lambdainternal.AWSLambda                 : No active profile set, falling back to default profiles: default
2020-10-24 11:11:44.813  INFO 8 --- [           main] lambdainternal.AWSLambda                 : Started AWSLambda in 4.559 seconds (JVM running for 6.581)
No qualifying bean of type 'org.springframework.cloud.function.context.FunctionCatalog' available: org.springframework.beans.factory.NoSuchBeanDefinitionException
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.cloud.function.context.FunctionCatalog' available
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:351)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1127)
    at org.springframework.cloud.function.adapter.aws.FunctionInvoker.start(FunctionInvoker.java:124)
    at org.springframework.cloud.function.adapter.aws.FunctionInvoker.<init>(FunctionInvoker.java:77)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)

END RequestId: 1e5c5105-1be5-4388-81f7-f60c77377036
REPORT RequestId: 1e5c5105-1be5-4388-81f7-f60c77377036  Duration: 6842.67 ms    Billed Duration: 6900 ms    Memory Size: 512 MB Max Memory Used: 47 MB  
Unknown application error occurred
org.springframework.beans.factory.NoSuchBeanDefinitionException

コードは次のとおりです (GitHub https://github.com/mydeveloperplanet/MySpringCloudFunctionPlanet/tree/masterで入手できます)。

@SpringBootConfiguration
public class MySpringCloudFunctionPlanetApplication implements ApplicationContextInitializer<GenericApplicationContext> {

    public static void main(String[] args) {
        FunctionalSpringApplication.run(MySpringCloudFunctionPlanetApplication.class, args);
    }

    public Function<String, Boolean> containsCloud() {
        return value -> value.contains("cloud");
    }

    @Override
    public void initialize(GenericApplicationContext context) {
        context.registerBean("containsCloud", FunctionRegistration.class,
                () -> new FunctionRegistration<>(containsCloud())
                        .type(FunctionType.from(String.class).to(Boolean.class)));
    }

}

ここで何が欠けていますか?

4

1 に答える 1