创建 Lambda 函数的滚动部署
使用滚动部署来控制推出 Lambda 函数新版本相关风险。在滚动部署中,系统会自动部署函数的新版本,并逐步向新版本发送数量不断增加的流量。您可以配置的参数包括流量和增长率。
您可使用 AWS CodeDeploy 和 AWS SAM 配置滚动部署。CodeDeploy 是一项可自动将应用程序部署到 Amazon EC2 和 AWS Lambda 的服务。有关更多信息,请参阅什么是 CodeDeploy?。通过使用 CodeDeploy 部署您的 Lambda 函数,您可以轻松地监控部署状态,并在检测到任何问题时启动回滚。
AWS SAM 是一个开源框架,用于构建无服务器应用程序。您可以创建 AWS SAM 模板(以 YAML 格式),以便指定滚动部署所需的组件的配置。AWS SAM 使用模板来创建和配置组件。有关更多信息,请参阅什么是 AWS SAM?。
在滚动部署中,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: nodejs18.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 函数。