

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

# 使用创建部署 CodeDeploy
<a name="deployments-create"></a>

您可以使用 CodeDeploy 控制台 AWS CLI、或 CodeDeploy API 创建部署，该部署将您已经推送到 Amazon S3 的应用程序修订版安装在部署组中的实例上，如果您的部署是 EC2/本地计算平台 GitHub，则安装在部署组中的实例上。

创建部署的过程取决于部署使用的计算平台。

**Topics**
+ [部署先决条件](deployments-create-prerequisites.md)
+ [创建 Amazon ECS 计算平台部署（控制台）](deployments-create-console-ecs.md)
+ [创建 L AWS ambda 计算平台部署（控制台）](deployments-create-console-lambda.md)
+ [创建 EC2/本地计算平台部署（控制台）](deployments-create-console.md)
+ [创建 Amazon ECS 计算平台部署（CLI）](deployments-create-ecs-cli.md)
+ [创建 L AWS ambda 计算平台部署 (CLI)](deployments-create-lambda-cli.md)
+ [创建 EC2/本地计算平台部署（CLI）](deployments-create-cli.md)
+ [通过创建 Amazon ECS blue/green 部署 CloudFormation](deployments-create-ecs-cfn.md)

# 部署先决条件
<a name="deployments-create-prerequisites"></a>

在您开始部署之前，请确保完成以下步骤。

## AWS Lambda 计算平台上的部署先决条件
<a name="deployment-prerequisites-lambda"></a>
+ 创建一个应用程序，其中至少包括一个部署组。有关更多信息，请参阅 [使用创建应用程序 CodeDeploy](applications-create.md) 和 [使用创建部署组 CodeDeploy](deployment-groups-create.md)。
+ 准备应用程序修订（也称为 AppSpec 文件），用于指定要部署的 Lambda 函数版本。该 AppSpec 文件还可以指定 Lambda 函数来验证您的部署。有关更多信息，请参阅 [正在处理的应用程序修订版 CodeDeploy](application-revisions.md)。
+ 如果要将自定义部署配置用于您的部署，请在开始部署过程之前创建配置。有关信息，请参阅[使用创建部署配置 CodeDeploy](deployment-configurations-create.md)。

## EC2/本地计算平台上的部署先决条件
<a name="deployment-prerequisites-server"></a>
+ 对于就地配置，创建或配置要部署到的实例。有关信息，请参阅[使用以下实例 CodeDeploy](instances.md)。对于 blue/green 部署，您要么有一个现有 Amazon EC2 Auto Scaling 组用作替换环境的模板，要么有一个或多个实例或 Amazon EC2 Auto Scaling 组指定为原始环境。有关更多信息，请参阅[教程：用于 CodeDeploy 将应用程序部署到 Auto Scaling 组](tutorials-auto-scaling-group.md)和[CodeDeploy 与亚马逊 EC2 Auto Scaling 集成](integrations-aws-auto-scaling.md)。
+ 创建一个应用程序，其中至少包括一个部署组。有关更多信息，请参阅 [使用创建应用程序 CodeDeploy](applications-create.md) 和 [使用创建部署组 CodeDeploy](deployment-groups-create.md)。
+ 准备好要部署到部署组中的实例的应用程序修订。有关信息，请参阅[正在处理的应用程序修订版 CodeDeploy](application-revisions.md)。
+ 如果要将自定义部署配置用于您的部署，请在开始部署过程之前创建配置。有关信息，请参阅[使用创建部署配置 CodeDeploy](deployment-configurations-create.md)。
+ 如果您从 Amazon S3 存储桶部署应用程序修订，则该存储桶与您的部署组中的实例位于同一 AWS 区域。
+ 如果您要从 Amazon S3 存储桶部署应用程序修订，可对该存储桶应用 Amazon S3 存储桶策略。此策略为您的实例授予下载应用程序修订所需的权限。

  例如，以下 Amazon S3 存储桶策略允许从名为 `amzn-s3-demo-bucket` 的 Amazon S3 存储桶中的任何位置，下载附加了 IAM 实例配置文件（其中包含 ARN `arn:aws:iam::444455556666:role/CodeDeployDemo`）的任意 Amazon EC2 实例：

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:role/CodeDeployDemo"
                  ]
              }
          }
      ]
  }
  ```

  以下 Amazon S3 存储桶策略允许从名为 `amzn-s3-demo-bucket` 的 Amazon S3 存储桶中的任意位置，下载具有关联 IAM 用户（其中包含 ARN `arn:aws:iam::444455556666:user/CodeDeployUser`）的任意本地实例：

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:user/CodeDeployUser"
                  ]
              }
          }
      ]
  }
  ```

  有关如何生成和附加 Amazon S3 存储桶策略的信息，请参阅[存储桶策略示例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)。
