跳至內容

如何使用層將適用於 JavaScript 的 AWS SDK 最新版本整合到我的 Node.js Lambda 函式中?

3 分的閱讀內容
0

AWS Lambda 執行時期環境並不包含最新版本 AWS SDK 的所有功能。我想將最新版本的 AWS SDK for JavaScript 整合到我的 Node.js Lambda 函式中。

簡短描述

若要將最新版本的 AWS SDK 整合到 Lambda 函式的部署套件中,請建立 Lambda 層。然後,將該層新增到您的函式中。

**注意:**對於 Node.js 第16 版及更早版本,Lambda Node.js 執行時期包含 AWS SDK for JavaScript 第 2 版。對於 Node.js 第 18 版及更新版本,Lambda Node.js 執行時期包含 AWS SDK for JavaScript 第 3 版。如需詳細資訊,請參閱 AWS SDK for JavaScript 文件

如需 Lambda 使用的執行時期和 AWS SDK 版本的完整清單,請參閱 Lambda 執行時期

**注意:**下列解決方案會增加函式部署套件的大小。如需 Lambda 儲存配額的資訊,請參閱 Lambda 配額

解決方案

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

(選用) 確認您函式使用的 AWS SDK 版本

請完成下列步驟:

**注意:**此方法僅適用於 Node.js 第 16 版及更早版本。

  1. 在 Lambda 主控台中建立函式

  2. 更新函數的程式碼,以傳回在您調用函數時該函數會使用的 AWS SDK 版本:

    const AWS = require('aws-sdk')   
    exports.handler = async (event) => {  
    return AWS.VERSION;  
    };
  3. 調用您的函式

  4. 將函式傳回的 AWS SDK 版本與 AWS SDK 文件中的 AWS SDK 最新版本進行比較。

安裝和封裝最新版本的 AWS SDK

**注意:**部署套件必須與您使用的 Lambda 執行時期相容。最佳做法是對 Lambda 執行時期中指定的執行時期使用相同的作業系統 (OS)。

在與 Lambda 相容的開發環境中,完成下列步驟:

  1. 執行下列命令以建立目錄:

    mkdir -p aws-sdk-layer/nodejs
  2. 執行下列命令以變更目錄:

    cd aws-sdk-layer/nodejs
  3. 為 Node.js 執行時期版本安裝 AWS SDK:
    Node.js 16 及更早版本 (AWS SDK 第 2 版)
    若要安裝最新版本的 AWS SDK 第 2 版,請使用 Amazon Linux 2 相容執行個體執行下列命令:

    npm install aws-sdk

    如需詳細資訊,請參閱教學課程: 在 Amazon EC2 執行個體上設定 Node.js
    **注意:**最佳做法是在開發 Lambda 資源時,使用 Amazon Linux 2 環境。
    -或-
    如果您使用 Windows 或 macOS 作業系統進行開發,請使用 Docker 執行下列命令:

    docker run --entrypoint "" -v "$PWD":/var/task "public.ecr.aws/lambda/nodejs:<version>" /bin/sh -c "npm install aws-sdk; exit"

    **注意:**在執行命令之前,請確定您使用的是 Docker 網站上最新版本的 Docker

    Node.js 18 及更新版本 (AWS SDK 第 3 版)
    若要安裝最新版本的 AWS SDK 第 3 版,請參閱安裝 SDK for JavaScript

  4. 建立要上傳至 Lambda 層的 .zip 檔案:

    zip -r ../package.zip ../
  5. (選用) 驗證您安裝的 AWS SDK 版本:

    cat package-lock.json

    輸出範例:

    {  "requires": true,    "lockfileVersion": 1,  
      "dependencies": {  
        "aws-sdk": {  
          "version": "2.888.0",  
    ...

使用 AWS CLI 或 Lambda 主控台來建立 Lambda 層,並將其新增至您的函式

AWS CLI

  1. 若要建立包含最新 AWS SDK 版本的新 Lambda 層,請執行下列 publish-layer-version 命令:

    aws lambda publish-layer-version --layer-name node_sdk --description "My layer" --license-info "MIT" --compatible-runtimes --zip-file fileb://../package.zip --region

    **注意:**將 node_sdk 替換為層的名稱,將 My layer 替換為層的描述。此外,將 compatible-runtimes 值替換為您使用的執行時期,並且將 region 替換為您的函式和層所在的 AWS 區域。

  2. 在輸出中,複製 LayerVersionArn 值以便在下一步中使用。

  3. 若要將層新增至函式中,請執行下列 update-function-configuration 命令:

    aws lambda update-function-configuration --function-name my-function --layers arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 --region

    **注意:**將 my-function 替換為您的函式名稱、將 arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 替換為輸出中的 LayerVersionArn 值,並且將 region 替換為您的區域。

如需詳細資訊,請參閱使用層管理 Lambda 相依性

Lambda 主控台

若要在 Lambda 主控台中建立 Lambda 層並將其新增至您的函式,請完成以下步驟:

  1. 在 Lambda 主控台中開啟 Layers page (層頁面)。
  2. 選擇 Create layer (建立層)。
  3. Name (名稱) 中,輸入層的名稱。
  4. 選擇 Upload a .zip file (上傳 .zip 檔案),然後選擇部署套件 .zip 檔案的名稱。
  5. 選擇 Create (建立)。
  6. 在 Lambda 主控台中開啟 Functions page (函式頁面),然後選擇您要新增層之函式的名稱。
  7. Layers (層) 中,選擇 Add a layer (新增層)。
  8. Choose a layer (選擇層) 中,選擇 Custom layers (自訂層)。
  9. 選擇 Custom Layers (自訂層) 下拉式清單,然後選擇自訂層。
  10. 選擇 Add (新增)。

(選用) 測試設定

完成 (選用) 確認函式使用的 AWS SDK 版本區段中的步驟來調用您的函式。該函式會傳回其使用的 AWS SDK 版本。

相關資訊

使用 AWS Lambda 函式的最佳做法

如何建置 Node.js 的 Lambda 部署套件?

如何為我的 Lambda Python 函式建立層?

AWS 官方已更新 1 年前