Lambda 函数的滚动部署 - AWS Lambda
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Lambda 函数的滚动部署

使用滚动部署来控制与引入 Lambda 函数的新版本相关的风险。在滚动部署中,系统会自动部署函数的新版本,并逐步向新版本发送数量不断增加的流量。您可以配置的参数包括流量和增长率。

您可以使用 AWS CodeDeploy 和 AWS SAM 配置滚动部署。CodeDeploy 是一项服务,可自动将应用程序部署到 Amazon 计算平台(例如 Amazon EC2 和 AWS Lambda)。有关更多信息,请参阅什么是 CodeDeploy?。通过使用 CodeDeploy 部署您的 Lambda 函数,您可以轻松地监控部署状态,并在检测到任何问题时启动回滚。

AWS SAM 是一个开源框架,用于构建无服务器应用程序。您可以创建 AWS SAM 模板(以 YAML 格式),以便指定滚动部署所需的组件的配置。AWS SAM 使用模板来创建和配置组件。有关更多信息,请参阅什么是 AWS 无服务器应用程序模型?

在滚动部署中,AWS SAM 会执行以下任务:

  • 它会配置您的 Lambda 函数并创建别名。

    别名路由配置是实施滚动部署的基础功能。

  • 它会创建一个 CodeDeploy 应用程序和一个部署组。

    部署组可管理滚动部署和回滚(如果需要)。

  • 它会检测您何时创建 Lambda 函数的新版本。

  • 它会触发 CodeDeploy 以启动部署的新版本。

示例 AWS SAM Lambda 模板

下面的示例演示了用于简单滚动部署的 AWS SAM 模板

AWSTemplateFormatVersion : '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: A sample SAM template for deploying Lambda functions. Resources: # Details about the myDateTimeFunction Lambda function myDateTimeFunction: Type: AWS::Serverless::Function Properties: Handler: myDateTimeFunction.handler Runtime: nodejs12.x # Creates an alias named "live" for the function, and automatically publishes when you update the function. AutoPublishAlias: live DeploymentPreference: # Specifies the deployment configuration Type: Linear10PercentEvery2Minutes

此模板定义一个名为 myDateTimeFunction 的 Lambda 函数,其中包含以下属性。

AutoPublishAlias

AutoPublishAlias 属性创建一个名为 live 的别名。此外,AWS SAM 框架会自动检测您何时为函数保存新代码。然后,框架发布新的函数版本并更新 live 别名以便指向新版本。

DeploymentPreference

DeploymentPreference 属性决定 CodeDeploy 应用程序将流量从 Lambda 函数的原始版本转移到新版本的速率。Linear10PercentEvery2Minutes 值每两分钟将额外 10% 的流量转移到新版本。

有关预定义部署配置的列表,请参阅部署配置

有关如何将 CodeDeploy 与 Lambda 函数结合使用的详细教程,请参阅使用 CodeDeploy 部署更新的 Lambda 函数