+ 如果您正在创建 blue/green 部署，或者在部署组中为就地部署指定了可选的 Classic Load Balancer、Application Load Balancer 或 Network Load Balancer，则您已经使用 Amazon VPC 创建了一个包含至少两个子网的 VPC。 （CodeDeploy 使用 Elastic Load Balancing，它要求负载均衡器组中的所有实例都位于单个 VPC 中。）

  如果您尚未创建 VPC，请参阅 [Amazon VPC 入门指南](https://docs.aws.amazon.com/AmazonVPC/latest/GettingStartedGuide/ExerciseOverview.html)。
+ 如果您正在创建 blue/green 部署，则您已在 Elastic Load Balancing 中配置了至少一个 Classic Load Balancing、Application Load Balancing 或网络负载均衡器，并使用它来注册构成原始环境的实例。
**注意**  
替换环境中的实例稍后将用这个负载均衡器进行注册。

  有关配置负载均衡器的更多信息，请参阅[在 Elastic Load Balancing 中为 CodeDeploy Amazon EC2 部署设置负载均衡器](deployment-groups-create-load-balancer.md)和[为 A CodeDeploy mazon ECS 部署设置负载均衡器、目标组和侦听器](deployment-groups-create-load-balancer-for-ecs.md)。

## 通过以下方式进行部署的 blue/green 部署先决条件 CloudFormation
<a name="deployment-prerequisites-cfn-bg"></a>
+ 您的模板不需要为 CodeDeploy 应用程序或部署组对资源进行建模。
+ 对于至少包含两个子网且使用 Amazon VPC 的 VPC，您的模板必须包含相应资源。
+ 您的模板必须在 Elastic Load Balancing 中包含一个或多个经典负载均衡器、应用程序负载均衡器或网络负载均衡器的资源，用于将流量定向到目标群组。

# 创建 Amazon ECS 计算平台部署（控制台）
<a name="deployments-create-console-ecs"></a>

本主题介绍了如何使用控制台部署 Amazon ECS 服务。有关更多信息，请参阅[教程：将应用程序部署到 Amazon ECS](tutorial-ecs-deployment.md)和[教程：部署具有验证测试的 Amazon ECS 服务](tutorial-ecs-deployment-with-hooks.md)。

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 请执行以下操作之一：
   +  如果要部署应用程序，请在导航窗格中，展开 **Deploy（部署）**，然后选择 **Applications（应用程序）**。选择要部署的应用程序的名称。确保您的应用程序的**计算平台**列为 **Amazon ECS**。
   +  如果要重新部署某个部署，请在导航窗格中展开 **Deploy（部署）**，然后选择 **Deployments（部署）**。选择要重新部署的部署并在 **Application（应用程序）**列中选择其应用程序的名称。确保您的部署的**计算平台**列为 **Amazon ECS**。

1. 在**部署**选项卡上，选择**创建部署**。
**注意**  
您的应用程序必须具有部署组才能部署。如果您的应用程序没有部署组，请在**部署组**选项卡上选择**创建部署组**。有关更多信息，请参阅 [使用创建部署组 CodeDeploy](deployment-groups-create.md)。

1. 在 **Deployment group（部署组）**中，选择要用于此部署的部署组。

1. 在 **Revision location（修订位置）**旁边，选择您的修订所在的位置：
   + **我的应用程序存储在 Amazon S3 中** - 有关信息，请参阅[指定存储在 Amazon S3 存储桶中的修订的相关信息](deployments-create-console-s3.md)，然后返回步骤 6。
   + **使用 AppSpec 编辑器**-选择 JSON 或 YAML，然后在编辑器中输入您的 AppSpec 文件。您可以通过选择 “另存**为文本 AppSpec 文件” 来保存该文件**。如果您在这些步骤结束时选择 **Deploy（部署）**，并且您的 JSON 或 YAML 无效，则您将收到错误。有关创建 AppSpec 文件的更多信息，请参阅[将应用程序规范文件添加到修订版中 CodeDeploy](application-revisions-appspec-file.md)。

1. （可选）在 **Deployment description（部署描述）**框中，输入此部署的描述。

1. （可选）在 **Rollback configuration overrides** 中，您可以为此部署指定与已为部署组指定的选项（如果有）不同的自动回滚选项。

   有关中回滚的信息 CodeDeploy，请参阅[重新部署和部署回滚](deployment-steps-lambda.md#deployment-rollback-lambda)和。[使用重新部署和回滚部署 CodeDeploy](deployments-rollback-and-redeploy.md)

   请从以下内容中选择：
   + **部署失败时回滚 — 将最后一个**已知良好的修订版 CodeDeploy重新部署为新部署。
   + **达到警报阈值时回滚**-如果警报已添加到部署组，则在激活一个或多个指定警报时 CodeDeploy 重新部署上次已知的良好版本。
   + **禁用回滚** — 不为此部署执行回滚。

1. 选择 **Create deployment（创建部署）**。

   要跟踪部署的状态，请参阅[查看 CodeDeploy 部署详情](deployments-view-details.md)。

# 创建 L AWS ambda 计算平台部署（控制台）
<a name="deployments-create-console-lambda"></a>

本主题介绍了如何使用控制台部署 Lambda 函数。

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 请执行以下操作之一：
   +  如果要部署应用程序，请在导航窗格中，展开 **Deploy（部署）**，然后选择 **Applications（应用程序）**。选择要部署的应用程序的名称。确保您的应用程序的**计算平台**列为 **AWS Lambda**。
   +  如果要重新部署某个部署，请在导航窗格中展开 **Deploy（部署）**，然后选择 **Deployments（部署）**。选择要重新部署的部署并在 **Application（应用程序）**列中选择其应用程序的名称。确保您的部署的**计算平台**列为 **AWS Lambda**。

1. 在**部署**选项卡上，选择**创建部署**。
**注意**  
您的应用程序必须具有部署组才能部署。如果您的应用程序没有部署组，请在**部署组**选项卡上选择**创建部署组**。有关更多信息，请参阅 [使用创建部署组 CodeDeploy](deployment-groups-create.md)。

1. 在 **Deployment group（部署组）**中，选择要用于此部署的部署组。

1. 在 **Revision location（修订位置）**旁边，选择您的修订所在的位置：
   + **我的应用程序存储在 Amazon S3 中** - 有关信息，请参阅[指定存储在 Amazon S3 存储桶中的修订的相关信息](deployments-create-console-s3.md)，然后返回步骤 6。
   + **使用 AppSpec 编辑器**-选择 JSON 或 YAML，然后在编辑器中输入您的 AppSpec 文件。您可以通过选择 “另存**为文本 AppSpec 文件” 来保存该文件**。如果您在这些步骤结束时选择 **Deploy（部署）**，并且您的 JSON 或 YAML 无效，则您将收到错误。有关创建 AppSpec 文件的更多信息，请参阅[将应用程序规范文件添加到修订版中 CodeDeploy](application-revisions-appspec-file.md)。

1. （可选）在 **Deployment description（部署描述）**框中，输入此部署的描述。

1. （可选）展开**部署组覆盖**以选择一个不同于部署组中指定项的部署配置，来控制流量如何转移到 Lambda 函数版本。

   有关更多信息，请参阅 [AWS Lambda 计算平台上的部署配置](deployment-configurations.md#deployment-configuration-lambda)。

1. （可选）在 **Rollback configuration overrides** 中，您可以为此部署指定与已为部署组指定的选项（如果有）不同的自动回滚选项。

   有关中回滚的信息 CodeDeploy，请参阅[重新部署和部署回滚](deployment-steps-lambda.md#deployment-rollback-lambda)和。[使用重新部署和回滚部署 CodeDeploy](deployments-rollback-and-redeploy.md)

   请从以下内容中选择：
   + **部署失败时回滚 — 将最后一个**已知良好的修订版 CodeDeploy重新部署为新部署。
   + **达到警报阈值时回滚**-如果警报已添加到部署组，则在激活一个或多个指定警报时 CodeDeploy 重新部署上次已知的良好版本。
   + **禁用回滚** — 不为此部署执行回滚。

1. 选择 **Create deployment（创建部署）**。

   要跟踪部署的状态，请参阅[查看 CodeDeploy 部署详情](deployments-view-details.md)。

# 创建 EC2/本地计算平台部署（控制台）
<a name="deployments-create-console"></a>

本主题介绍了如何使用控制台将应用程序部署到 Amazon EC2 或本地服务器。

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 请执行以下操作之一：
   +  如果要部署应用程序，请在导航窗格中，展开 **Deploy（部署）**，然后选择 **Applications（应用程序）**。选择要部署的应用程序的名称。确保您的应用程序的**计算平台**列为 **EC2/本地**。
   +  如果要重新部署某个部署，请在导航窗格中展开 **Deploy（部署）**，然后选择 **Deployments（部署）**。找到要重新部署的部署，然后在 **Application（应用程序）**列中选择其应用程序的名称。确保您的部署的**计算平台**列为 **EC2/本地**。

1. 在**部署**选项卡上，选择**创建部署**。
**注意**  
您的应用程序必须具有部署组才能部署。如果您的应用程序没有部署组，请在**部署组**选项卡上选择**创建部署组**。有关更多信息，请参阅 [使用创建部署组 CodeDeploy](deployment-groups-create.md)。

1. 在 **Deployment group（部署组）**中，选择要用于此部署的部署组。

1. 在 **Repository type** 旁边，选择保存您的修订的存储库类型：
   + **我的应用程序存储在 Amazon S3 中** - 有关信息，请参阅[指定存储在 Amazon S3 存储桶中的修订的相关信息](deployments-create-console-s3.md)，然后返回步骤 6。
   + **我的应用程序存储在 GitHub** — 有关信息，请参阅[指定存储在存储 GitHub 库中的修订的相关信息](deployments-create-console-github.md)，然后返回到步骤 6。

1. （可选）在 **Deployment description（部署描述）**框中，输入此部署的描述。

1. （可选）展开**覆盖部署配置**以选择一个不同于部署组中指定项的部署配置，来控制流量如何转移到 Amazon EC2 或本地服务器。

   有关更多信息，请参阅 [在中使用部署配置 CodeDeploy](deployment-configurations.md)。

1. 

   1. **如果您希望在 ApplicationStop生命周期事件失败时成功部署到实例，请选择`ApplicationStop`生命周期事件失败时不要**使部署失败。

   1. 展开**其他部署行为设置**以指定如何 CodeDeploy 处理部署目标位置中不属于先前成功部署的文件。

      请从以下内容中选择：
      + **使部署失败** - 系统报告出错，并且部署状态更改为 `Failed`。
      + **覆盖内容** - 如果目标位置存在同名文件，则来自应用程序修订的版本将替换它。
      + **保留内容** - 如果目标位置存在同名文件，则该文件将保留，并且应用程序修订中的版本不会复制到实例。

      有关更多信息，请参阅 [现有内容的回滚行为](deployments-rollback-and-redeploy.md#deployments-rollback-and-redeploy-content-options)。

1. （可选）在 **Rollback configuration overrides** 中，您可以为此部署指定与已为部署组指定的选项（如果有）不同的自动回滚选项。

   有关中回滚的信息 CodeDeploy，请参阅[重新部署和部署回滚](deployment-steps-server.md#deployment-rollback)和。[使用重新部署和回滚部署 CodeDeploy](deployments-rollback-and-redeploy.md)

   请从以下内容中选择：
   + **部署失败时回滚 — 将最后一个**已知良好的修订版 CodeDeploy重新部署为新部署。
   + **达到警报阈值时回滚**-如果警报已添加到部署组， CodeDeploy 则在激活一个或多个指定警报时部署上次已知的良好版本。
   + **禁用回滚** — 不为此部署执行回滚。

1. 选择**开始部署**。

   要跟踪部署的状态，请参阅[查看 CodeDeploy 部署详情](deployments-view-details.md)。

**Topics**
+ [指定存储在 Amazon S3 存储桶中的修订的相关信息](deployments-create-console-s3.md)
+ [指定存储在存储 GitHub 库中的修订的相关信息](deployments-create-console-github.md)

# 指定存储在 Amazon S3 存储桶中的修订的相关信息
<a name="deployments-create-console-s3"></a>

如果您正在执行[创建 EC2/本地计算平台部署（控制台）](deployments-create-console.md)中的步骤，请遵循这些步骤以添加有关存储在 Amazon S3 存储桶中的应用程序修订的详细信息。

1. 将您的修订的 Amazon S3 链接复制到**修订位置**。要查找链接值，请执行以下操作：

   1. 在单独的浏览器选项卡中：

      登录 AWS 管理控制台 并打开 Amazon S3 控制台，网址为[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

      浏览并选择您的修订。

   1. 如果 **Properties** 窗格不可见，请选择 **Properties** 按钮。

   1. 在 “**属性**” 窗格中，将 “**链接**” 字段的值复制到 CodeDeploy 控制台的 “**修订位置**” 框中。

   要指定 ETag （文件校验和）作为修订位置的一部分，请执行以下操作：
   + 如果**链接**字段的值 ETag 以结尾 **?versionId=*versionId*****&etag=**，请在**链接**字段值的末尾添加和。
   + 如果 “**链接**” 字段值未指定版本 ID，请在 “ ETag **链接**” 字段值的末尾添加**?etag=**和。
**注意**  
您并不一定需要复制 **Link** 字段的值，也可以使用下列格式之一键入修订位置：  
**s3://*bucket-name*/*folders*/*objectName***  
**s3://*bucket-name*/*folders*/*objectName*?versionId=*versionId***  
**s3://*bucket-name*/*folders*/*objectName*?etag=*etag***  
**s3://*bucket-name*/*folders*/*objectName*?versionId=*versionId*&etag=*etag***  
***bucket-name*.s3.amazonaws.com/*folders*/*objectName***

1. 如果 **File type** 列表中显示的消息说明无法检测文件类型，则选择修订的文件类型。否则，请接受检测到的文件类型。

# 指定存储在存储 GitHub 库中的修订的相关信息
<a name="deployments-create-console-github"></a>

如果您正在按照中的步骤操作[创建 EC2/本地计算平台部署（控制台）](deployments-create-console.md)，请按照以下步骤添加有关存储在存储 GitHub 库中的应用程序修订的详细信息。

1. 在 **Connect t** o 中 GitHub，执行以下任一操作：
   + 要创建 CodeDeploy 应用程序与 GitHub 帐户的连接，请在不同的 Web 浏览器选项卡中注销 GitHub。在**GitHub 帐户**中，输入用于标识此连接的名称，然后选择 **Connect to GitHub**。该网页会提示您授权 CodeDeploy 与您的应用程序进行交互。 GitHub 继续执行步骤 2。
   + 要使用已创建的连接，请在**GitHub帐户**中选择其名称，然后选择 **Connect to GitHub**。继续执行步骤 4。
   + 要创建与其他 GitHub 帐户的连接，请在不同的 Web 浏览器选项卡中注销 GitHub。选择 “**连接到其他 GitHub 帐户**”，然后选择 “**连接到**” GitHub。继续执行步骤 2。

1. 如果系统提示您登录 GitHub，请按照 “**登录**” 页面上的说明进行操作。使用您的 GitHub 用户名或电子邮件和密码登录。

1. 如果显示 **Authorize application（授权应用程序）**页面，则选择 **Authorize application（授权应用程序）**。

1. 在 “**创建部署**” 页面的 “**存储库名称**” 框中，输入包含修订的 GitHub 用户或组织名称，然后输入正斜杠 (`/`)，然后输入包含该修订的存储库的名称。如果您不确定要键入的值，请执行以下步骤：

   1. 在另一个 Web 浏览器选项卡中，转到您的[GitHub控制面板](https://github.com/dashboard)。

   1. 在 **Your repositories（您的资料库）**中，将鼠标指针悬停在目标存储库名称的上方。将出现一个工具提示，显示 GitHub 用户或组织名称，后跟正斜杠 (`/`)，后跟存储库的名称。将显示的此值输入 **Repository name（存储库名称）**框中。
**注意**  
如果目标存储库名称在 “**您的存储库**” 中不可见，请使用 GitHub “**搜索**” 框查找目标存储库名称以及 GitHub 用户或组织名称。

1. 在 **Commit ID（提交 ID）**框中，输入引用存储库中修订的提交的 ID。如果您不确定要键入的值，请执行以下步骤：

   1. 在另一个 Web 浏览器选项卡中，转到您的[GitHub控制面板](https://github.com/dashboard)。

   1. 在 **Your repositories（您的存储库）**中，选择包含目标提交的存储库名称。

   1. 在提交列表中，找到并复制引用存储库中修订的提交 ID。此 ID 的长度通常为 40 个字符并包含字母和数字。（请勿使用提交 ID 的简短版本，此版本通常包含更长版本提交 ID 的前 10 个字符。）

   1. 将提交 ID 粘贴到 **Commit ID** 框中。

# 创建 Amazon ECS 计算平台部署（CLI）
<a name="deployments-create-ecs-cli"></a>

在您创建了应用程序和修订版之后（在 Amazon ECS 部署中，这是 AppSpec 文件）：

调用 [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html) 命令，并指定：
+ 应用程序名称。要查看应用程序名称的列表，请调用 [list-applications](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-applications.html) 命令。
+ 部署组名称。要查看部署组名称的列表，请调用 [list-deployment-groups](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-groups.html) 命令。
+ 有关要部署的修订的信息：

  对于存储在 Amazon S3 中的修订：
  + 包含修订的 Amazon S3 存储桶名称。
  + 已上传修订的名称。
  + （可选）修订的 Amazon S3 版本标识符。（如果未指定版本标识符，则 CodeDeploy 使用最新版本。）
  + （可选） ETag 适用于修订版。（如果未指定，则 CodeDeploy 跳过对象验证。） ETag 

  对于不在 Amazon S3 中的文件内存储的修订，您需要文件名及其路径。您的修订文件是使用 JSON 或 YAML 编写的，因此扩展名很可能为 .json 或 .yaml。
+ （可选）部署的说明。

修订文件可指定为上传到 Amazon S3 存储桶的文件，也可以指定为字符串。在用作 **create-deployment** 命令的一部分时，各自的语法为
+ Amazon S3 存储桶：

  `version` 和 `eTag` 是可选的。

  ```
  --s3-location bucket=string,key=string,bundleType=JSON|YAML,version=string,eTag=string
  ```
+ 字符串：

  ```
  --revision '{"revisionType": "String", "string": {"content":"revision-as-string"}}'
  ```

**注意**  
**create-deployment** 命令可以从文件加载修订。有关更多信息，请参阅[从文件中加载参数](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-file)。

有关 AWS Lambda 部署修订版模板的信息，请参阅[为 AWS Lambda 部署添加 AppSpec 文件](application-revisions-appspec-file.md#add-appspec-file-lambda)。有关示例修订，请参阅[AppSpec AWS Lambda 部署的文件示例](reference-appspec-file-example.md#appspec-file-example-lambda)。

要跟踪部署的状态，请参阅[查看 CodeDeploy 部署详情](deployments-view-details.md)。

# 创建 L AWS ambda 计算平台部署 (CLI)
<a name="deployments-create-lambda-cli"></a>



创建应用程序和修订后（在 AWS Lambda 部署中，这是 AppSpec 文件）：

调用 [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html) 命令，并指定：
+ 应用程序名称。要查看应用程序名称的列表，请调用 [list-applications](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-applications.html) 命令。
+ 部署组名称。要查看部署组名称的列表，请调用 [list-deployment-groups](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-groups.html) 命令。
+ 有关要部署的修订的信息：

  对于存储在 Amazon S3 中的修订：
  + 包含修订的 Amazon S3 存储桶名称。
  + 已上传修订的名称。
  + （可选）修订的 Amazon S3 版本标识符。（如果未指定版本标识符，则 CodeDeploy 使用最新版本。）
  + （可选） ETag 适用于修订版。（如果未指定，则 CodeDeploy 跳过对象验证。） ETag 

  对于不在 Amazon S3 中的文件内存储的修订，您需要文件名及其路径。您的修订文件是使用 JSON 或 YAML 编写的，因此扩展名很可能为 .json 或 .yaml。
+ （可选）要使用的部署配置的名称。要查看部署配置的列表，请调用 [list-deployment-configs](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-configs.html) 命令。（如果未指定，则 CodeDeploy 使用特定的默认部署配置。）
+ （可选）部署的说明。

修订文件可指定为上传到 Amazon S3 存储桶的文件，也可以指定为字符串。在用作 **create-deployment** 命令的一部分时，各自的语法为
+ Amazon S3 存储桶：

  `version` 和 `eTag` 是可选的。

  ```
  --s3-location bucket=string,key=string,bundleType=JSON|YAML,version=string,eTag=string
  ```
+ 字符串：

  ```
  --revision '{"revisionType": "String", "string": {"content":"revision-as-string"}}'
  ```

**注意**  
**create-deployment** 命令可以从文件加载修订。有关更多信息，请参阅[从文件中加载参数](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-file)。

有关 AWS Lambda 部署修订版模板的信息，请参阅[为 AWS Lambda 部署添加 AppSpec 文件](application-revisions-appspec-file.md#add-appspec-file-lambda)。有关示例修订，请参阅[AppSpec AWS Lambda 部署的文件示例](reference-appspec-file-example.md#appspec-file-example-lambda)。

要跟踪部署的状态，请参阅[查看 CodeDeploy 部署详情](deployments-view-details.md)。

# 创建 EC2/本地计算平台部署（CLI）
<a name="deployments-create-cli"></a>

要使用将修订版部署 AWS CLI 到 EC2/本地计算平台，请执行以下操作：

1. 在您准备好了实例之后，创建应用程序，然后推送修订，执行以下操作之一：
   + 如果您希望从 Amazon S3 存储桶部署修订，请立即继续执行步骤 2。
   + 如果要从 GitHub 存储库部署修订，请先完成中的步骤[将 CodeDeploy 应用程序连接到存储 GitHub 库](deployments-create-cli-github.md)，然后继续执行步骤 2。

1. 调用 [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html) 命令，并指定：
   + `--application-name`：应用程序名称。要查看应用程序名称的列表，请调用 [list-applications](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-applications.html) 命令。
   + `--deployment-group-name`：Amazon EC2 部署组的名称。要查看部署组名称的列表，请调用 [list-deployment-groups](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-groups.html) 命令。
   + `--revision`：有关要部署的修订的信息：

     对于存储在 Amazon S3 中的修订：
     + `s3Location`：包含修订的 Amazon S3 存储桶名称。
     + `s3Location --> key`：已上传修订的名称。
     + `s3Location --> bundleType`：已上传修订的文件类型。
**注意**  
Windows Server 实例不支持 tar 和压缩的 tar 存档文件格式（.tar 和.tar.gz）。
     + `s3Location --> version`：（可选）修订的 Amazon S3 版本标识符。（如果未指定版本标识符，则 CodeDeploy 使用最新版本。）
     + `s3Location --> eTag`:（可选） ETag 适用于修订版。（如果未指定，则 CodeDeploy 跳过对象验证。） ETag 

     对于存储在 GitHub以下位置的修订版本：
     + `gitHubLocation --> repository`：分配给包含修订的存储库的 GitHub 用户名或组名，后跟正斜杠 (`/`)，后跟存储库名称。
     + `gitHubLocation --> commitId`：修订的提交 ID。
   + `--deployment-config-name`：（可选）要使用的部署配置的名称。要查看部署配置的列表，请调用 [list-deployment-configs](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-configs.html) 命令。（如果未指定，则 CodeDeploy 使用特定的默认部署配置。）
   + `--ignore-application-stop-failures | --no-ignore-application-stop-failures`：（可选）您是否希望当 `ApplicationStop` 部署生命周期事件失败时，实例的部署仍继续 `BeforeInstall` 部署生命周期事件。
   + `--description`：（可选）部署的说明。
   + `--file-exists-behavior`:（可选）作为部署过程的一部分， CodeDeploy 代理会从每个实例中删除最新部署安装的所有文件。选择当不属于先前部署的文件出现在目标部署位置时会发生什么。
   + `--target-instances`：对于 blue/green 部署，有关 blue/green 部署中属于替换环境的实例的信息，包括一个或多个 Amazon EC2 Auto Scaling 组的名称，或者用于识别 Amazon EC2 实例的标签筛选密钥、类型和值。

**注意**  
在 **create-deployment** 调用中使用此语法，可直接在命令行上指定有关 Amazon S3 中修订的信息。（`version` 和 `eTag` 可选。）  

```
--s3-location bucket=string,key=string,bundleType=tar|tgz|zip,version=string,eTag=string
```
使用以下语法作为**create-deployment**调用的一部分， GitHub 直接在命令行中指定有关修订的信息：  

```
--github-location repository=string,commitId=string
```
要获取有关已推送修订的信息，请调用 [list-application-revisions](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-application-revisions.html) 命令。

要跟踪部署的状态，请参阅[查看 CodeDeploy 部署详情](deployments-view-details.md)。

## create-deployment 命令参考
<a name="deployments-create-cli-reference"></a>

以下是 `create-deployment` 命令的命令结构和选项。有关更多信息，请参阅《AWS CLI 命令参考》**中的 [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html) 参考。

```
create-deployment
--application-name <value>
[--deployment-group-name <value>]
[--revision <value>]
[--deployment-config-name <value>]
[--description <value>]
[--ignore-application-stop-failures | --no-ignore-application-stop-failures]
[--target-instances <value>]
[--auto-rollback-configuration <value>]
[--update-outdated-instances-only | --no-update-outdated-instances-only]
[--file-exists-behavior <value>]
[--s3-location <value>]
[--github-location <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
```

# 将 CodeDeploy 应用程序连接到存储 GitHub 库
<a name="deployments-create-cli-github"></a>

在首次使用 GitHub 存储库部署应用程序之前 AWS CLI，必须先授予代表您的 GitHub 账户与 GitHub 之交互的 CodeDeploy 权限。必须使用 CodeDeploy 控制台为每个应用程序完成一次此步骤。

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 选择**应用程序**。

1. 从**应用程序**中，选择要关联到 GitHub 用户帐户的应用程序，然后选择**部署应用程序**。
**注意**  
您没有创建部署。目前，这是授予代表您的 GitHub用户帐户进行交互 GitHub 的 CodeDeploy 权限的唯一途径。

1. 在 “**存储库类型**” 旁边，选择 “**我的应用程序修订存储在” 中 GitHub**。

1. 选择 “**连接到” GitHub**。
**注意**  
如果你看到 “**Connect to 其他 GitHub账号**” 链接：  
您可能已经授权 CodeDeploy GitHub 代表该应用程序的另一个 GitHub 账户与之交互。  
您可能已经撤销了 GitHub代表登录 GitHub 账户与中关联的所有应用程序进行交互的授权。 CodeDeploy CodeDeploy  
有关更多信息，请参阅 [GitHub 使用中的应用程序进行身份验证 CodeDeploy](integrations-partners-github.md#behaviors-authentication)。

1. 如果您尚未登录 GitHub，请按照 “**登录**” 页面上的说明进行操作。

1. 在 **Authorize application** 页上，选择 **Authorize application**。

1. 现在 CodeDeploy 已获得权限，请选择 “**取消**”，然后继续执行中的步骤[创建 EC2/本地计算平台部署（CLI）](deployments-create-cli.md)。

# 通过创建 Amazon ECS blue/green 部署 CloudFormation
<a name="deployments-create-ecs-cfn"></a>

您可以使用 AWS CloudFormation 通过管理 Amazon ECS blue/green 部署 CodeDeploy。通过定义蓝绿资源并指定要在 CloudFormation中使用的流量路由和稳定设置来生成部署。本主题介绍由管理的 Amazon ECS blue/green 部署 CodeDeploy 和由管理的部署之间的区别 CloudFormation。

*有关使用 CloudFormation 来管理 Amazon ECS 蓝/绿部署的 step-by-step说明，请参阅用户指南 AWS CloudFormation中的[ CodeDeploy 使用自动执行 ECS 蓝/绿部署](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)。AWS CloudFormation *

**注意**  
亚太地区（大阪）区域 CloudFormation 不支持使用管理 Amazon ECS blue/green 部署。

## 通过 CodeDeploy 和 blue/green 部署的 Amazon ECS 之间的区别 CloudFormation
<a name="differences-ecs-bg-cfn"></a>

 CloudFormation 堆栈模板建模 Amazon ECS 任务相关的资源和基础设施，以及部署的配置选项。因此，标准 Amazon ECS blue/green 部署和通过创建的 blue/green 部署之间存在差异 CloudFormation。

与标准 Amazon ECS blue/green 部署不同，您无需对以下内容进行建模或手动创建：
+ 您不能通过指定唯一代表要部署的内容的名称来创建 AWS CodeDeploy 应用程序。
+ 您不创建 AWS CodeDeploy 部署组。
+ 您无需指定*应用程序规范文件*（AppSpec 文件）。通常使用该 AppSpec 文件管理的信息，例如加权配置选项或生命周期事件，由`AWS::CodeDeploy::BlueGreen`挂钩管理。

 此表汇总了部署类型之间的高级工作流程中的差异。


****  

| 函数 | 标准 blue/green 部署 | 蓝/绿部署 CloudFormation | 
| --- | --- | --- | 
| 指定 Amazon ECS 集群、Amazon ECS 服务、应用程序负载均衡器或网络负载均衡器、生产侦听器、测试侦听器和两个目标组。 | 创建指定这些资源的 CodeDeploy 部署组。 | 创建 CloudFormation 模板来对这些资源进行建模。 | 
| 指定要部署的更改。 | 创建 CodeDeploy 应用程序。 | 创建指定容器镜像的 CloudFormation 模板。 | 
| 指定 Amazon ECS 任务定义、容器名称和容器端口。 | 创建指定这些资源的 AppSpec 文件。 | 创建 CloudFormation 模板来对这些资源进行建模。 | 
| 指定部署流量转移选项和生命周期事件挂钩。 | 创建一个指定这些选项的 AppSpec 文件。 | 创建一个使用AWS::CodeDeploy::BlueGreen挂钩参数来指定这些选项的 CloudFormation 模板。 | 
|  CloudWatch 警报。  |  创建触发回滚的 CloudWatch 警报。  |  在 CloudFormation 堆栈级别配置触发回滚的 CloudWatch 警报。  | 
| 回滚/重新部署。 | 指定回滚和重新部署选项。 | 取消中的堆栈更新 CloudFormation。 | 

## 通过以下方式监控 Amazon ECS blue/green 部署 CloudFormation
<a name="monitoring-ecs-bg-cfn"></a>

您可以通过 CloudFormation 和监控 blue/green 部署 CodeDeploy。有关通过监控的信息 CloudFormation，请参阅《*AWS CloudFormation 用户指南》 CloudFormation*[中的监控 blue/green 事件](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html#blue-green-events)。

**要在中查看部署的 blue/green 部署状态 CodeDeploy**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 在 “**部署**” 中，将显示由 CloudFormation 堆栈更新触发的部署。选择部署以查看 **Deployment history（部署历史记录）**。  
![\[显示“Deployments（部署）”部分和部署历史记录的控制台屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/images/cfn-cd-bg-deplhist.png)

1. 选择部署以查看流量转移状态。请注意，不会创建应用程序和部署组。  
![\[显示部署状态为“completed（已完成）”的部署详细信息的控制台屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/images/cfn-cd-bg-deplstatus.png)

1. 以下内容适用于回滚或停止部署：
   + 成功部署显示在中， CodeDeploy 并显示部署是由启动的 CloudFormation。
   + 如果要停止并回滚部署，则必须取消中的堆栈更新 CloudFormation。