当前位置: 首页 > 知识库问答 >
问题:

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

陶星波
2023-03-14

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

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中注册,控制器是com。tds。您好,与AWS API网关正确相关。

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

问题是,当我在提交代码后使用Bitbucket管道来执行自动上载(和更新)时,管道在本教程(自动AWS Lambda部署)之后以成功状态运行良好,但当我在AWS中测试/运行该功能时,我会出现以下错误:

{“errorMessage”:“未找到类:com.tds.Hello”,“errorType”:“java.lang.ClassNotFoundException”}

有人面临过这个问题吗?

共有1个答案

吴弘壮
2023-03-14

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

旧的比特桶管道。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'

新的比特桶管道。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'
 类似资料:
  • 我想使用DocuSign管理Api更新用户配置文件(联邦状态)。 下面是在URL中指定的使用授权代码授予(签名organization_readgroup_readuser_readuser_write)生成登录用户界面的范围。 但是当我使用下面的代码调用Docusing admin api时,它不允许任何更新并抛出错误“unauthorized” 更进一步 我已经包含了所有角色(请参阅下面用于授

  • 我想更新我的变量,但我的代码有一个错误,我不知道哪里有错误

  • 我想用Java更新时区数据。据我所知,可以使用解决这个问题。但我发现了错误: Java版本为: 怎么了?

  • 我在Laravel-5.1中有一个项目,我已经将我的平台从win10改为Ubuntu。 显示错误: 使用包信息加载composer存储库 更新依赖项(包括需要开发人员) 无法将您的需求解析为可安装的软件包集。 作曲家/json. }

  • 我在尝试更新我的Eclipse时出错! 以下是在“安装下载0”期间发生内部错误的错误日志 Java . lang . illegalargumentexception:比较法违反了它的通用契约!at Java . util . comparabletimsort . merge hi(comparabletimsort . Java:835)at Java . util . comparablet

  • 我的任务是完成以下两个Oracle函数: 将CLOB作为输入,并使用AES-256对其进行加密,然后返回加密的CLOB 将加密的CLOB作为输入,使用AES-256对其解密并返回解密的CLOB 它抛出的错误是: ORA-06502:PL/SQL:数值或值错误:十六进制到原始转换错误 ORA-06512:在“sn_pre_stage_415.f_decrypt_clob”,第33行 06502。00