AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Node.js 中的 AWS Lambda 部署程序包

部署程序包是包含函数代码和依赖项的 ZIP 存档。如果您使用 Lambda API 管理函数,或者需要包含 AWS 开发工具包以外的库和依赖项,则需要创建部署程序包。您可以将程序包直接上传到 Lambda,也可以使用 Amazon S3 存储桶、然后再将其上传到 Lambda。如果部署包大于 50 MB,则必须使用 Amazon S3。

如果您使用 Lambda 控制台编辑器编写您的函数,则控制台会管理部署程序包。如果您不需要添加任何库,则可以使用此方法。您也可以使用此方法更新在部署程序包中已经存在库的函数,前提是总大小不超过 3 MB。

注意

为了让您的部署程序包尽可能小,请将函数的依赖项打包到层中。层可让您独立管理依赖项,可以供多个函数使用,并且可以与其他账户共享。有关详细信息,请参阅AWS Lambda 层

更新没有依赖项的函数

要使用 Lambda API 创建或更新函数,请创建包含函数代码的存档,并使用 AWS CLI 上传它。

更新没有依赖项的 Node.js 函数

  1. 创建 ZIP 存档。

    ~/my-function$ zip function.zip index.js
  2. 使用 update-function-code 命令上传程序包。

    ~/my-function$ aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip { "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "Runtime": "nodejs12.x", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "index.handler", "CodeSize": 300, "Description": "", "Timeout": 3, "MemorySize": 128, "LastModified": "2018-11-23T21:00:10.248+0000", "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "TracingConfig": { "Mode": "Active" }, "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d" }

更新具有额外依赖项的函数

如果您的函数依赖于 SDK for JavaScript 之外的库,请使用 NPM 将它们安装到本地目录中,并将它们包含在部署程序包中。如果您需要比运行时上包含的版本更新的版本,或者需要确保该版本在将来不会变化,则还可以包含 SDK for JavaScript。

使用依赖项更新 Node.js 函数

  1. 使用 npm install 命令在 node_modules 目录中安装库。

    ~/my-function$ npm install aws-xray-sdk

    这将创建一个类似于下面的文件夹结构。

    ~/my-function ├── index.js └── node_modules ├── async ├── async-listener ├── atomic-batcher ├── aws-sdk ├── aws-xray-sdk ├── aws-xray-sdk-core
  2. 创建一个包含您的项目文件夹内容的 ZIP 文件。

    ~/my-function$ zip -r function.zip .
  3. 使用 update-function-code 命令上传程序包。

    ~/my-function$ aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip { "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "Runtime": "nodejs12.x", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "index.handler", "CodeSize": 300, "Description": "My function", "Timeout": 3, "MemorySize": 128, "LastModified": "2018-11-23T21:00:10.248+0000", "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "TracingConfig": { "Mode": "Active" }, "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d" }

除了代码和库之外,您的部署程序包还可以包含可执行文件和其他资源。有关更多信息,请参阅下列内容: