Java AWS-Lambda S3 已觸發

AWS-Lambda 函式可以附加到某個桶事件。無論何時建立或刪除檔案/資料夾,事件都可以觸發 lambda 函式執行。

一個簡單的 Lambda 函式,用於列印上傳檔案的名稱

這是一個用於列印上傳檔名稱的 lambda 專案。對於 maven,我們需要新增這些依賴項:

    <dependencies>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-lambda-java-core</artifactId>
        <version>1.1.0</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-lambda-java-events</artifactId>
        <version>1.3.0</version>
        <type>jar</type>
    </dependency>
</dependencies>

現在讓我們轉到我們的 HelloWorld 類:

package com;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;
import com.amazonaws.services.s3.event.S3EventNotification;

public class HelloWorld implements RequestHandler< S3Event, String> {
    @Override
    public String handleRequest(S3Event event, Context ctx) {
     S3EventNotification.S3EventNotificationRecord record=event.getRecords().get(0);
     System.out.println("Bucket Name is "+record.getS3().getBucket().getName());
     System.out.println("File Path is "+record.getS3().getObject().getKey());
     return null;
    }
}

下一步是使用 mvn 構建專案。

構建專案後,我們需要將其上傳到 AWS-Lambda。轉到 Lambda,選擇“建立 lambda 函式”。跳過選擇藍圖的部分,因為 Java 通常不存在。

此外,跳過配置觸發器,因為我們將從其他位置配置它。在下一頁中,輸入第一個 lambda 函式的名稱,然後輸入一個小描述,並選擇 Java 作為執行時。

對於程式碼輸入型別,選擇“從 .ZIP 檔案上傳”,然後在下一個位置選擇 .zip 檔案進行上傳。

這個頁面上棘手的部分是 Handler 欄位。在處理程式欄位中,你必須指定實現 RequestHandler 的類的位置。此類是 lambda 的入口點,如果未正確指定,則 Lambda 函式將不起作用。我們的案件處理程式是“com.HelloWorld”

將 S3 觸發器附加到 Lambda:

在這裡,我們將附加一個 S3 檔案上傳的觸發器

  • 轉到 S3,選擇儲存桶,然後選擇屬性
  • 屬性部分中,轉到事件
  • 新增活動詳情。在事件欄位中,選擇要觸發 Lambda 的方式。我們將選擇“ObjectCreated(All)”注意 lambda 函式和 bucket 需要在同一個亞馬遜地區
  • 對於 Sends to,請檢查 Lambda 函式,然後從列表中選擇 lambda 函式。

監控 Lambda 輸出

現在,我們將檔案上傳到具有 lambda 觸發器的儲存桶。要檢視 lambda 輸出和日誌,請轉到 CloudWatch,然後選擇 Logs,然後選擇 Lambda 函式。你可能會在 Log Streams 下看到許多條目,選擇最新的條目並將其開啟。你應該能夠在那裡看到 lambda 執行的輸出。