【问题标题】:AWS Lambda created from assets in CDK throws Class not found exception从 CDK 中的资产创建的 AWS Lambda 引发 Class not found 异常
【发布时间】:2020-09-25 22:12:00
【问题描述】:

我正在尝试使用适用于 Java 的 AWS CDK 创建和上传 lambda。以下代码是我用来在 Stack 中创建 lambda 的代码。但是,这会在尝试运行 lambda 时引发 java.lang.ClassNotFoundException

    private fun createUserLambda(): Function {
        val dirPath = System.getProperty("user.dir")
        val lambdaDir = File("$dirPath/src/com/test/lambda")
        val props = FunctionProps.builder()
            .code(Code.fromAsset(File(lambdaDir, "handler").toString()))
            .handler(AddUser::class.java.canonicalName + "::" + AddUser::handleRequest.name)
            .runtime(Runtime.JAVA_8)
            .build()
        return Function(this, "UserCreateLambda", props)
    }

我可以看到存在我从创建的包含资产的 S3 存储桶下载 zip 文件的代码。不完全确定这里缺少什么,但任何帮助将不胜感激!谢谢

【问题讨论】:

  • 嗨@AsadSMalik 你能解决你的问题吗?我也面临同样的问题
  • 是的,接受的答案解决了它
  • 太棒了。您是否使用 Code.fromAsset() 以及指向 jar 或使用 CfnParametersCode.fromCfnParameters(); 来创建代码对象,如他们的示例文档中所示 docs.aws.amazon.com/cdk/latest/guide/codepipeline_example.html
  • 我用过Code.fromAsset()

标签: amazon-web-services kotlin aws-lambda aws-cdk


【解决方案1】:

看起来您的Code.fromAsset() 调用创建了源文件的工件。 Lambda 需要一个用于 Java 运行时的已编译 jar。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2020-01-17
    • 2018-10-10
    • 2022-01-23
    相关资源
    最近更新 更多