如何使用层将最新版本的适用于 JavaScript 的 AWS 开发工具包集成到 Node.js Lambda 函数中?

上次更新时间:2020 年 4 月 30 日

AWS Lambda 执行环境不具有最新版本 AWS 开发工具包的某些功能。如何使用层将最新版本的适用于 JavaScript 的 AWS 开发工具包集成到 Node.js Lambda 函数中?

简短描述

内置在 Lambda 执行环境中的 AWS 开发工具包版本不会一直处于最新状态,因此有些新的开发工具包功能可能不可用。使用 Lambda 层将最新版本的 AWS 开发工具包集成到 Lambda 函数部署程序包中。

注意:此解决方案可增加函数部署程序包的大小。有关 Lambda 存储资源的信息,请参阅 AWS Lambda 限制

以下说明将 Node.js 10.x 运行时用作示例。有关适用于 Node.js 和其他语言的运行时的列表和 Lambda 目前使用的 AWS 开发工具包版本,请参阅 AWS Lambda 运行时

解决方法

(可选)检查 AWS 开发工具包版本

要确认当前 AWS 开发工具包的版本,请执行以下操作:

1.    在 Lambda 控制台中创建函数

2.    更新函数代码,以输出 AWS 开发工具包的版本。如果您使用的是 Node.js 10x 运行时,您可以使用此示例代码:

const AWS = require('aws-sdk')

exports.handler = async (event) => {
return AWS.VERSION;
};

3.    执行您的函数。此函数将返回 AWS 开发工具包的版本。

4.    将函数返回的 AWS 开发工具包版本与 AWS 开发工具包文档中确定的最新版本进行比较。

安装并打包最新的 AWS 开发工具包版本

注意:部署程序包必须与 Lambda 环境兼容。对于以下步骤,最佳实践是按照 AWS Lambda 运行时中的规定为您的运行时使用匹配的操作系统。

在兼容 Lambda 的本地开发环境中执行以下操作:

1.    创建工作目录:

mkdir -p aws-sdk-layer/nodejs

2.    切换到工作目录:

cd aws-sdk-layer/nodejs

3.    安装最新版本的 AWS 开发工具包:

npm install aws-sdk

4.    创建 .zip 文件以上传到层。

zip -r ../package.zip ../

5.    (可选)验证您已安装的 AWS 开发工具包版本:

cat package-lock.json

输出类似于以下内容:

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

创建层并将其添加到您的函数 (AWS CLI)

注意:您也可以使用 Lambda 控制台创建一个层并将其添加到您的函数。有关控制台说明,请参阅以下部分。

1.    从 AWS 命令行界面 (AWS CLI) 中运行 Lambda publish-layer-version 命令:

注意:node_sdk 替换为您要为层指定的名称。或者将 "My layer" 替换为层的描述。

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

在输出中,记下 LayerVersionArn。要了解更多信息,请参阅管理层

2.    运行 Lambda update-function-configuration 命令:

注意:请将 my-function 替换为您的函数的名称。将 arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 替换为上一步中的 LayerVersionArn

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

有关更多信息,请参阅配置函数以使用层

创建层并将其添加到函数(Lambda 控制台)

1.    打开 Lambda 控制台的层页面

2.    在页面上,选择创建层

3.    在创建层页面执行以下操作:
名称中,输入该层的名称。
(可选)在描述 - 可选中,输入该层的描述。
选择上传 .zip 文件
选择上传,然后选择您的部署程序包 .zip 文件。
对于兼容运行时 - 可选,请选择一个或多个兼容的运行时。对于 Node.js 10x 示例,请选择 Node.js 10x
(可选)对于许可证 - 可选,为层输入软件许可证信息。
选择创建

4.    在 Lambda 控制台的函数页面上,选择您的函数。

5.    在设计器下您的函数名称下,选择

6.    在下,选择添加层

7.    在将层添加到函数页面上的层选择下,选择从兼容运行时的层的列表中选择

8.    在兼容的层下,执行以下操作:
对于名称,选择您创建的层。
对于版本,选择 1

9.    选择添加

10.    选择保存

(可选)检查 AWS 开发工具包版本

再次执行您的 Lambda 函数。您的函数将返回您之前使用 npm 安装的最新版本 AWS 开发工具包。

您可以在您使用的 AWS 开发工具包的 CHANGELOG 文件中验证最新版本。例如,请参阅 GitHub 上适用于 JavaScript 的 AWS 开发工具包的 Changelog


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?