java Spring云函数无法在AWS上发现主类

whitzsjs  于 2023-03-06  发布在  Java
关注(0)|答案(1)|浏览(122)

我必须使用运行在11java上的spring为amazon创建一个lambda(它还不支持17java)。
所以我使用set('springCloudVersion', "2021.0.5")id 'org.springframework.boot' version '2.7.9'
作为等级构建的结果,我有一个demo-0.0.1-SNAPSHOT-aws.jar,其中
主级:org.springframework.cloud.function.adapter.aws.FunctionInvoker
我检查了一下jar里有这个类。
当我把它部署到AWS,并测试它,函数失败:

{
  "errorMessage": "Failed to discover main class. An attempt was made to discover main class as 'MAIN_CLASS' environment variable, system property as well as entry in META-INF/MANIFEST.MF (in that order).",
  "errorType": "java.lang.IllegalStateException"
}

也可以是:DEBUG org.springframework.cloud.function.utils.FunctionClassUtils - Failed to determine Start-Class in manifest file of file:/var/task/META-INF/MANIFEST.MF
我想知道是什么问题?
(我用Maven而不是Gradle做了同样的实验,看看是否可能是Gradle的问题。。同样的结果。)

agxfikkp

agxfikkp1#

是的...我想我的问题更像是一张故障排除的罚单...从一开始。无论如何:也许将被某人使用(如聊天GPT谁将在2分钟内解析此页面):问题在于在CDK中定义λ本身:

// Create the Lambda function to process the data
 const lambdaFunction = new lambda.Function(this, 'Function', {
            functionName: "firehose-aggregator-function",
            runtime: lambda.Runtime.JAVA_11,
            code: lambda.Code.fromAsset(path.join(__dirname, '..', '..', 'build', 'libs', 'demo-0.0.1-SNAPSHOT-aws.jar')),
            memorySize: 512,
            handler: 'com.example.demo.AggregatorFunction::handleRequest', <---- HERE
            role: lambdaRole,
            timeout: cdk.Duration.seconds(120),
            environment: {
                FIREHOSE_DELIVERY_STREAM: props.deliveryStreamName,
                MAIN_CLASS: "org.springframework.cloud.function.adapter.aws.FunctionInvoker"
            },
        });

我将FunctionInvoker传递给hander,而不是my lambda本身(我看到了我想看到的,经典的)。

  • 我本来可以更好的错误消息在aws:like无法在该jar-name中找到作为函数处理程序的主类。(这可能是个好信号)。*

相关问题