

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

# 产品和服务与 CodeDeploy
<a name="integrations"></a>

默认情况下，与许多 AWS 服务以及合作伙伴产品和服务 CodeDeploy 集成。以下信息可以帮助您进行配置 CodeDeploy ，使其与所使用的产品和服务集成。
+ [与其他 AWS 服务集成](integrations-aws.md)
+  [与合作伙伴产品和服务集成](integrations-partners.md)
+ [来自社区的集成示例](integrations-community.md)

# 与其他 AWS 服务集成
<a name="integrations-aws"></a>

CodeDeploy 已与以下 AWS 服务集成：


|  |  | 
| --- |--- |
| Amazon CloudWatch |  [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/) 是一项监控 AWS 云资源和您运行的应用程序的服务 AWS。您可以使用 Amazon CloudWatch 收集和跟踪指标、收集和监控日志文件以及设置警报。 CodeDeploy 支持以下 CloudWatch 工具： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-aws.html)  | 
| Amazon EC2 Auto Scaling |  CodeDeploy 支持 [Amazon EC2 Auto Scaling](https://aws.amazon.com/autoscaling)。该 AWS 服务可以根据您指定的标准自动启动 Amazon EC2 实例，例如：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-aws.html) 您可以在需要时扩展一组 Amazon EC2 实例，然后使用自动 CodeDeploy 为它们部署应用程序修订。当不再需要这些 Amazon EC2 实例时，Amazon EC2 Auto Scaling 将终止它们。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-aws.html)  | 
| Amazon Elastic Container Service |   您可以使用 CodeDeploy 将 Amazon ECS 容器化应用程序部署为任务集。 CodeDeploy 通过将应用程序的更新版本安装为新的替换任务集来执行 blue/green 部署。 CodeDeploy 将生产流量从原始应用程序任务集重新路由到替换任务集。成功部署后，将会终止原始任务集。有关 Amazon ECS 的更多信息，请参阅 [Amazon Elastic Container Service](https://aws.amazon.com/ecs/)。  通过选择金丝雀、线性或 all-at-once配置，您可以管理在部署期间将流量转移到更新的任务集的方式。有关 Amazon ECS 部署的更多信息，请参阅 [Amazon ECS 计算平台上的部署](https://docs.aws.amazon.com/en_us/codedeploy/latest/userguide/deployment-steps-ecs.html)。  | 
| AWS CloudTrail |  CodeDeploy 已与集成[AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。该服务捕获由您的账户或代表您的 AWS 账户发出的 API 调用，并将日志文件传输到您指定的 Amazon S3 存储桶。 CodeDeploy CloudTrail捕获来自 CodeDeploy 控制台、通过 CodeDeploy 命令或 CodeDeploy APIs 直接从控制台发出的 API 调用。 AWS CLI通过使用 CloudTrail 收集的信息，您可以确定： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-aws.html) 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-aws.html)  | 
| AWS Cloud9 |  [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/)是一个基于云的在线集成开发环境 (IDE)，您只需使用联网计算机上的浏览器即可编写、运行、调试和部署代码。 AWS Cloud9 包括代码编辑器、调试器、终端和基本工具，例如 AWS CLI 和 Git。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-aws.html) 有关的更多信息 AWS Cloud9，请参阅[什么是 AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcom.html)和[入门 AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/get-started.html)。  | 
| AWS CodePipeline |  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/) 是一种持续交付服务，可用于建模、可视化和自动执行在持续交付过程中发布软件所需的步骤。可以使用 AWS CodePipeline 定义您自己的发布过程，以便服务在每次发生代码更改时构建、测试和部署代码。例如，一个应用程序可以有三个部署组：Beta、Gamma 和 Prod。您可以设置管道，以便每次源代码发生更改时，将更新逐一部署到每个部署组。 您可以配置为使用 AWS CodePipeline CodeDeploy 来部署： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-aws.html)  **您可以在创建管道之前的某个阶段或在 “创建管道” 向导中创建要在部署操作中使用的 CodeDeploy 应用程序、部署和部署组。** 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-aws.html)  | 
| AWS 无服务器应用程序模型 |  AWS 无服务器应用程序模型 (AWS SAM) 是定义无服务器应用程序的模型。它扩展 CloudFormation 为定义无服务器应用程序所需的 AWS Lambda 函数、Amazon API Gateway APIs 和 Amazon DynamoDB 表提供了一种简化的方法。如果您已经在使用 AWS SAM，则可以添加部署首选项，开始使用它 CodeDeploy 来管理 AWS Lambda 应用程序部署期间的流量转移方式。 有关更多信息，请参阅 [AWS 无服务器应用程序模型](https://github.com/awslabs/serverless-application-model)。  | 
| Elastic Load Balancing |  CodeDeploy 支持 [Elastic Load](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html) Balancing，这是一项在多个 Amazon EC2 实例之间分配传入应用程序流量的服务。 对于 CodeDeploy 部署，当实例尚未准备就绪、当前正在部署或不再需要作为环境的一部分时，负载均衡器还会阻止流量路由到实例。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-aws.html)  | 

**Topics**
+ [Amazon EC2 Auto Scaling](integrations-aws-auto-scaling.md)
+ [Integrating CodeDeploy with Elastic Load Balancing](integrations-aws-elastic-load-balancing.md)

# CodeDeploy 与亚马逊 EC2 Auto Scaling 集成
<a name="integrations-aws-auto-scaling"></a>

