跳至内容

我如何使用层将 AWS SDK for JavaScript 的最新版本集成到我的 Node.js Lambda 函数?

3 分钟阅读
0

AWS Lambda 运行时环境不具备 AWS SDK 最新版本中的所有功能。我想将适用于 JavaScript 的 AWS SDK 的最新版本集成到我的 Node.js Lambda 函数。

简述

要将最新版本的 AWS SDK 集成到 Lambda 函数的部署包,请创建一个 Lambda 层。然后,将该层添加到您的函数。

**注意:**对于 Node.js 版本 16 及更早版本,Lambda Node.js 运行时包含适用于 JavaScript 的 AWS SDK 版本 2。对于 Node.js 版本 18 及更高版本,Lambda Node.js 运行时包含适用于 JavaScript 的 AWS SDK 版本 3。有关详细信息,请参阅适用于 JavaScript 的 AWS SDK 文档

有关 Lambda 使用的运行时和 AWS SDK 版本的完整列表,请参阅 Lambda 运行时

**注意:**以下解决方法会增加函数部署包的大小。有关 Lambda 存储配额的信息,请参阅 Lambda 配额

解决方法

**注意:**如果您在运行 AWS 命令行界面 (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,请参阅安装适用于 JavaScript 的 SDK

  4. 创建一个 .zip 文件来上传到您的 Lambda 层:

    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(层)页面。
  2. 选择 Create layer(创建层)。
  3. 对于 Name(名称),输入新层的名称。
  4. 选择 Upload a .zip file(上传 .zip 文件),然后选择您的部署包 .zip 文件的名称。
  5. 选择 Create(创建)。
  6. 在 Lambda 控制台中打开 Functions(函数)页面,然后选择要向其添加层的函数的名称。
  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 官方已更新 10 个月前