【发布时间】:2021-11-05 00:03:45
【问题描述】:
我正在尝试使用 java 实现 lambda 层。我为 lambda 层创建了一个项目,下面是代码:
图层代码
-
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven- 4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.i3l.layer</groupId> <artifactId>customlayer</artifactId> <version>1.1.0</version> </project> -
DataHandler.java
package customlayer; public class DataHandler { public String getData(String input) { System.out.println("Inside Layer"); return "Hello from Layer "+input; } }
功能代码: 我在 pom.xml 中添加了层依赖,例如:
<dependency>
<groupId>com.i3l.layer</groupId>
<artifactId>customlayer</artifactId>
<version>1.1.0</version>
<scope>provided</scope>
</dependency>
在 LambdaFunctionHandler.java
package com.amazonaws.lambda.userlayertest;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import customlayer.DataHandler;
public class LambdaFunctionHandler implements RequestHandler<RequestObject, String> {
@Override
public String handleRequest(RequestObject input, Context context) {
System.out.println("call to layer");
DataHandler dataHandler = new DataHandler();
String data = dataHandler.getData(input.getBody());
return data;
}
}
我尝试将 jar 直接上传到 layer 并将 jar 放入 zip 中,然后将其上传到 layer。在这两种情况下,我都会遇到错误:
"errorMessage": "customlayer/DataHandler",
"errorType": "java.lang.NoClassDefFoundError",
注意:我已经在 lambda 函数中添加了带有版本号的层。
如果有人帮我弄清楚为什么在 layer.xml 中找不到 java 类,那就太好了。我已经从 layer 下载了代码,我可以看到类文件在正确的路径中。
【问题讨论】:
标签: java aws-lambda aws-lambda-layers