CodeDeploy 支持 Amazon EC2 Auto Scaling，该 AWS 服务可根据您定义的条件自动启动 Amazon EC2 实例。这些条件可以包括：在指定时间间隔内超出 CPU 利用率、磁盘读写、入站或出站网络流量的限制。Amazon EC2 Auto Scaling 会终止不再需要的实例。有关更多信息，请参阅《Amazon EC2 Auto Scaling 用户指南》**中的[什么是 Amazon EC2 Auto Scaling？](https://docs.aws.amazon.com/autoscaling/latest/userguide/WhatIsAutoScaling.html)

当新的 Amazon EC2 实例作为 Amazon EC2 Auto Scaling 组的一部分启动时， CodeDeploy 可以自动将您的修订部署到新实例。您还可以 CodeDeploy使用在 Elastic Load Balancing 负载均衡器中注册的 Amazon EC2 Auto Scaling 实例来协调部署。有关更多信息，请参阅[CodeDeploy 与 Elastic Load Balancing](integrations-aws-elastic-load-balancing.md)和[在 Elastic Load Balancing 中为 CodeDeploy Amazon EC2 部署设置负载均衡器](deployment-groups-create-load-balancer.md)。

**注意**  
如果您将多个部署组与单个 Amazon EC2 Auto Scaling 组相关联，则可能会遇到问题。例如，如果一个部署失败，则实例将开始关闭，但已在运行的其他部署可能在一个小时后才超时。有关更多信息，请参阅幕后花[絮：[避免将多个部署组与一个 Amazon EC2 Auto Scaling 组关联](troubleshooting-auto-scaling.md#troubleshooting-multiple-depgroups) CodeDeploy 以及 Amazon EC2 Auto Scaling 集成](https://aws.amazon.com/blogs/devops/under-the-hood-aws-codedeploy-and-auto-scaling-integration/)。

**Topics**
+ [将 CodeDeploy 应用程序部署到 Amazon EC2 Auto Scaling 群组](#integrations-aws-auto-scaling-deploy)
+ [在 Auto Scaling 横向缩减事件期间启用终止部署](#integrations-aws-auto-scaling-behaviors-hook-enable)
+ [Amazon EC2 Auto Scaling 是如何使用的 CodeDeploy](#integrations-aws-auto-scaling-behaviors)
+ [将自定义 AMI 与 CodeDeploy Amazon EC2 Auto Scaling 配合使用](#integrations-aws-auto-scaling-custom-ami)

## 将 CodeDeploy 应用程序部署到 Amazon EC2 Auto Scaling 群组
<a name="integrations-aws-auto-scaling-deploy"></a>

要将 CodeDeploy 应用程序修订部署到 Amazon EC2 Auto Scaling 组，请执行以下操作：

1. 创建或找到允许 Amazon EC2 Auto Scaling 组使用 Amazon S3 的 IAM 实例配置文件。有关更多信息，请参阅 [步骤 4：为 Amazon EC2 实例创建 IAM 实例配置文件](getting-started-create-iam-instance-profile.md)。
**注意**  
您还可以使用 CodeDeploy 将版本从 GitHub 存储库部署到 Amazon EC2 Auto Scaling 群组。尽管 Amazon EC2 实例仍然需要 IAM 实例配置文件，但该配置文件不需要任何其他权限即可从 GitHub 存储库进行部署。

1. 创建或使用 Amazon EC2 Auto Scaling 组，在启动配置或模板中指定 IAM 实例配置文件。有关更多信息，请参阅[在 Amazon EC2 实例上运行的应用程序的 IAM 角色](https://docs.aws.amazon.com/autoscaling/ec2/userguide/us-iam-role.html)。

1. 创建或找到允许 CodeDeploy 创建包含 Amazon EC2 Auto Scaling 组的部署组的服务角色。

1. 使用创建部署组 CodeDeploy，指定 Amazon EC2 Auto Scaling 组名称、服务角色和其他一些选项。有关更多信息，请参阅 [为就地部署创建部署组（控制台）](deployment-groups-create-in-place.md)或 [为就地部署创建部署组（控制台）](deployment-groups-create-in-place.md)。

1. 用于 CodeDeploy 将您的修订部署到包含 Amazon EC2 Auto Scaling 组的部署组。

有关更多信息，请参阅 [教程：用于 CodeDeploy 将应用程序部署到 Auto Scaling 组](tutorials-auto-scaling-group.md)。

## 在 Auto Scaling 横向缩减事件期间启用终止部署
<a name="integrations-aws-auto-scaling-behaviors-hook-enable"></a>

*终止部署*是一种在 Auto [Scaling 缩减事件发生时自动激活的 CodeDeploy ](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in)部署。 CodeDeploy 在 Auto Scaling 服务终止实例之前立即执行终止部署。在终止部署期间， CodeDeploy不部署任何东西。相反，它会生成生命周期事件，您可以将其挂接到自己的脚本以启用自定义关闭功能。例如，您可以将 `ApplicationStop` 生命周期事件挂接到一个脚本，该脚本会在实例被终止之前妥善关闭您的应用程序。

有关终止部署期间 CodeDeploy 生成的生命周期事件的列表，请参阅[生命周期事件挂钩可用性](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-availability)。

如果终止部署因任何原因失败， CodeDeploy 则允许继续终止实例。这意味着，即使在完成之前 CodeDeploy没有运行全套（或任何）生命周期事件，该实例也将被关闭。

如果您不启用终止部署，Auto Scaling 服务仍会在发生缩减事件时终止 Amazon EC2 实例，但 CodeDeploy 不会生成生命周期事件。

**注意**  
无论您是否启用终止部署，如果 Auto Scaling 服务在 CodeDeploy 部署进行期间终止 Amazon EC2 实例，则在 Auto Scaling 生成的生命周期事件和 CodeDeploy 服务之间可能会出现争用条件。例如，`Terminating`生命周期事件（由 Auto Scaling 服务生成）可能会覆盖该`ApplicationStart`事件（由 CodeDeploy 部署生成）。在这种情况下，您可能会在 Amazon EC2 实例终止或 CodeDeploy 部署时遇到故障。

**启用 CodeDeploy 以执行终止部署**
+ 创建或更新部署组时，选中**向 Auto Scaling 组添加终止钩子**复选框。有关说明，请参阅 [为就地部署创建部署组（控制台）](deployment-groups-create-in-place.md) 或 [为 EC2/本地部署创建 blue/green 部署组（控制台）](deployment-groups-create-blue-green.md)。

  启用此复选框会 CodeDeploy 将 [Auto Scaling 生命周期挂钩](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html)安装到您在创建或更新 CodeDeploy 部署组时指定的 Auto Scaling 组中。此挂钩称为*终止挂钩*，用于启用终止部署。

**安装完终止挂钩后，横向缩减（终止）事件将按如下方式展开：**

1. Auto Scaling 服务（或者简称为 Auto Scaling）确定需要发生横向缩减事件，然后与 EC2 服务联系以终止 EC2 实例。

1. EC2 服务开始终止 EC2 实例。实例进入 `Terminating` 状态，然后进入 `Terminating:Wait` 状态。

1. 在此期间`Terminating:Wait`，Auto Scaling 会运行附加到 Auto Scaling 组的所有生命周期挂钩，包括安装的终止挂钩 CodeDeploy。

1. 终止挂钩会向由轮询的 [Amazon SQS 队列](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)发送通知。 CodeDeploy

1. 收到通知后， CodeDeploy 解析消息，执行一些验证，然后执行[终止部署](#integrations-aws-auto-scaling-behaviors-hook-enable)。

1. 在终止部署运行期间，每五分钟向 Auto Scaling CodeDeploy 发送一次心跳，让其知道该实例仍在运行中。

1. 到目前为止，EC2 实例仍处于 `Terminating:Wait` 状态（如果您启用了 [Auto Scaling 组暖池](https://docs.aws.amazon.com/autoscaling/ec2/userguide/warm-pool-instance-lifecycle.html)，则可能处于 `Warmed:Pending:Wait` 状态）。

1. 部署完成后，无论终止部署成功还是失败，都会向 Auto Scaling CodeDeploy 指示 EC2 终止流程。`CONTINUE`

## Amazon EC2 Auto Scaling 是如何使用的 CodeDeploy
<a name="integrations-aws-auto-scaling-behaviors"></a>

当您创建或更新 CodeDeploy 部署组以包含 Auto Scaling 组时，请使用 CodeDeploy 服务角色 CodeDeploy访问 Auto Scaling 组，然后将 Auto Sc [aling 生命周期挂钩安装到您的 Aut](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) o Scaling 组中。

**注意**  
*Auto Scaling 生命周期挂钩**不同于本指南生成 CodeDeploy 并在本指南中描述的生命周期事件**（也称为生命周期事件挂钩*）。[AppSpec “挂钩” 部分](reference-appspec-file-structure-hooks.md)

 CodeDeploy 安装的 Auto Scaling 生命周期挂钩有：
+ **启动挂钩** — 此挂钩通知 CodeDeploy Auto S [caling 横向扩展事件正在进行](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-out)中， CodeDeploy 需要开始启动部署。

  在*启动部署*期间， CodeDeploy：
  + 将您的应用程序修订部署到横向扩展实例。
  + 生成生命周期事件以指明部署的进度。您可以将这些生命周期事件挂接到自己的脚本以启用自定义启动功能。有关更多信息，请参阅[生命周期事件挂钩可用性](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-availability)中的表。

  启动挂钩和关联的启动部署将始终处于启用状态，无法关闭。
+ **终止挂钩** — 此可选挂钩通知 CodeDeploy Auto [Scaling 缩减事件](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in)正在进行中， CodeDeploy 需要启动终止部署。

  在*终止部署*期间， CodeDeploy 生成生命周期事件以指示实例关闭的进度。有关更多信息，请参阅 [在 Auto Scaling 横向缩减事件期间启用终止部署](#integrations-aws-auto-scaling-behaviors-hook-enable)。

**Topics**
+ [CodeDeploy 安装生命周期挂钩后，它们是如何使用的？](#integrations-aws-auto-scaling-behaviors-hook-usage)
+ [如何 CodeDeploy 命名 Amazon EC2 Auto Scaling 群组](#integrations-aws-auto-scaling-behaviors-naming)
+ [自定义生命周期挂钩事件的执行顺序](#integrations-aws-auto-scaling-behaviors-hook-order)
+ [部署期间的横向扩展事件](#integrations-aws-auto-scaling-behaviors-mixed-environment)
+ [部署期间的横向缩减事件](#integrations-aws-auto-scaling-behaviors-scale-in)
+ [AWS CloudFormation cfn-init 脚本中的事件顺序](#integrations-aws-auto-scaling-behaviors-event-order)

### CodeDeploy 安装生命周期挂钩后，它们是如何使用的？
<a name="integrations-aws-auto-scaling-behaviors-hook-usage"></a>

安装启动和终止生命周期挂钩后，将分别 CodeDeploy 在 Auto Scaling 组横向扩展和缩小活动期间使用它们。

**横向扩展（启动）事件的展开方式如下：**

1. Auto Scaling 服务（或者简称为 Auto Scaling）确定需要发生横向扩展事件，然后与 EC2 服务联系以启动新的 EC2 实例。

1. EC2 服务启动新的 EC2 实例。实例进入 `Pending` 状态，然后进入 `Pending:Wait` 状态。

1. 在此期间`Pending:Wait`，Auto Scaling 会运行附加到 Auto Scaling 组的所有生命周期挂钩，包括安装的启动挂钩 CodeDeploy。

1. 启动挂钩会向通过轮询的 [Amazon SQS 队列](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)发送通知。 CodeDeploy

1. 收到通知后， CodeDeploy 解析消息，执行一些验证，然后开始[启动部署](#launch-deployment)。

1. 在启动部署运行期间，每五分钟向 Auto Scaling CodeDeploy 发送一次心跳，让其知道该实例仍在运行中。

1. 到目前为止，EC2 实例仍处于 `Pending:Wait` 状态。

1. 部署完成后，会向 Auto Scaling CodeDeploy 指示其中一个`CONTINUE`或 `ABANDON` EC2 启动过程，具体取决于部署成功还是失败。
   + 如果 CodeDeploy 指示`CONTINUE`，Auto Scaling 将继续启动过程，要么等待其他挂钩完成，要么将实例置于`Pending:Proceed`然后进入`InService`状态。
   + 如果 CodeDeploy 指示`ABANDON`，则 Auto Scaling 会终止 EC2 实例，并在需要时重新启动启动过程，以满足所需的实例数量，如自动缩放**所需容量**设置中所定义。

**横向缩减（终止）事件的展开方式如下：**

请参阅[在 Auto Scaling 横向缩减事件期间启用终止部署](#integrations-aws-auto-scaling-behaviors-hook-enable)。

### 如何 CodeDeploy 命名 Amazon EC2 Auto Scaling 群组
<a name="integrations-aws-auto-scaling-behaviors-naming"></a>

 

在 EC2/本地计算平台上 blue/green 部署期间，您可以通过两种方式将实例添加到替换（绿色）环境中：
+  使用已存在或者您手动创建的实例。
+  使用您指定的 Amazon EC2 Auto Scaling 组中的设置，在新的 Amazon EC2 Auto Scaling 组中定义和创建实例。

 如果您选择第二个选项， CodeDeploy 请为您配置一个新的 Amazon EC2 Auto Scaling 组。它使用以下约定来命名组：

```
CodeDeploy_deployment_group_name_deployment_id
```

例如，如果在 ID 为 `10` 的部署中，部署名为 `alpha-deployments` 的部署组，则预置的 Amazon EC2 Auto Scaling 组将被命名为 `CodeDeploy_alpha-deployments_10`。有关更多信息，请参阅[为 EC2/本地部署创建 blue/green 部署组（控制台）](deployment-groups-create-blue-green.md)和[GreenFleetProvisioningOption](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GreenFleetProvisioningOption.html)。

### 自定义生命周期挂钩事件的执行顺序
<a name="integrations-aws-auto-scaling-behaviors-hook-order"></a>

您可以将自己的生命周期挂钩添加到要 CodeDeploy 部署的 Amazon EC2 Auto Scaling 群组中。但是，无法根据 CodeDeploy 默认部署生命周期事件预先确定这些自定义生命周期挂钩事件的执行顺序。例如，如果您向 Amazon EC2 Auto Scaling 组添加了一个名为`ReadyForSoftwareInstall`的自定义生命周期挂钩，则无法事先知道该挂钩是在第一个默认部署生命周期事件之前还是最后一个 CodeDeploy默认部署生命周期事件之后执行。

有关更多信息，请参阅 Amazon EC2 Auto Scaling 组添加自定义生命周期挂钩，请参阅《Amazon EC2 Auto Scaling 用户指南》**中的[添加生命周期挂钩](https://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html#adding-lifecycle-hooks)。

### 部署期间的横向扩展事件
<a name="integrations-aws-auto-scaling-behaviors-mixed-environment"></a>

如果在部署过程中发生 Auto Scaling 横向扩展事件，新实例将使用之前部署的应用程序修订进行更新，而不是最新的应用程序修订。如果部署成功，则旧实例和最近横向扩展的实例将会托管不同的应用程序修订。要更新版本较旧的实例，请 CodeDeploy自动启动后续部署（在第一次部署之后立即启动）以更新所有过时的实例。如果您想更改此默认行为，以便将过时的 EC2 实例保留在较旧版本，请参阅[Automatic updates to outdated instances](deployment-groups-configure-advanced-options.md#auto-updates-outdated-instances)。

如果您想在部署期间暂停 Amazon EC2 Auto Scaling 向外扩展流程，则可以通过`common_functions.sh`脚本中用于进行负载平衡的设置来实现此操作。 CodeDeploy如果 `HANDLE_PROCS=true`，则以下 Auto Scaling 事件在部署过程中将自动暂停：
+ AZRebalance
+ AlarmNotification
+ ScheduledActions
+ ReplaceUnhealthy

**重要**  
只有 CodeDeployDefault. OneAtATime 部署配置支持此功能。

有关在使用 `HANDLE_PROCS=true` Amazon EC2 Auto Scaling 时使用避免部署问题的更多信息，请参阅 on 中[[aws-codedeploy-samples](https://github.com/awslabs/aws-codedeploy-samples)关于处理 AutoScaling 流程的重要通知](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb#important-notice-about-handling-autoscaling-processes) GitHub。

### 部署期间的横向缩减事件
<a name="integrations-aws-auto-scaling-behaviors-scale-in"></a>

如果 Auto Scaling 组在该 Auto Scaling 组上进行 CodeDeploy 部署时开始缩容，则终止进程（包括终止部署生命周期事件）和 CodeDeploy 终止实例上的其他 CodeDeploy 生命周期事件之间可能会出现争用条件。如果在所有 CodeDeploy 生命周期事件完成之前终止该实例，则在该特定实例上的部署可能会失败。此外，整体 CodeDeploy 部署可能会失败，也可能不会失败，具体取决于您在部署配置中如何设置**最低运行状况主机**数设置。

### AWS CloudFormation cfn-init 脚本中的事件顺序
<a name="integrations-aws-auto-scaling-behaviors-event-order"></a>

如果您使用 `cfn-init`（或 `cloud-init`）在新预配的 Linux 实例上运行脚本，则除非您严格控制实例启动之后的事件发生顺序，否则部署可能会失败。

该顺序必须是：

1. 新预配的实例启动。

1. 所有 `cfn-init` 引导脚本运行直至完成。

1.  CodeDeploy 代理启动。

1. 将最新的应用程序修订部署到实例。

如果未仔细控制事件的顺序，则 CodeDeploy 代理可能会在所有脚本完成运行之前开始部署。

要控制事件的顺序，请使用以下最佳实践之一：
+ 通过`cfn-init`脚本安装 CodeDeploy 代理，将其放在所有其他脚本之后。
+ 将 CodeDeploy 代理包含在自定义 AMI 中并使用`cfn-init`脚本启动它，将其放在所有其他脚本之后。

有关使用 `cfn-init` 的更多信息，请参阅《AWS CloudFormation 用户指南》**中的 [cfn-init](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html)。

## 将自定义 AMI 与 CodeDeploy Amazon EC2 Auto Scaling 配合使用
<a name="integrations-aws-auto-scaling-custom-ami"></a>

指定要在 Amazon EC2 Auto Scaling 组中启动新 Amazon EC2 实例时使用的基本 AMI 时，有下面两个选项：
+ 您可以指定已安装 CodeDeploy 代理的基本自定义 AMI。由于已安装代理，因此相比于另一个选项，此选项启动新 Amazon EC2 实例的速度更快。但是，此选项使 Amazon EC2 实例的初始部署失败的可能性更大，尤其是在 CodeDeploy 代理已过期的情况下。如果您选择此选项，我们建议您定期更新基本自定义 AMI 中的 CodeDeploy 代理。
+ 您可以指定一个未安装 CodeDeploy 代理的基本 AMI，并在在 Amazon EC2 Auto Scaling 组中启动每个新实例时安装代理。尽管此选项相比于另一个选项启动新 Amazon EC2 实例的速度更慢，但是它提高了实例的初始部署将成功的可能性。此选项使用最新版本的 CodeDeploy 代理。

# CodeDeploy 与 Elastic Load Balancing
<a name="integrations-aws-elastic-load-balancing"></a>

在 CodeDeploy 部署期间，当互联网流量尚未准备就绪、正在部署到或不再需要作为环境的一部分时，负载均衡器会阻止将互联网流量路由到这些实例。但是，负载均衡器扮演的确切角色取决于它是用于 blue/green 部署还是就地部署。

**注意**  
在部署中必须使用 Elastic Load Balancing 负载均衡器，在就地 blue/green 部署中是可选的。

## Elastic Load Balancing 类型
<a name="integrations-aws-elastic-load-balancing-types"></a>

Elastic Load Balancing 提供了三种可用于 CodeDeploy 部署的负载均衡器：传统负载均衡器、应用程序负载均衡器和网络负载均衡器。

Classic 负载均衡器  
在传输层进行路由和负载平衡 (TCP/SSL) or the application layer (HTTP/HTTPS)。它支持 VPC。  
Amazon ECS 部署不支持经典负载均衡器。

应用程序负载均衡器  
路由和负载均衡在应用程序层（HTTP/HTTPS）进行，并支持基于路径的路由。它可以将请求路由到您的 Virtual Private Cloud（VPC）中每个 EC2 实例或容器实例上的端口。  
 在 EC2 实例上部署时，应用程序负载均衡器目标组的目标类型必须是 `instance`；在 Fargate 上部署时，目标组的目标类型必须是 `IP`。有关更多信息，请参阅[目标类型](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-type)。

网络负载均衡器  
路由和负载均衡在传输层（TCP/UDP 层，即第 4 层）进行，依据是从 TCP 数据包标头中而非从数据包内容中提取的地址信息。Network Load Balancer 可以处理突发流量，保留客户端的源 IP，并在负载均衡器的使用寿命内使用固定 IP。

要了解有关 Elastic Load Balancing 负载均衡器的更多信息，请参阅以下主题：
+ [什么是 Elastic Load Balancing？](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)
+ [什么是经典负载均衡器？](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/introduction.html)
+ [什么是应用程序负载均衡器？](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)
+ [什么是网络负载均衡器？](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)

## 蓝/绿部署
<a name="integrations-aws-elastic-load-balancing-blue-green"></a>

在 Elastic Load Balancing 负载均衡器后重新路由实例流量是 CodeDeploy blue/green 部署的基础。

在 blue/green 部署期间，负载均衡器允许根据您指定的规则将流量路由到已部署最新应用程序修订的部署组（替换环境）中的新实例，然后阻止来自运行先前应用程序修订的旧实例（原始环境）的流量。

替换环境中的实例注册一个或多个负载均衡器后，将取消注册原始环境中的实例，并根据您的需要终止。

对于 blue/green 部署，您可以在部署组中指定一个或多个传统负载均衡器、Application Load Balancer 目标组或 Network Load Balancer 目标组。您可以使用 CodeDeploy 控制台或 AWS CLI 将负载均衡器添加到部署组。

有关 blue/green 部署中的负载均衡器的更多信息，请参阅以下主题：
+ [在 Elastic Load Balancing 中为 CodeDeploy Amazon EC2 部署设置负载均衡器](deployment-groups-create-load-balancer.md)
+ [为 blue/green 部署创建应用程序（控制台）](applications-create-blue-green.md)
+ [为 EC2/本地部署创建 blue/green 部署组（控制台）](deployment-groups-create-blue-green.md)

## 就地部署
<a name="integrations-aws-elastic-load-balancing-in-place"></a>

在就地部署的过程中，负载均衡器可以防止 Internet 流量路由到要部署的实例；实例部署完成后，可恢复对该实例的流量路由。

如果就地部署期间未使用负载均衡器，Internet 流量在部署过程中可能仍会引向该实例。因此，您的客户可能会遇到中断、不完整或过时的 Web 应用程序。当您将 Elastic Load Balancing 负载均衡器与就地部署一起使用时，部署组中的实例将从负载均衡器中注销，使用最新的应用程序版本进行更新，然后在部署成功后作为同一部署组的一部分在负载均衡器中重新注册。 CodeDeploy 将在负载均衡器后等待最多 1 小时让实例恢复正常。如果在等待期间负载均衡器未将该实例标记为运行正常，则根据部署配置， CodeDeploy 要么移动到下一个实例，要么部署失败。

对于就地部署，您可以指定一个或多个经典负载均衡器、应用程序负载均衡器目标组或网络负载均衡器目标组。您可以将负载均衡器指定为部署组配置的一部分，也可以使用提供的脚本 CodeDeploy 来实现负载均衡器。

### 使用部署组指定就地部署负载均衡器
<a name="integrations-aws-elastic-load-balancing-in-place-deployment-group"></a>

要将负载均衡器添加到部署组，请使用 CodeDeploy 控制台或 AWS CLI。有关就地部署期间在部署组中指定负载均衡器的信息，请参阅以下主题：
+ [为就地部署创建应用程序（控制台）](applications-create-in-place.md)
+ [为就地部署创建部署组（控制台）](deployment-groups-create-in-place.md)
+ [在 Elastic Load Balancing 中为 CodeDeploy Amazon EC2 部署设置负载均衡器](deployment-groups-create-load-balancer.md)

### 使用脚本指定就地部署负载均衡器
<a name="integrations-aws-elastic-load-balancing-in-place-script"></a>

通过执行以下过程中的步骤，使用部署生命周期脚本为就地部署设置负载均衡。
**注意**  
你应该使用 CodeDeployDefault. OneAtATime 只有当您使用脚本为就地部署设置负载均衡器时，才会进行部署配置。不支持并发运行，并且 CodeDeployDefault. OneAtATime 设置可确保脚本的串行执行。有关部署配置的更多信息，请参阅[在中使用部署配置 CodeDeploy](deployment-configurations.md)。

在的 CodeDeploy 示例存储库中 GitHub，我们提供了您可以调整以使用 CodeDeploy Elastic Load Balancing 负载均衡器的说明和示例。这些存储库包含三个示例脚本（`register_with_elb.sh`、`deregister_from_elb.sh` 和 `common_functions.sh`），这些脚本提供了开始操作所需的全部代码。只需编辑这 3 个脚本中的占位符，然后从 `appspec.yml` 文件中引用这些脚本。

要 CodeDeploy 使用注册到 Elastic Load Balancing 负载均衡器的 Amazon EC2 实例进行就地部署，请执行以下操作：

1. 下载要用于就地部署的负载均衡器的类型的示例：
   + [经典负载均衡器](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb)
   + [应用程序负载均衡器[或网络负载均衡器](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)（两种类型可以使用同一脚本）](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)

1. 确保您的每个目标 Amazon EC2 实例都 AWS CLI 安装了。

1. 确保每个目标 Amazon EC2 实例均已附加至少一个 IAM 实例配置文件，并且具有 elasticloadbalancing:\$1 和 autoscaling:\$1 权限。

1. 将部署生命周期事件脚本（`register_with_elb.sh`、`deregister_from_elb.sh` 和 `common_functions.sh`）包含在应用程序的源代码目录中。

1. 在`appspec.yml`应用程序修订版中，提供有关 CodeDeploy 在活动期间运行`register_with_elb.sh`脚本和在**ApplicationStart**活动期间运行`deregister_from_elb.sh`脚本的**ApplicationStop**说明。

1. 如果实例属于某个 Amazon EC2 Auto Scaling 组，则可跳过此步骤。

   在 `common_functions.sh` 脚本中：
   + 如果您使用的是[经典负载均衡器](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb)，请在 `ELB_LIST=""` 中指定 Elastic Load Balancing 负载均衡器的名称，并对文件中的其他部署设置进行所需的任何更改。
   + 如果您使用的是[应用程序负载均衡器[或网络负载均衡器](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)，请在 `TARGET_GROUP_LIST=""` 中指定 Elastic Load Balancing 目标组的名称，并对文件中的其他部署设置进行所需的任何更改。

1. 将应用程序的源代码、`appspec.yml` 和部署生命周期事件脚本绑定到一个应用程序修订中，然后上传该修订。将该修订部署到 Amazon EC2 实例。在部署期间，部署生命周期事件脚本将向负载均衡器取消注册 Amazon EC2 实例，等待连接耗尽，然后在部署完成后向负载均衡器重新注册 Amazon EC2 实例。

# 与合作伙伴产品和服务集成
<a name="integrations-partners"></a>

CodeDeploy 内置了以下合作伙伴产品和服务的集成：


|  |  | 
| --- |--- |
| Ansible |  如果你已经有一套 [Ansible](http://www.ansible.com) 剧本，但只需要某个地方来运行它们，那么 Ansible 的模板将 CodeDeploy 演示几个简单的部署挂钩如何确保 Ansible 在本地部署实例上可用并运行剧本。如果您已经有了构建和维护库存的流程，还可以使用一个 Ansible 模块来安装和运行 CodeDeploy 代理。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 
| Atlassian – Bamboo 和 Bitbucket |  [Bamb](https://www.atlassian.com/software/bamboo/) oo 的 CodeDeploy 任务将包含 AppSpec 文件的目录压缩为.zip 文件，将该文件上传到 Amazon S3，然后根据应用程序中提供的配置开始部署。 CodeDeploy  Atlassian Bitbucket 对的支持 CodeDeploy 使您能够根据需要将代码直接从 Bitbucket 用户界面推送到任何部署组。这意味着，在您更新 Bitbucket 存储库中的代码之后，您不必登录到持续集成（CI）平台或 Amazon EC2 实例即可运行手动部署过程。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 
| Chef |  AWS 提供了两个用于集成 [Chef](https://www.chef.io/) 和 CodeDeploy. 第一本是 Chef 食谱，用于安装和启动 CodeDeploy 代理。这使您能够在使用 CodeDeploy 的同时，使用 Chef 继续管理您的主机基础设施。第二个示例模板演示了 CodeDeploy 如何使用每个节点上的 chef-solo 来编排食谱和食谱的运行。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 
| CircleCI |  [CircleCI](https://circleci.com/) 提供了一个自动测试和持续集成以及部署工具集。在中创建 AWS 要与 circleCI 配合使用的 IAM 角色并在 circle.yml 文件中配置部署参数后，您可以使用 circleCI CodeDeploy 来创建应用程序修订，将其上传到 Amazon S3 存储桶，然后启动和监控您的部署。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 
| CloudBees |  你可以使用 [CloudBees](https://www.cloudbees.com/)DEV @cloud 上提供的 CodeDeploy Jenkins 插件作为构建后的操作。例如，在持续交付管道结束时，可以使用它向服务器队列部署应用程序修订。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 
| Codeship |  您可以使用 [Codeship](https://codeship.com/) 通过 CodeDeploy部署应用程序修订版。您可以使用 Codeship UI 将 CodeDeploy 添加到分支的部署管道中。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 
| GitHub |  您可以使用 CodeDeploy 从[GitHub](http://www.github.com)存储库部署应用程序修订。每当 GitHub 仓库中的源代码发生更改时，您也可以从该存储库触发部署。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 
|  **HashiCorp 领事**  |  在中部署应用程序时，您可以使用开源 HashiCorp Consul 工具来帮助确保应用程序环境的健康和稳定性。 CodeDeploy可以使用 Consul 注册要在部署期间发现的应用程序，将应用程序和节点置于维护模式中以将其从部署中排除，并在目标实例变得运行状况不佳时停止部署。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 
| Jenkins |   CodeDeploy [Jenkins](http://jenkins-ci.org/) 插件为你的 Jenkins 项目提供了一个编译后的步骤。成功构建后，它将压缩工作区，上传到 Amazon S3，并启动新的部署。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 
| Puppet Labs |  AWS 提供了 [Puppet](https://puppetlabs.com/) 的示例模板和。 CodeDeploy第一个是安装和启动 CodeDeploy 代理的 Puppet 模块。这使您能够在使用 CodeDeploy 的同时，使用 Puppet 继续管理您的主机基础设施。第二个示例模板演示了 CodeDeploy 如何使用每个节点上的无主人偶来编排模块和清单的运行。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 
| SaltStack |  您可以将[SaltStack](https://saltproject.io/index.html)基础架构与集成 CodeDeploy。你可以使用该 CodeDeploy 模块在你的小兵上安装和运行 CodeDeploy 代理，或者通过几个简单的部署挂钩，你可以 CodeDeploy 用来编排 Salt States 的运行。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 
|  **TeamCity**  |  您可以使用 CodeDeploy Runner 插件直接从部署应用程序 TeamCity。该插件添加了一个 TeamCity 构建步骤，用于准备应用程序修订并将其上传到 Amazon S3 存储桶，在 CodeDeploy应用程序中注册该修订，创建 CodeDeploy 部署，并且（如果您愿意）等待部署完成。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 
| Travis CI |  您可以将 [Travis CI](https://travis-ci.com/) 配置为在成功构建 CodeDeploy 后触发部署。 了解更多： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/integrations-partners.html)  | 

**Topics**
+ [GitHub](integrations-partners-github.md)

# CodeDeploy 与集成 GitHub
<a name="integrations-partners-github"></a>

CodeDeploy 支持 [GitHub](https://github.com/about)，一种基于 Web 的代码托管和共享服务。 CodeDeploy 可以将存储在存储 GitHub库或 Amazon S3 存储桶中的应用程序修订部署到实例。 CodeDeploy 仅 GitHub 支持 EC2/本地部署。

**Topics**
+ [从中部署 CodeDeploy 修订 GitHub](#github-deployment-steps)
+ [GitHub 行为与 CodeDeploy](#github-behaviors)

## 从中部署 CodeDeploy 修订 GitHub
<a name="github-deployment-steps"></a>

要将 GitHub 存储库中的应用程序修订部署到实例，请执行以下操作：

1. 创建 CodeDeploy 与您要部署的 Amazon EC2 实例类型兼容的修订版。

   要创建兼容版本，请按照[为 CodeDeploy 规划修订](application-revisions-plan.md)和[将应用程序规范文件添加到修订版中 CodeDeploy](application-revisions-appspec-file.md)中的说明执行操作。

1. 使用 GitHub 帐户将您的修订添加到 GitHub 存储库中。

   要创建 GitHub 账户，请参阅[加入 GitHub](https://github.com/join)。要创建 GitHub 存储库，请参阅[创建存储库](https://help.github.com/articles/create-a-repo/)。

1. 使用 CodeDeploy 控制台中的 “**创建部署**” 页面或 AWS CLI **create-deployment**命令将您的修订从 GitHub 存储库部署到配置为在 CodeDeploy部署中使用的目标实例。

   如果要调用该**create-deployment**命令，则必须先使用控制台的 “**创建部署**” 页面授予 GitHub 代表指定应用程序的首选 GitHub账户与之交互的 CodeDeploy 权限。每个应用程序只需进行一次这样的操作。

   要了解如何使用 “**创建部署**” 页面从 GitHub 存储库进行部署，请参阅[使用创建部署 CodeDeploy](deployments-create.md)。

   要了解如何调用**create-deployment**命令从 GitHub 存储库进行部署，请参阅[创建 EC2/本地计算平台部署（CLI）](deployments-create-cli.md)。

   要了解如何准备用于 CodeDeploy 部署的实例，请参阅[使用以下实例 CodeDeploy](instances.md)。

有关更多信息，请参阅 [教程： CodeDeploy 用于从中部署应用程序 GitHub](tutorials-github.md)。

## GitHub 行为与 CodeDeploy
<a name="github-behaviors"></a>

**Topics**
+ [GitHub 使用中的应用程序进行身份验证 CodeDeploy](#behaviors-authentication)
+ [CodeDeploy 与私有和公共 GitHub 存储库的互动](#behaviors-interactions-private-and-public)
+ [CodeDeploy 与组织管理的存储库 GitHub 交互](#behaviors-interactions-organization-managed)
+ [使用自动部 CodePipeline 署 CodeDeploy](#behaviors-deploy-automatically)

### GitHub 使用中的应用程序进行身份验证 CodeDeploy
<a name="behaviors-authentication"></a>

在您授予与之交互的 CodeDeploy 权限后 GitHub，该 GitHub 账户与应用程序之间的关联将存储在中 CodeDeploy。您可以将应用程序关联到其他 GitHub 帐户。您也可以撤消与之交互 CodeDeploy 的权限。 GitHub

**要将 GitHub 账户关联到应用程序 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账户的应用程序。

1. 如果您的应用程序没有部署组，请选择**创建部署组**来创建一个部署组。有关更多信息，请参阅 [使用创建部署组 CodeDeploy](deployment-groups-create.md)。需要部署组在下一步中选择**创建部署**。

1.  从**部署**中，选择**创建部署**。
**注意**  
您无需创建新的部署。这是目前将其他 GitHub 账户关联到应用程序的唯一方法。

1.  在 **“部署设置”** 中，对于 “**修订类型**”，选择 “**我的应用程序存储在” 中 GitHub**。

1. 请执行以下操作之一：
   + 要创建 AWS CodeDeploy 应用程序与 GitHub帐户的连接，请在单独的 Web 浏览器选项卡 GitHub 中注销。在**GitHub 令牌名称**中，键入用于标识此连接的名称，然后选择 **Connect to GitHub**。网页会提示您授权 CodeDeploy与您的应用程序进行交互。 GitHub 继续执行步骤 10。
   + 要使用已创建的连接，请在**GitHub令牌名称中选择其名称**，然后选择 **Connect to GitHub**。继续执行步骤 8。
   + 要创建与其他 GitHub 帐户的连接，请在单独的 Web 浏览器选项卡 GitHub 中注销。在**GitHub 令牌名称**中，键入用于标识连接的名称，然后选择 **Connect to GitHub**。网页会提示您授权 CodeDeploy 与您的应用程序进行交互。 GitHub 继续执行步骤 10。

1. 如果您尚未登录 GitHub，请按照 “**登录**” 页面上的说明使用要关联应用程序的 GitHub 帐户登录。

1. 选择 “**授权应用程序**”。 GitHub CodeDeploy授予 GitHub 代表所选应用程序的登录 GitHub 账户与之交互的权限。

1. 如果您不需要创建部署，请选择 **Cancel**。

**撤销与之交互 CodeDeploy 的权限 GitHub**

1. [GitHub ](https://github.com/dashboard)使用您要撤销 AWS CodeDeploy 权限的 GitHub 账户的凭据登录。

1. 打开 “ GitHub [应用程序](https://github.com/settings/applications)” 页面，**CodeDeploy**在已授权的应用程序列表中找到，然后按照撤消应用程序授权的 GitHub 步骤进行操作。

### CodeDeploy 与私有和公共 GitHub 存储库的互动
<a name="behaviors-interactions-private-and-public"></a>

CodeDeploy 支持从私有和公共 GitHub存储库部署应用程序。当您代表您 CodeDeploy 授予访问权限时， CodeDeploy将拥有 GitHub 对您的 GitHub 账户有权访问的所有私有 GitHub 仓库的读写权限。但是， CodeDeploy 只能从 GitHub 存储库中读取。它不会写入您的任何私有 GitHub 存储库。

### CodeDeploy 与组织管理的存储库 GitHub 交互
<a name="behaviors-interactions-organization-managed"></a>

默认情况下，由组织管理的 GitHub 存储库（而不是您账户自己的私有或公共存储库）不授予对第三方应用程序的访问权限，包括 CodeDeploy。如果在中启用了组织的第三方应用程序限制， GitHub 并且您尝试从其 GitHub 存储库部署代码，则部署将失败。可通过两种方式解决此问题。
+ 作为组织成员，您可以要求组织所有者批准对 CodeDeploy 的访问权。申请此访问权限的步骤取决于您是否已经 CodeDeploy 为个人账户授权：
  + 如果您的账户已获得 CodeDeploy 授权访问权限，请参阅[请求组织批准您的授权应用程序](https://help.github.com/articles/requesting-organization-approval-for-your-authorized-applications/)。
  + 如果您尚未 CodeDeploy 在账户中获得访问权限，请参阅[请求组织批准第三方应用程序](https://help.github.com/articles/requesting-organization-approval-for-third-party-applications/)。
+ 组织所有者可禁用组织的所有第三方应用程序限制。有关信息，请参阅[禁用组织的第三方应用程序限制](https://help.github.com/articles/disabling-third-party-application-restrictions-for-your-organization/)。

有关更多信息，请参阅[关于第三方应用程序限制](https://help.github.com/articles/about-third-party-application-restrictions/)。

### 使用自动部 CodePipeline 署 CodeDeploy
<a name="behaviors-deploy-automatically"></a>

 CodePipeline 只要源代码发生变化，您就可以从触发部署。有关更多信息，请参阅 [CodePipeline](https://aws.amazon.com/codepipeline/)。

# 来自社区的集成示例
<a name="integrations-community"></a>

以下各部分提供的链接指向博客文章、文章和社区提供的示例。

**注意**  
提供的这些链接仅供参考，不应视为全面列表或支持示例内容。 AWS 对这些内容或外部内容的准确性不承担责任。

## 博客文章
<a name="integrations-community-blogposts"></a>
+ [在中自动进行 CodeDeploy 资源调配 CloudFormation](http://www.stelligent.com/cloud/automating-aws-codedeploy-provisioning-in-cloudformation/)

  了解如何使用在中 CodeDeploy 配置应用程序部署 CloudFormation。

  *发布时间：2016 年 1 月*
+ [AWS Toolkit for Eclipse 与 CodeDeploy （第 1 部分）集成](https://aws.amazon.com/blogs/developer/aws-toolkit-for-eclipse-integration-with-aws-codedeploy-part-1/)

  [AWS Toolkit for Eclipse 与 CodeDeploy （第 2 部分）集成](https://aws.amazon.com/blogs/developer/aws-toolkit-for-eclipse-integration-with-aws-codedeploy-part-2/)

  [AWS Toolkit for Eclipse 与 CodeDeploy （第 3 部分）集成](https://aws.amazon.com/blogs/developer/aws-toolkit-for-eclipse-integration-with-aws-codedeploy-part-3/)

  了解 Java 开发人员如何使用适用于 Eclipse 的 CodeDeploy 插件 AWS 直接从 Eclipse 开发环境中部署 Web 应用程序。

  *发布时间：2015 年 2 月*
+ [ GitHub 使用自动部署 CodeDeploy](https://aws.amazon.com/blogs/devops/automatically-deploy-from-github-using-aws-codedeploy/)

  了解如何使用从 GitHub 到 CodeDeploy 的自动部署来创建 end-to-end管道，从源代码管理到测试或生产环境。

  *发布时间：2014 年 12 月*