教學課程:如何建立、上傳與叫用AWS Lambda函式 - AWS Toolkit for Eclipse

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:如何建立、上傳與叫用AWS Lambda函式

本教學課程會逐步引導您完成典型的AWS Lambda工作流程,並提供您使用 Lambda 和 Eclipse 工具包的第一手經驗。

重要

本教學課程假設您擁有AWS帳户,已安裝AWSToolkit for Eclipse,並且您瞭解 Lambda 的基本概念和功能。如果您不熟悉 Lambda,請前往Lambda主頁和AWSLambda 開發人員指南

建立 AWS Lambda 專案。

若要開始 Lambda 專案,您必須先在處理常式類別中將程式碼實作成方法。Toolkit for Eclipse 供新專案精靈,幫助您建立新的處理常式類別。Lambda 專案是一種 Maven 專案,其使用 POM.xml 檔案來管理套件相依性。您可以使用 Maven 命令列工具,建置、測試及部署您的應用程式。如需 Maven 的詳細資訊,請參閱 Maven 專案文件

建立 AWS Lambda 專案

  1. 在 Eclipse 工具列上,開啟 Amazon Web Services 選單 (以AWS主頁圖標),然後選擇新的AWSLambda Java 專案。或者,在 Eclipse (完成) 菜單列上,選擇File (檔案)新的AWSLambda Java 專案

  2. 在相關聯的輸入方塊中,新增「專案名稱」、「群組 ID」、「成品 ID」及「類別名稱」。其中的群組 ID 和成品 ID 是用以識別 Maven 組建成品的 ID。這份教學課程會使用下列範例值:

    • Project name (專案名稱)HelloLambda

    • 群組 IDcom.example.lambda

    • 成品 IDdemo

    • 類別名稱你好

    Package Name (套件名稱) 欄位是 AWS Lambda 處理常式類別的套件命名空間。此欄位的預設值為按照 Maven 專案慣例所串接的群組 ID 和成品 ID。當 Group ID (群組 ID)Artifact ID (成品 ID) 更新時,該欄位會自動更新。

  3. 針對 Input Type (輸入類型),選擇 Custom (自訂)。如需每個可用輸入類型的資訊,請參新的AWSLambda Java 專案對話方塊

  4. 按照下列螢幕擷取畫面,驗證您的項目 (如有差異,請予以修改),然後選取 Finish (完成)

    
                  New (新增) 中的專案名稱、組 ID、對 Artifact ID 和類別名稱值AWSLambda Maven Project (Lambda) 對話方塊

    當您輸入時,Source preview (來源預覽) 中的程式碼會隨時變更,反映您在對話方塊中所做的變更。

  5. 在選擇 Finish (完成) 後,您的 Eclipse 工作空間中會產生專案目錄和來源檔案。新的 Web 瀏覽器視窗隨即開啟,其中顯示README.html(這是在您的專案根目錄中為您建立的)。README.html提供説明資訊,指引您後續進行實作、測試、上傳和叫用新 Lambda 函數的步驟。請徹底閱讀前述資訊,以便熟悉此處所述步驟。

接著,在先前於 Eclipse 中為您建立的 HelloLambda Java 專案中,實作該函數。

實作處理常式方法

您可以使用 Create New Project (建立新專案) 對話方塊建立框架專案。現在,填入將在叫用 Lambda 函數時要執行的程式碼。(在本範例中,透過傳送字串到函數中的自訂事件,跟您設定方法的輸入參數時所指定的一樣。)

