如何從可上傳到 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>
uj5u.com熱心網友回復:
您可以在 Eclipse 中創建一個 Maven 專案,然后將其匯出為可以上傳到 AWS 管理控制臺的 JAR 檔案。這樣做很容易。要了解如何執行此用例,請參閱此 AWS 教程。它使用 IntelliJ(只需將其切換為 Eclipse),并遵循檔案的其余部分。
此 Lambda 函式的示例用例是檢測位于 Amazon Simple Storage Service (Amazon S3) 存盤桶中的影像中的個人防護設備 (PPE)。它會引導您完成所有步驟,包括部署 Lambda 函式。

放置在 DynamoDB 表中的資料:

您的錯誤是說它找不到信用提供者。使用 Lambda 時,您無需在 Java 代碼中設定憑據。權限在 IAM 角色中設定。您需要為 IAM 角色設定策略,以便它可以呼叫服務。所以在這個示例用例中,我們為lambda-support設定策略。
另一個更新
在 Eclipse 中,我使用您的代碼構建了一個專案(我認為這個 PPE 非常先進 - 因此我們將創建一個名為 Getting Started with Lambda 的新專案)。它運作良好:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/333068.html
標籤:爪哇 亚马逊网络服务 蚀 aws-lambda
上一篇:STS4.12上缺少匯出WAR
