java - 使用 Bitbucket Pipelines 更新 AWS Java Lambda 函数时出错 - java.lang.ClassNotFoundException

标签 java amazon-web-services aws-lambda bitbucket-pipelines

我有一个基本的AWS Lambda Java函数my-function

public class Hello implements RequestHandler<Request, Response> {
    public Response handleRequest(Request request, Context context) {
        String greetingString = String.format("Hello %s", request.name);
        return new Response(greetingString);
    }
}

该 Lambda 函数已在 AWS 中注册良好, Controller 为 com.tds.Hello 并且与 AWS API Gateway 正确关联。

最终的JAR是通过Maven构建的,没有任何问题。当我直接在 AWS 中上传 JAR 时,该功能运行良好。

问题是当我使用 Bitbucket Pipelines 时为了在提交代码后进行自动上传(和更新),管道运行良好,并在This tutorial (Automating AWS Lambda deployments)之后显示成功状态。但是当我在 AWS 中测试/运行该函数时,出现以下错误:

{"errorMessage":"Class not found: com.tds.Hello","errorType":"java.lang.ClassNotFoundException"}

有人遇到过这个问题吗?

最佳答案

错误发生在创建ZIP 文件并通过Bitbucket Artifacts 传递时。我避免压缩(ZIP)文件,而是直接使用 JAR 在 AWS 中上传。我更新了 bitbucket-pipelines.yml 如下:

bitbucket-pipeline.yml

pipelines:
  default:
    - step:
        name: Build and package
        script:
          - apt-get update && apt-get install -y zip
          - zip my-function.zip target/my-function.jar 
          - pipe: atlassian/aws-lambda-deploy:0.3.0
            variables:
              AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
              AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
              AWS_DEFAULT_REGION: $AWS_REGION
              FUNCTION_NAME: 'my-function'
              COMMAND: 'update'
              ZIP_FILE: 'my-function.zip'

bitbucket-pipeline.yml

pipelines:
  default:
    - step:
        name: Build and package
        script:
          - pipe: atlassian/aws-lambda-deploy:0.5.0
            variables:
              AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
              AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
              AWS_DEFAULT_REGION: $AWS_REGION
              FUNCTION_NAME: 'my-function'
              COMMAND: 'update'
              ZIP_FILE: 'target/my-function.jar'

关于java - 使用 Bitbucket Pipelines 更新 AWS Java Lambda 函数时出错 - java.lang.ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60235839/

相关文章:

node.js - Node lambda 未写入 DynamoDB 且没有错误

amazon-web-services - 如何使用 AWS-Lambda-Function 发出 SSL 请求?

java - MySQL classNotFoundException & 找不到适合 jdbc 的驱动程序

java - 如何为 Play Java 项目的 Eclipse IDE 创建项目设置

java - 为什么这个 Java 8 流示例不能编译?

java web应用程序-使用amazon sqs创建类似Google任务队列的功能

linux - jenkins.plugins.publish_over.BapPublisherException : Failed to connect and initialize SSH connection Message [Auth fail]

amazon-web-services - AWS 云形成 : Configuring replication for an existing S3 bucket

java - ImageView 上的 setBackgroundResource 返回 null

amazon-web-services - 在本地Serverless离线环境下通过SNS消息调用Lambda函数