實作 Lambda 處理常式方法

  1. 在 Eclipse專案瀏覽器, 開啟Hello.java中的HelloLambda專案。其包含與下列類似的程式碼。

    package com.example.lambda.demo; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; public class Hello implements RequestHandler<Object, String> { @Override public String handleRequest(Object input, Context context) { context.getLogger().log("Input: " + input); // TODO: implement your handler return "Hello from Lambda"; } }
  2. 以下列程式碼取代 handleRequest 函數的內容。

    @Override public String handleRequest(String input, Context context) { context.getLogger().log("Input: " + input); String output = "Hello, " + input + "!"; return output; }

允許 Lambda 擔任 IAM 角色

若要使 Lambda 能夠存取您的 Lambda 函數,您必須建立能存取您的AWS的費用。您可以透過AWS Management Console或者使用 Toolkit for Eclipse 來完成。本節介紹如何在主控台中建立 IAM 角色。請參閱上傳程式碼使用 Toolkit of Eclipse 來建立一個工具組。

建立適用於 Lambda 的 IAM 角色

  1. 登入AWS管理主控台

  2. Services (服務) 選單中,開啟 IAM console (IAM 主控台)

  3. 在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

  4. 適用於選擇信任的實體類型,選擇AWS服務,然後選擇Lambda對於將使用此角色的服務。然後選擇 Next (下一步)Permissions (許可)。

  5. 針對 Attach permissions policy (連接許可政策),選擇 AWSLambdaBasicExecutionRole。這樣即可允許 Lambda 寫入您的 CloudWatch Logs 資源。然後選擇 Next (下一步)Review (檢閱)。

  6. 為您的角色新增名稱,例如 hello-lambda-role,以及角色的描述。然後選擇建立角色完成 IAM 角色的建立。

為您的 Lambda 程式碼建立 Amazon S3 儲存貯體

AWS Lambda進行上傳時,必須使用 Amazon S3 儲存貯體來存放您的 Java 專案。您可以使用已存在於AWS您將在其中執行程式碼的區域,或您可以建立一個新的 Lambda 使用 (建議)。

Amazon S3 以透過AWS Management Console或者使用 Toolkit for Eclipse 來完成。本節說明如何在主控台中建立 (主 Amazon S3 中建立 (主控台) 中。請參閱上傳程式碼使用 Toolkit of Eclipse 來建立一個工具組。

建立搭配 Lambda 使用的 Amazon S3 儲存貯體

  1. 登入AWS管理主控台

  2. Services (服務) 選單中,開啟 S3 console (S3 主控台)

  3. 選擇 Create bucket (建立儲存貯體)。

  4. 輸入儲存貯體名稱,然後為儲存貯體選擇一個區域。此區域應該就是您打算執行 Lambda 函數的區域。如需 Lambda 所支持的區域的列表,請參區域與端點中的AWS一般參考

  5. 選擇 Create (建立) 來完成建立儲存貯體。

上傳程式碼

接著,將您的程式碼上傳到 AWS Lambda 中,準備使用 AWS Management Console 呼叫它。

上傳您的函數到 Lambda

  1. 在 Eclipse 程式碼視窗中按一下滑鼠右鍵,選擇AWSLambda,然後選擇將函數上傳到AWSLambda

  2. 選取目標 Lambda 函數頁面上,選擇AWS要使用的區域。這應該就是您為 Amazon S3 儲存貯體選擇的同一區域。

    
                  Select Target Lambda function (選取目標 Lambda 函數) 頁面
  3. 選擇 Create a new Lambda function (建立新的 Lambda 函數),然後輸入函數的名稱 (例如 HelloFunction)。

  4. 選擇 Next (下一步)。

  5. 函式組態頁面中,輸入目標 Lambda 函數的描述,然後選擇函數將使用的 IAM 角色和 Amazon S3 儲存貯體。

    
                  Function Configuration (函數組態) 頁面

    如需可用選項的詳細資訊,請參上傳函數AWSLambda (Lambda) 對話方塊

  6. 函式組態頁面上,選擇建立函數角色如果您想要為 Lambda 函數建立新的 IAM 角色,請執行此操作。在 Create Role (建立角色) 對話方塊中輸入角色名稱。

    
                  在 Function Configuration (函數組態) 頁面中建立新的 IAM 角色
  7. 函式組態頁面上,選擇發行新版本如果您希望上傳程式碼建立新版本的 Lambda 函數。若要進一步了解 Lambda 中的版本控制與別名,請參AWSLambda 函數版本控制與別名中的AWS Lambda開發人員指南

  8. 如果選擇發佈新版本,Provide an alias to this new version (為此新版本提供別名) 選項隨即啟用。如果您希望將此別名與此版本的 Lambda 函數建立關聯,請選擇此選項。

  9. 函式組態頁面上,選擇建立中的函數程式碼的 S3 儲存貯體部分,如果您希望為 Lambda 函數建立新的 Amazon S3 儲存貯體。在 Create Bucket (建立儲存貯體) 對話方塊中,輸入儲存貯體名稱。

    
                  Create Bucket (建立儲存貯體) 頁面
  10. S3 Bucket for Function Code (函數程式碼的 S3 儲存貯體) 區段中,您也可以選擇加密已上傳的程式碼。在本範例中,請保持選取 None (無)。若要進一步了解 Amazon S3 加密,請參使用伺服器端加密保護資料中的Amazon Simple Storage Service 用户指南

  11. 保留 Advanced Settings (進階設定) 選項不變。Toolkit for Eclipse 將為您選取預設值。選擇完成將您的 Lambda 函數上傳至AWS。

如果上傳成功,您所選擇的 Lambda 函數名稱就會出現在專案瀏覽器視圖。

如果您沒有看到這種情況發生,請開啟 Eclipse錯誤日誌視圖。Lambda 會寫入有關上傳失敗的相關資訊,或執行您的函數到此錯誤日誌,以讓您能夠進行偵錯。

叫用 Lambda 函數

您現在可以在 AWS Lambda 上叫用該函數。

叫用您的 Lambda 函數

  1. 在 Eclipse 程式碼視窗中按一下滑鼠右鍵,選擇AWSLambda,然後選擇在上執行函數AWSLambda

  2. 選擇您想要叫用的處理常式類別。

  3. 在輸入方塊中,輸入有效的 JSON 字串,例如」AWSLambda」。

    
                  選擇要呼叫的 Lambda 處理常式
    注意

    您可以在專案中新增 JSON 輸入檔案,而如果檔案名稱以 .json. 為結尾,則這個對話方塊就會顯示這些檔案。您可以使用此功能,為 Lambda 函數提供標準的輸入檔。

  4. 根據預設,核取 Show Live Log (顯示即時日誌) 方塊。這時 Eclipse 中,將會顯示 Lambda 函數輸出的相關日誌。主控台

  5. 選擇呼叫將輸入數據傳送至您的 Lambda 函數。如果所有設定都正確無誤,則 Eclipse Console (主控台) 檢視中會印出函數的傳回值 (若先前未顯示,這時會自動出現)。

恭喜您,您成功地在 Eclipse IDE 中執行了第一個 Lambda 函數!

後續步驟

現在您已經上傳和部署了函數,請嘗試更改程式碼並重新執行函數。Lambda 會自動重新上傳該函數並進行叫用,並將其輸出印出到 Eclipse主控台

詳細資訊

如需本教學涵蓋內容各頁面的詳細資訊,以及每個選項的完整描述,請參AWSLambda 界面參考

如需 Lambda 以及如何為 Lambda 編寫 Java 程式碼的詳細資訊,請參在 Java 中創作 Lambda 函數中的AWS Lambda開發人員指南