aws-lambdaaws-lambda入門


備註

AWS Lambda是一種無服務器設置,用於在雲中執行功能。它利用現有的Amazon Web Services技術進行無限擴展,並在必要時在其自己的隔離環境中運行。使用Lambda,您可以上傳代碼,將其配置為基於各種觸發器運行,然後在完成時自動停用該進程。它採用按使用付費模式運行,極具成本效益且易於擴展。


AWS Lambda支持用Node.js(JavaScript),Python,Java(Java 8兼容)和C#(.NET Core)編寫的代碼。您的代碼可以包含現有庫,甚至是原生庫。

觸發器可包括:

HTTP端點

  • 移動應用
  • 其他AWS服務(包括使用Amazon API Gateway的REST實施)

Lambda最適合實時無服務器數據處理,例如:

  • 上傳文件處理
    • 轉碼
    • 索引
    • 驗證
    • 調整大小和過濾
  • 流數據分析
  • 遙測
  • 作為基於方法的移動和Web後端運行
  • 擴展和鏈接其他AWS產品

安裝或設置

  1. 登錄AWS控制台並單擊“ 服務”選項卡下的“ Lambda ”。

  2. 函數下,您將能夠使用相同標記的按鈕創建Lambda函數在此處輸入圖像描述

  3. 您將看到一個可以選擇藍圖的屏幕。這些只是現有Lambda函數的起點,可以快速啟動Lambda。 在此處輸入圖像描述

  4. 在下一個屏幕上,您可以配置任何您想用來“設置”此Lambda函數的觸發器。您可以選擇無觸發器(稍後通過手動設置,具體取決於您的任務),API網關(用於創建無服務器REST客戶端),Alexa技能或許多其他其他觸發您將創建的功能。 在此處輸入圖像描述

  5. 您將在下一個屏幕上完成配置,方法是設置名稱描述 ,選擇運行時 ,選擇內聯編輯函數,上傳.zip文件或從Amazon S3上傳文件,選擇一個角色 (對於基於權限的用途很有用) AWS服務之間的交互),設置內存和限制,並準備好您的應用程序以供實時使用。 在此處輸入圖像描述 在此處輸入圖像描述

  6. 最後,您將查看您的功能並創建它。由於Lambda使用按使用付費模式,因此在您開始使用新創建的功能之前不會產生任何充電器。 在此處輸入圖像描述

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執行的輸出。