構建 Lambda 函式



AWS Lambda 函式在被呼叫時執行程式碼。本章詳細討論了 AWS Lambda 函式生命週期中涉及的所有這些步驟。

構建 Lambda 函式的步驟

Lambda 函式的生命週期包括四個必要的步驟 -

  • 創作
  • 部署
  • 監控
  • 故障排除

創作 Lambda 程式碼

AWS Lambda 函式程式碼可以用以下語言編寫 -

  • NodeJS
  • Java
  • Python
  • C#
  • Go。

我們可以使用 AWS 控制檯、AWS CLI、Eclipse IDE、Visual Studio IDE、Serverless Framework 等編寫 AWS Lambda 的程式碼。

下表顯示了語言列表以及可用於編寫 Lambda 函式的不同工具和 IDE -

語言 用於創作 Lambda 程式碼的 IDE
NodeJS

AWS Lambda 控制檯

Visual Studio IDE

Java Eclipse IDE
Python AWS Lambda 控制檯
C#

Visual Studio IDE

.NET Core

Go AWS Lambda 控制檯

部署 Lambda 程式碼

一旦您確定要使用哪種語言編寫 Lambda 函式,就有兩種方法可以部署程式碼 -

  • 直接在 AWS 控制檯中編寫程式碼
  • 將所有檔案和依賴項打包成 zip 或 jar 檔案

但是,請記住,必須為 zip 檔案授予正確的許可權。

測試 Lambda 程式碼

Lambda 程式碼可以在 AWS Lambda 控制檯中針對事件進行測試。也可以從 AWS CLI 和 Serverless CLI 測試 Lambda 函式。AWS 控制檯還具有事件資料,這些資料可用作測試 AWS Lambda 函式時的示例事件。

監控 Lambda 函式

可以使用 AWS CloudWatch 監控 Lambda 函式。我們可以在選擇的語言中新增必要的日誌訊息,並在 AWS CloudWatch 中檢視這些訊息。

要開始編寫 Lambda 函式,需要遵循一定的模式。以下是編寫 Lambda 函式需要遵循的主要核心概念 -

處理程式

處理程式是 AWS Lambda 函式的名稱,從這裡開始執行。它在 AWS 控制檯中顯示如下 -

Handler

請注意,這裡我們將預設處理程式更改為另一個名稱,並在處理程式中更新了該名稱 -

Default Handler

請注意,處理程式的呼叫方式因選定的執行時語言而異。

傳遞給處理程式的引數

如果您觀察處理程式函式,傳遞的引數為event、context回撥函式,如下所示 -

Params Passed

Event引數包含用於觸發器的所有詳細資訊。

Context引數主要負責 Lambda 函式執行的執行時詳細資訊。我們可以使用context引數與 Lambda 函式進行互動。它包含諸如 AWS Lambda 終止函式之前剩餘的時間(即建立 Lambda 函式時指定的超時)、Lambda 函式的名稱、CloudWatch 組名稱、ARN 詳細資訊等資訊。

示例

讓我們藉助一個示例來了解從 AWS Lambda context 物件獲得的詳細資訊 -

exports.lambdahandler = (event, context, callback) => {
   // TODO implement
   console.log("context object details");
   console.log(JSON.stringify(context));
   callback(null, 'Lambda test');
};

當您執行上面顯示的 Lambda 函式時,您會看到以下輸出 -

輸出

Summary

context詳細資訊如下所示 -

{
   "callbackWaitsForEmptyEventLoop":true,"logGroupName":"/aws/lambda/myfirstlambdafunction",
   "logStreamName":"2018/05/20/[$LATEST]04f17ee4ff7048d5bb1fedffaa807c71","functionName":
   "myfirstlambdafunction","memoryLimitInMB":"128","functionVersion":"$LATEST","invokeid":
   "c931e21c-5bf3-11e8-acfe-47fdbb39eee9","awsRequestId":"c931e21c-5bf3-11e8-acfe-47fdbb39eee9",
   "invokedFunctionArn":"arn:aws:lambda:us-east-1:625297745038:function:myfirstlambdafunction"
}

請注意,它包含 functionName、memoryLimit、requestId 等詳細資訊。

日誌記錄

AWS 函式執行時,在 Lambda 函式內部新增的日誌將顯示在 AWS CloudWatch 中。日誌語法會因所選語言而異。例如,在nodejs中,它是 console.log。

這是您可以在 AWSCloudWatch 中看到的輸出 -

AWSCloudWatch

錯誤處理

AWS Lambda 函式提供了一個回撥函式,用於通知 Lambda 函式已發生錯誤或成功。請注意,這裡我們使用 nodejs 作為執行時。錯誤處理會根據所選語言而異。

請觀察此處提供的示例以更好地理解 -

exports.lambdahandler = (event, context, callback) => {
   // TODO implement
   var error = new Error("There is error in code");
   callback(error);
};

輸出

當您測試 Lambda 程式碼時,您可以找到如下所示的輸出 -

Execution Result Failed

日誌詳細資訊如下 -

Log Output
廣告

© . All rights reserved.