本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Node.js 建置 Lambda 函數
您可以在 AWS Lambda中執行具有 Node.js 的 JavaScript 程式碼。Lambda 提供用於執行程式碼來處理事件的 Node.js 執行期。您的程式碼會在包含 的環境中執行 適用於 JavaScript 的 AWS SDK,其中包含您管理之 AWS Identity and Access Management (IAM) 角色的登入資料。若要進一步了解 Node.js 執行時期隨附的 SDK 版本,請參閱 包含執行時期的 SDK 版本。
Lambda 支援以下 Node.js 執行期。
| Name | 識別符 | 作業系統 | 取代日期 | 封鎖函數建立 | 封鎖函數更新 |
|---|---|---|---|---|---|
|
Node.js 24 |
|
Amazon Linux 2023 |
2028 年 4 月 30 日 |
2028 年 6 月 1 日 |
2028 年 7 月 1 日 |
|
Node.js 22 |
|
Amazon Linux 2023 |
2027 年 4 月 30 日 |
2027 年 6 月 1 日 |
2027 年 7 月 1 日 |
|
Node.js 20 |
|
Amazon Linux 2023 |
2026 年 4 月 30 日 |
2026 年 8 月 31 日 |
2026 年 9 月 30 日 |
若要建立 Node.js 函數
-
開啟 Lambda 主控台
。 -
選擇建立函數。
-
進行下列設定:
-
函數名稱:輸入函數名稱。
-
執行時間:選擇 Node.js 24.x。
-
-
選擇建立函數。
主控台將建立一個 Lambda 函數,其具有名為 index.mjs 的單一來源檔案。您可以使用內建的程式碼編輯器編輯該檔案並加入更多檔案。在 DEPLOY 區段中,選擇部署以更新函數的程式碼。然後,若要執行程式碼,請在測試事件區段中選擇建立測試事件。
index.mjs 檔案匯出名為 handler 的函數,它接受事件物件與內容物件。這就是在叫用函數時,Lambda 呼叫的處理常式函數。Node.js 函數執行期會從 Lambda 中取得調用事件並將它們傳遞至處理常式。在函式組態中,處理常式值為 index.handler。
當您儲存函數程式碼時,Lambda 主控台會建立 .zip 封存檔部署套件。當您在主控台之外開發函數程式碼 (使用 IDE) 時,您需要建立部署套件將您的程式碼上傳到 Lambda 函數。
除了傳遞調用事件外,函式執行期還會傳遞內容物件至處理常式。內容物件包含了有關調用、函式以及執行環境的額外資訊。更多詳細資訊將另由環境變數提供。
Lambda 函數隨附有 CloudWatch Logs 記錄群組。函數執行期會將每次調用的詳細資訊傳送至 CloudWatch Logs。它在調用期間會轉送您的函數輸出的任何記錄。如果您的函數傳回錯誤,Lambda 會對該錯誤進行格式化之後傳回給調用端。
主題
包含執行時期的 SDK 版本
所有支援的 Lambda Node.js 執行時間都包含 適用於 JavaScript 的 AWS SDK v3 的特定次要版本,而非最新版本
範例 index.mjs
import packageJson from '@aws-sdk/client-s3/package.json' with { type: 'json' }; export const handler = async () => ({ version: packageJson.version });
這會傳回下列格式的回應:
{ "version": "3.632.0" }
如需詳細資訊,請參閱在處理常式中使用適用於 JavaScript v3 的 SDK。
使用保持連線保持 TCP 連線
預設 Node.js HTTP/HTTPS 代理程式會為每個新的請求建立新的 TCP 連線。為避免建立新連線所產生的成本,所有支援的 Node.js 執行時期均預設啟用保持連線功能。保持連線可以減少使用 SDK 進行多次 API 呼叫的 Lambda 函數的請求次數。
若要停用保持連線,請參閱《AWS SDK for JavaScript 3.x 版本開發人員指南》中的在 Node.js 中透過保持連線重複使用連線。如需使用保持連線的詳細資訊,請參閱《 AWS 開發人員工具部落格》上的適用於 JavaScript 的模組化 AWS SDK 中的 HTTP 保持連線預設為開啟
CA 憑證載入
對於 Node.js 18 以下的 Node.js 執行時期版本,Lambda 會自動載入 Amazon 專屬的 CA (憑證授權單位) 憑證,讓您更輕鬆地建立與其他 AWS 服務互動的函數。例如,Lambda 包含在 Amazon RDS 資料庫上安裝的驗證伺服器身分憑證所需的 Amazon RDS 憑證。此行為可能會在冷啟動期間產生效能影響。
從 Node.js 20 開始,在預設情況下,Lambda 不再載入額外的 CA 憑證。Node.js 20 執行期包含一個憑證檔案,其中包含所有 Amazon CA 憑證位於 /var/runtime/ca-cert.pem。若要從 Node.js 18 及更早版本的執行期還原相同的行為,請將 NODE_EXTRA_CA_CERTS環境變數設定為 /var/runtime/ca-cert.pem。
為了獲得最佳效能,我們建議您只將需要的憑證與部署套件搭配,並透過 NODE_EXTRA_CA_CERTS 環境變數載入憑證。憑證檔案應包含一或多個 PEM 格式的受信任根憑證或中繼 CA 憑證。例如,對於 RDS,請在程式碼旁包含所需的憑證做為 certificates/rds.pem。然後,藉由將 NODE_EXTRA_CA_CERTS 設定為 /var/task/certificates/rds.pem 載入憑證。
實驗 Node.js 功能
上游 Node.js 語言版本預設啟用部分實驗性功能。為確保執行時期穩定性與效能一致性,Lambda 會停用這些功能。下表列出了 Lambda 停用的實驗性功能。
| 實驗性功能 | 支援的 Node.js 版本 | Lambda 套用的 Node.js 旗標 | 要重新啟用的 Lambda 旗標 |
|---|---|---|---|
|
支援在 ES 模組中使用 require 匯入模組 |
Node.js 20、Node.js 22 |
|
|
|
支援自動偵測 ES 模組與 CommonJS 模組的功能 |
Node.js 22 |
|
|
若要啟用已停用的實驗性功能,請在 NODE_OPTIONS 環境變數中設定重新啟用旗標。例如,若要啟用 ES 模組的 require 支援功能,請將 NODE_OPTIONS 設定為 --experimental-require-module。Lambda 偵測到此覆寫並移除了對應的停用旗標。
重要
使用實驗性功能可能會導致不穩定性與效能問題。這些功能可能會在未來的 Node.js 版本中變更或移除。使用實驗性功能的函式不符合 Lambda 服務水準協議 (SLA) 或 AWS 支援的資格。