[英]Error when update AWS Java Lambda Function using Bitbucket Pipelines - java.lang.ClassNotFoundException
我有一个基本的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中注册良好,控制器为com.tds.Hello
,正确关联AWS API Gateway 。
最终的JAR是通过 Maven 构建的,没有问题。 当我直接在AWS 中上传 JAR 时,该功能运行良好。
问题是,当我使用Bitbucket Pipelines在提交代码后进行自动上传(和更新)时,管道运行良好,并按照本教程(自动化 AWS Lambda 部署)成功状态运行,但是当我在 AWS 中测试/运行该函数时,我得到以下错误:
{"errorMessage":"找不到类: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'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.