【发布时间】:2021-12-08 13:05:55
【问题描述】:
如何从可以上传到 AWS Lambda 函数的现有 Java 项目创建 zip 文件?
我找不到有关如何执行此操作的任何明确步骤。我想将我的 Eclipse 项目导出为 zip 文件,然后将其上传到 AWS Lambda。目前,我使用 Eclipse 中的 AWS Toolkit 上传项目,但现在我想使用 zip 文件手动完成。
步骤是什么?
这就是我尝试的方式。这是我将项目导出为 zip 的地方:
然后,我去 AWS 并选择上传一个 zip 文件:
我选择我的 zip 文件,然后测试代码,这是我得到的错误:
{
"errorMessage": "Error loading class com.amazonaws.lambda.demo.LambdaFunctionHandler: com/amazonaws/auth/AWSCredentialsProvider",
"errorType": "java.lang.NoClassDefFoundError"
}
编辑:如果我使用 Toolkit 上传,则该功能有效,因此我知道所有资源都在文件夹中,我只需要弄清楚如何使用它。 这是函数的代码:
public class LambdaFunctionHandler extends IOException implements RequestHandler<SNSEvent, String> {
private static AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_1)
.withCredentials(DefaultAWSCredentialsProviderChain.getInstance()).build();
public LambdaFunctionHandler() {
}
@Override
public String handleRequest(SNSEvent event, Context context) {
try {
System.out.println("Hello world");
return "SUCCESS2";
} catch (Exception e) {
System.out.println("caught exception");
}
return "FAILURE2";
}
}
编辑#2:这是我的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.amazonaws.lambda</groupId>
<artifactId>demo</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<forceJavacCompilerUse>true</forceJavacCompilerUse>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>1.12.91</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.hierynomus/sshj -->
<dependency>
<groupId>com.hierynomus</groupId>
<artifactId>sshj</artifactId>
<version>0.29.0</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
</dependencies>
</project>
【问题讨论】:
标签: java amazon-web-services eclipse aws-lambda