AWS Lambda
开发人员指南

创建您自己的无服务器应用程序

在以下教程中,您将创建包含单个 Node.js 函数的简单无服务器应用程序,该函数返回您指定为环境变量的 Amazon S3 存储桶的名称。请遵循以下步骤:

  1. 将以下 Node.js 代码复制并粘贴到文本文件中,并将其保存为 index.js. 这表示您的 Lambda 函数。

    var AWS = require('aws-sdk'); exports.handler = function(event, context, callback) { var bucketName = process.env.S3_BUCKET; callback(null, bucketName); }
  2. 将以下内容粘贴为文本文件并将其保存为 example.yaml. 请注意,Runtime 参数使用 nodejs6.10,但您还可以指定 nodejs8.10

    AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: TestFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs6.10 Environment: Variables: S3_BUCKET: bucket-name
  3. 创建名为 examplefolder 的文件夹,并将 example.yaml 文件和 index.js 文件放置在该文件夹内。

    您的实例文件夹现在包含下列两份文件,您可以在之后使用它们打包无服务器应用程序。

    • example.yaml

    • index.js

打包和部署

您在创建 Lambda 函数处理程序和 example.yaml 文件后,可以使用 AWS CLI 打包和部署您的无服务器应用程序。

包装

要打包您的应用程序,请创建 package 命令将用来上传您的 ZIP 部署程序包的 Amazon S3 存储桶 (如果您还未在 example.yaml 文件中指定)。您可以使用以下命令创建 Amazon S3 存储桶:

aws s3 mb s3://bucket-name --region region

下一步,打开命令提示符并键入以下命令:

sam package \ --template-file path/example.yaml \ --output-template-file serverless-output.yaml \ --s3-bucket s3-bucket-name

程序包命令返回 AWS SAM 模板,在这种情况下,指的是包含指向您指定的 Amazon S3 存储桶中的部署 zip 的 CodeUriserverless-output.yaml。此模板表示您的无服务器应用程序。现在您已准备好部署它。

部署

要部署应用程序,请运行以下命令:

sam deploy \ --template-file serverless-output.yaml \ --stack-name new-stack-name \ --capabilities CAPABILITY_IAM

请注意,您为 --template-file 参数指定的值是程序包命令返回的 SAM 模板的名称。此外,--capabilities 参数是可选的。AWS::Serverless::Function 资源将隐式创建角色 (如果模板中未指定),以执行 Lambda 函数。您可以使用 --capabilities 参数显示确认允许 AWS CloudFormation 代表您创建角色。

当您运行 sam deploy 命令时,该命令可创建 AWS CloudFormation ChangeSet,这是 AWS CloudFormation 堆栈更改的列表,然后对其进行部署。一些堆栈模板可能包含可能影响您的 AWS 账户的资源,例如,通过创建新的 AWS Identity and Access Management (IAM) 用户。对于这些堆栈,您必须指定 --capabilities 参数以显示确认它们的功能。有关更多信息,请参阅 AWS CloudFormation API Reference 中的 CreateChangeSet

要验证您的结果,请打开 AWS CloudFormation 控制台,以查看新创建的 AWS CloudFormation 堆栈;以及 Lambda 控制台,以查看您的函数。

有关无服务器应用程序示例的完整列表的信息,请参阅 如何使用 AWS Lambda 的示例

导出无服务器应用程序

您可以导出无服务器应用程序,并使用 Lambda 控制台将其部署到不同的 AWS 区域或开发阶段等。当您导出 Lambda 函数时,则为您提供表示无服务器应用程序的 ZIP 部署程序包和 SAM 模板。然后您可以使用之前重新部署部分描述的 packagedeploy 命令。

您还可以选择其中一个 Lambda 蓝图创建 ZIP 程序包,以便您进行打包和部署。请按照以下步骤执行此操作:

使用 Lambda 控制台导出无服务器应用程序

  1. 通过以下网址登录 AWS 管理控制台并打开 AWS Lambda 控制台:https://console.aws.amazon.com/lambda/

  2. 执行以下任一操作:

    • 使用 Lambda 蓝图创建函数 - 选择蓝图并按照以下步骤创建 Lambda 函数。有关示例,请参阅创建简单的 Lambda 函数。当您到达审核页面时,选择导出函数

    • 创建函数 - 选择创建函数,然后创建您的函数。您在创建 Lambda 函数后,可选择函数以将其导出。选择操作,然后选择导出函数

    • 打开现有的 Lambda 函数 - 通过依次选择 Function nameActionsExport function 来打开此函数。

  3. 导出您的函数窗口,您有以下选择:

    • 选择下载 AWS SAM 文件,这定义 Lambda 函数和组成无服务器应用程序的其他资源。

    • 选择下载部署程序包,这包含您的 Lambda 函数代码和任何相关库。

使用 AWS SAM 文件和 ZIP 部署程序包,并按照打包和部署中的步骤重新部署无服务器应用程序。

本页内容: