使用 Node.js 建置 Lambda 函數 - AWS Lambda

使用 Node.js 建置 Lambda 函數

您可在 AWS Lambda 中執行 採用 Node.js 的 JavaScript 程式碼。Lambda 會為執行您程式碼以處理事件的 Node.js 提供執行時間。您的程式碼將使用您所管理的 AWS Identity and Access Management (IAM) 角色的登入資料,在含有 AWS SDK for JavaScript 的環境中執行。

Lambda 支援下列 Node.js 執行時間。

Node.js 執行時間
名稱 識別符 適用於 JavaScript 的 AWS 開發套件 作業系統

Node.js 12

nodejs12.x

2.712.0

Amazon Linux 2

Node.js 10

nodejs10.x

2.712.0

Amazon Linux 2

Lambda 函式使用執行角色取得許可,以將日誌寫入到 Amazon CloudWatch Logs 並存取其他服務和資源。如果您還沒有執行角色可用於進行函式開發,請建立該角色。

建立執行角色

  1. 在 IAM 主控台中開啟 Roles (角色) 頁面

  2. 選擇 Create Role (建立角色)。

  3. 建立具備下列屬性的角色。

    • Trusted entity (信任實體)Lambda

    • Permissions (許可)AWSLambdaBasicExecutionRole

    • Role name (角色名稱)lambda-role

    AWSLambdaBasicExecutionRole 政策具備函式將日誌寫入到 CloudWatch Logs 時所需的許可。

您可以稍後再為該角色新增許可,或將其與特定於單一函式的另一角色互換。

建立 Node.js 函數

  1. 開啟 Lambda 主控台

  2. 選擇 Create function (建立函式)

  3. 進行下列設定:

    • Name (名稱)my-function

    • 執行時間Node.js 12.x

    • Role (角色)Choose an existing role (選擇現有的角色)

    • Existing role (現有角色)lambda-role

  4. 選擇 Create function (建立函式)

  5. 若要設定測試事件,請選擇 Test (測試)

  6. Event name (事件名稱) 輸入 test

  7. 選擇 Create (建立)。

  8. 選擇測試)以叫用函數。

主控台將建立一個 Lambda 函式,其具有單一原始碼檔案名為 index.js。您可以使用內建的程式碼編輯器編輯該檔案並加入更多檔案。選擇 Save (儲存) 以儲存變更。然後,若要執行您的程式碼,請選擇 Test (測試)

注意

Lambda 主控台使用 AWS Cloud9 在瀏覽器中提供整合式開發環境。您也可以使用 AWS Cloud9 在您自己的環境下開發 Lambda 函式。如需詳細資訊,請參閱 AWS Cloud9 使用者指南中的使用 AWS Lambda 函式

index.js 檔案匯出了一個接受事件物件與內容物件的函式,其名為 handler。此為 Lambda 在叫用函式時所呼叫的處理常式函式。Node.js 函式執行時間會從 Lambda 取得叫用事件並其傳遞至處理常式。在函式組態中,處理常式值為 index.handler

每次您儲存函式程式碼時,Lambda 主控台都將建立一個部署套件,其為包含函式程式碼的 ZIP 封存檔。隨著函式開發的進展,您需要將函式程式碼存放於原始碼控制系統、加入程式庫並進行自動化部署。首先,透過命令列建立部署套件並更新您的程式碼。

注意

若要開始在您的本機環境中開發應用程式,請部署本指南 GitHub 儲存庫中可用的其中一個範例應用程式。

以 Node.js 編寫的範例 Lambda 應用程式

  • blank – Node.js 函數,示範如何使用記錄、環境變數、AWS X-Ray 追蹤、Layer、單元測試和 AWS 開發套件。

  • nodejs-apig – 具有公有 API 端點的函數,此端點會處理來自 API Gateway 的事件並傳回 HTTP 回應。

  • rds-mysql – 函數,可將查詢轉送至 RDS 資料庫的 MySQL。此範例包括已在 AWS Secrets Manager 中設定密碼的私有 VPC 和資料庫執行個體。

  • efs-nodejs – 在 Amazon VPC 中使用 Amazon EFS 檔案系統的函式。此範例包含設為與 Lambda 搭配使用的 VPC、檔案系統、掛載目標,以及存取點。

  • list-manager – 函數,可處理來自 Amazon Kinesis 資料串流的事件,並更新 Amazon DynamoDB 中的彙總清單。函數會針對 RDS 資料庫的 MySQL 中的每個事件在私有 VPC 中存放一筆記錄。此範例包括具有 DynamoDB 適用之 VPC 端點的私有 VPC 和資料庫執行個體。

  • error-processor – Node.js 函數,可針對指定的請求百分比產生錯誤。記錄錯誤時,CloudWatch Logs 訂閱會呼叫第二個函數。處理器函數使用 AWS 開發套件收集有關請求的詳細資訊,並將它們存放在 Amazon S3 儲存貯體中。

除了傳遞叫用事件外,函式執行時間還會傳遞內容物件至處理常式。內容物件包含了有關叫用、函式以及執行環境的額外資訊。更多詳細資訊將另由環境變數提供。

您的 Lambda 函式隨附了 CloudWatch Logs 日誌群組。函式執行時間會將有關每次叫用的詳細資訊傳送給 CloudWatch Logs。它會在叫用期間轉送您的函式輸出的任何日誌。如果您的函式傳回錯誤,Lambda 會對該錯誤進行格式化之後傳回給叫用端。