

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 步骤 3：部署更新的 Lambda 函数
<a name="tutorial-lambda-sam-deploy-update"></a>

 在本步骤中，您将使用更新的 `myDateTimeFunction.js`，以更新并启动 Lambda 函数的部署。您可以在 CodeDeploy 或 AWS Lambda 控制台中监控部署进度。

 AWS SAM 模板中的这一`AutoPublishAlias: live`行会使您的基础架构检测到使用`live`别名的函数的更新。函数的更新会触发部署 CodeDeploy ，从而将生产流量从函数的原始版本转移到更新的版本。

 **sam package** 和 **sam deploy** 命令用于更新和触发 Lambda 函数的部署。您已在 [Package 打包 AWS SAM 应用程序](tutorial-lambda-sam-package.md) 和 [部署 S AWS AM 应用程序](tutorial-lambda-sam-deploy.md) 中执行这些命令。

**部署更新的 Lambda 函数**

1.  在 `SAM-Tutorial` 目录中，运行以下命令。

   ```
   sam package \
     --template-file template.yml \
     --output-template-file package.yml  \
     --s3-bucket amzn-s3-demo-bucket
   ```

    这会创建一组新的构件，这些构件引用您的 S3 存储桶中更新的 Lambda 函数。

1.  在 `SAM-Tutorial` 目录中，运行以下命令。

   ```
   sam deploy \
     --template-file package.yml \
     --stack-name my-date-time-app \
     --capabilities CAPABILITY_IAM
   ```

   由于堆栈名称仍为`my-date-time-app`，因此可以 CloudFormation 识别这是堆栈更新。要查看更新的堆栈，请返回 CloudFormation 控制台，然后从导航窗格中选择 **Stacks**。

**（可选）用于在部署期间查看流量（CodeDeploy 控制台）**

1. 打开 CodeDeploy 控制台，网址为[https://console.aws.amazon.com/codedeploy/](https://console.aws.amazon.com/codedeploy/)。

1.  在导航窗格中，展开 “**应用程序**”，然后选择您的 **my-date-time-app-ServerlessDeploymentApplication** 应用程序。

1.  在 **Deployment groups（部署组）**中，选择应用程序的部署组。其状态应为 **In progress（正在进行）**。

1.  在 **Deployment group history（部署组历史记录）**中，选择正在进行中的部署。

   此页面上的 **Traffic shifting（流量转移）**进度条以及 **Original（原始）**和 **Replacement（替换）**框中的百分比显示了其进度。  
![\[CodeDeploy 控制台的流量转移进度部分。\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/images/lambda-tutorial-codedeploy-console-20-percent-deployed.png)

**（可选）在部署期间查看流量（Lambda 控制台）**

1. 打开 AWS Lambda 控制台，网址为[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)。

1.  从导航窗格中，选择 `my-date-time-app-myDateTimeFunction` 函数。在控制台中，其名称包含一个标识符，因此看起来类似 `my-date-time-app-myDateTimeFunction-123456ABCDEF`。

1.  依次选择**别名**和 **live**。

原始函数版本（版本 1）和更新的函数版本（版本 2）旁边的权重，显示了在加载此 AWS Lambda 控制台页面时提供给每个版本的流量。该页面不会随时间更新权重。如果每隔一分钟刷新一次页面，则版本 1 的权重降低 10%，版本 2 的权重增加 10%，直到版本 2 的权重达到 100%。

![\[CodeDeploy 控制台的别名部分。\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/images/lambda-tutorial-lambda-console-20-percent-deployed.png)
