一般性问题

问:什么是 Amazon CodeDeploy?

Amazon CodeDeploy 是一项可以将代码自动部署到任意实例中的服务,这些实例包括 Amazon EC2 实例和在内部运行的实例。借助 Amazon CodeDeploy,您可以更轻松地快速推出新功能、避免在应用程序部署过程中出现停机,以及处理复杂的应用程序更新工作。您可以使用 Amazon CodeDeploy 自动执行部署,这样就不必进行容易出错的手动操作,该服务可以随您的基础设施进行扩展,因此,您可以轻松地部署到一个或上千个实例。

问:哪些人应该使用 Amazon CodeDeploy?

Amazon CodeDeploy 针对的人群是需要部署应用程序到任意实例的开发人员和管理员,这些实例包括 Amazon EC2 实例和在内部运行的实例。它很灵活,任何想在实例上更新软件或运行脚本的人都可以使用。

问:哪种类型的应用程序可以通过 Amazon CodeDeploy 进行部署?

Amazon CodeDeploy 可用于部署任何类型的应用程序。要使用 Amazon CodeDeploy,您需要指定待复制的文件和要在部署期间在每个实例上运行的脚本。Amazon CodeDeploy 与编程语言和架构无关,因此您可以将脚本用于任何定制部署逻辑。

问:Amazon CodeDeploy 支持什么操作系统?

Amazon CodeDeploy 支持多种类型的操作系统。Amazon CodeDeploy 提供有已在 Amazon Linux、Red Hat Enterprise Linux、Ubuntu Server 和 Microsoft Windows Server 上进行测试的代理程序。如果要使用其他操作系统,可将 Amazon CodeDeploy 代理程序作为开源软件使用,(请参阅此处)。有关操作系统支持情况的更多信息,请参阅 Amazon CodeDeploy 文档

问:Amazon CodeDeploy 会用于现有的工具链吗?

会的。Amazon CodeDeploy 可用于各种配置管理系统、持续集成和部署系统以及源代码控制系统。

问:Amazon CodeDeploy 与其他的 亚马逊云科技 部署和管理服务(如 Amazon Elastic Beanstalk 和 Amazon OpsWorks)有何不同?

Amazon CodeDeploy 是一项构建块服务,旨在帮助开发人员部署和更新任意实例中的软件,这些实例包括 Amazon EC2 实例和在内部运行的实例。Amazon Elastic Beanstalk 和 Amazon OpsWorks 是端到端应用程序管理解决方案。

问:Amazon CodeDeploy 支持内部实例吗?

支持。Amazon CodeDeploy 支持任何可以安装 CodeDeploy 代理程序并连接到 亚马逊云科技 公共终端节点的实例。

概念

问:什么是应用程序?
 
应用程序是部署到一组实例中的软件和配置的集合。一般情况下,该组中的实例运行的是同一种软件。例如,如果您有一个大型分布式系统,Web 层可能由一个应用程序组成,数据层可能由另一个应用程序组成。
 
问:什么是修订版?
 
修订版是源代码、构建后项目、网页、可执行文件和部署脚本以及 AppSpec 文件等可部署内容的特定版本。Amazon CodeDeploy 代理程序可通过 GitHub 或 Amazon S3 存储桶访问修订版。
 
问:什么是部署组?

部署组是与您作为部署对象的应用程序相关的一组实例。您可以通过指定标签、Auto Scaling 组名称或同时指定此二者,将实例添加到部署组中。您可以为一个应用程序定义多个部署组,如分阶段测试和生产。有关标签的信息,请参阅 在控制台中使用 Amazon EC2 标签。有关如何在 Auto Scaling 组中进行部署的更多信息,请参阅 Auto Scaling 集成
 
问:什么是部署配置?

部署配置是一项约束条件,决定一项部署如何通过实例在部署组中取得进展。您可以使用部署配置向多实例部署组执行零停机部署。例如,如果您的应用程序需要部署组中至少有 50% 的实例在运行中且提供流量,您可以在您的部署配置中指定这一点,从而使部署不会导致停机。如果没有与部署或者部署组相关联的部署配置,则在默认情况下,Amazon CodeDeploy 将会一次部署到一个实例中。有关部署配置的更多信息,请参阅 实例运行状况
问:我需要为部署指定哪些参数?
您需要为部署指定 3 个参数:
  1. 修订版 – 指定要部署的内容。
  2. 部署组 – 指定部署的位置。
  3. 部署配置 – 可选参数,指定部署方式。

问:什么是 AppSpec 文件?

AppSpec 文件是一种配置文件,用于指定待复制文件和待执行脚本。AppSpec 文件使用 YAML 格式,您将其包含在您的修订版的根目录下。AppSpec 文件供 Amazon CodeDeploy 代理程序所用,且由两个部分组成。“files”部分指定了您的修订版中待复制的源文件,以及每个实例的目标文件夹。“hooks”部分指定了在部署各阶段运行的脚本的位置(作为从修订包根下起始的相对路径)。部署的各个阶段均被称为部署生命周期事件。下面是示例 AppSpec 文件。有关 AppSpec 文件的信息,包括可指定的所有选项,请参阅 AppSpec 文件参考

version: 0.0

os: linux

files: 

# You can specify one or more mappings in the files section.

  - source: /

    destination: /var/www/html/WordPress

hooks:

 # The lifecycle hooks sections allows you to specify deployment scripts.

ApplicationStop: 

# Step 1: Stop Apache and MySQL if running.

    - location: helper_scripts/stop_server.sh

BeforeInstall: 

# Step 2: Install Apache and MySQL.

# You can specify one or more scripts per deployment lifecycle event.

    - location: deploy_hooks/puppet-apply-apache.sh

    - location: deploy_hooks/puppet-apply-mysql.sh 

 AfterInstall: 

# Step 3: Set permissions.

    - location: deploy_hooks /change_permissions.sh

      timeout: 30

      runas: root

# Step 4: Start the server.

    - location: helper_scripts/start_server.sh

      timeout: 30

      runas: root

问:什么是部署生命周期事件?

部署会经历一组预定义阶段,称之为部署生命周期事件。部署生命周期事件可让您将代码作为部署的一部分运行。下表以执行顺序列出了目前支持的各种不同的部署生命周期事件,以及您可能想使用它们的时间示例。

部署生命周期事件 说明
ApplicationStop

这是下载修订版之前发生的第一个部署生命周期事件。用于此部署生命周期事件的 AppSpec 文件和脚本来自于上一次成功部署的修订版。 

如果要顺利地停止应用程序或删除部署准备中当前已安装的软件包,您可以使用 ApplicationStop 部署生命周期事件。

DownloadBundle 在此部署生命周期事件期间,代理程序将修订版文件复制到实例上的临时位置。此部署生命周期事件是为代理程序预留的,不能用于运行用户脚本。
BeforeInstall 您可以使用 BeforeInstall 部署生命周期事件执行文件解密和当前版本的备份创建等预安装任务。
Install 在此部署生命周期事件期间,代理程序将修订版本文件从临时位置复制到最终目标文件夹。此部署生命周期事件是为代理程序预留的,不能用于运行用户脚本。
AfterInstall 您可以使用 AfterInstall 部署生命周期事件来执行应用程序配置或文件权限变更等任务。
ApplicationStart 通常情况下,ApplicationStart 部署生命周期事件用来重新启动在 ApplicationStop 期间停止的服务。
ValidateService ValidateService 是最后一个部署生命周期事件,而且还可用于验证部署是否成功完成。

入门

问:如何开始使用 Amazon CodeDeploy?

您可以登录 亚马逊云科技 管理控制台并开始使用 Amazon CodeDeploy。如果要快速了解该服务,请参阅入门,其中包含了分步教程。

使用 Amazon CodeDeploy

问:将现有的 Amazon EC2 实例用于 Amazon CodeDeploy 是否有任何先决条件?

Amazon EC2 实例必须与 IAM 实例配置文件关联并运行支持的操作系统。有关更多信息,请参阅使用现有 Amazon EC2 实例

问:使用 Amazon CodeDeploy 部署应用程序一般要执行哪些步骤?

下图显示了部署期间的一般步骤。创建应用程序和部署组(有关术语的解释,请参阅概念部分)通常是每个应用程序的一次性设置任务。进行循坏操作会上传修订版并部署该版本。有关上述每项任务的详细说明,以及分步说明,请参阅部署

问:如何访问 Amazon CodeDeploy?

您可以使用 亚马逊云科技 管理控制台、Amazon 开发工具包Amazon CodeDeploy API 访问 Amazon CodeDeploy。

问:我需要使用 Amazon CodeDeploy 对待部署的代码进行哪些更改?

您不需要对您的代码作任何更改。您只需在修订版捆绑包的根目录中添加一个配置文件(称作 AppSpec 文件),用于指定待复制文件和待执行脚本。

问:如何使用 Amazon CodeDeploy 通过我的源代码控制系统部署应用程序?

如果您使用的是 GitHub,您可以通过 .zip、.tar 或 .tar.gz 格式将修订版从您的存储库直接部署到实例中。对于其他源代码控制系统,您可以通过 .zip、.tar 或 .tar.gz 格式捆绑修订版并将其上传到 Amazon S3 存储桶中,并在进行部署时指定 Amazon S3 的位置。如果您的应用程序需要一个构建步骤,请确保 GitHub 存储库或 Amazon S3 存储桶中包含构建后项目。有关如何使用 Amazon S3 存储修订版的更多信息,请参阅推送修订版

问:Amazon CodeDeploy 如何与配置管理工具搭配使用?

您可以从 AppSpec 文件中的任何部署生命周期事件钩子中调用您的配置管理工具。举例来说,如果您有一个想作为部署的一部分运行的 Chef 配方,您可以在 AppSpec 文件的适当部署生命周期事件钩子中指定该配方,以执行此操作。此外,您还可以利用您的配置管理系统在实例上安装 Amazon CodeDeploy 代理程序。

问:是否可将 Amazon CodeDeploy 与连续集成和部署系统搭配使用?

可以。您可以通过使用 Amazon 开发工具包调用公用 API,将 Amazon CodeDeploy 与您的持续集成和部署系统相集成。

问:如何将我的应用程序置于刚添加到部署组中的实例上?

将最新修订版部署到部署组中,从而将您的应用程序置于新添加的实例上。除了作为 Auto Scaling 组的一部分启动的 Amazon EC2 实例之外,Amazon CodeDeploy 不会将最新修订版自动部署到新添加的实例中。

问:Amazon CodeDeploy 如何与 Auto Scaling 搭配使用?

您可以将 Auto Scaling 组与部署组关联在一起,从而确保新启动的实例始终会获得应用程序的最新修订版。每当该 Auto Scaling 组有新的 Amazon EC2 实例启动时,它首先将处于“待处理”状态,且该部署组的最后一次成功修订版的部署会在该 Amazon EC2 实例上触发。如果该部署成功完成,Amazon EC2 实例的状态将更改为“正在服务”。如果该部署失败,Amazon EC2 实例终止,新的 Amazon EC2 实例会以“待处理”状态启动,且部署会在新启动的 EC2 实例上触发。有关 Auto Scaling 组实例生命周期事件的更多信息,请参阅 Auto Scaling 组生命周期

问:如何跟踪部署的状态?

您可以使用 亚马逊云科技 管理控制台、Amazon 开发工具包Amazon CodeDeploy API 跟踪部署状态。您还可以查看整体部署状态并进一步深入了解每个实例的状态以及该实例的每个部署生命周期事件的状态。您还可以查看任何故障所对应的日志条目,从而轻松调试部署问题,无需登录实例。

问:是否可以停止正在运行的部署?

可以。当您停止正在运行的部署时,Amazon CodeDeploy 服务将指导每个实例上的代理程序来停止执行其他脚本。要使您的应用程序回到一致状态,您可以重新部署该修订版或部署另一个修订版。

问:如何使应用程序回滚到上一修订版?

要使应用程序回滚到上一修订版,您只需要部署该修订版即可。Amazon CodeDeploy 会跟踪记录为当前修订版复制的文件,并在开始新部署前删除这些文件,因此重新部署和回滚之间没有区别。然而,您需要确保上一修订版可用于回滚。

问:是否可以使用获得版本控制的 Amazon S3 存储桶存储修订版?

可以。您可以使用获得版本控制的 Amazon S3 存储桶并通过指定版本 ID 来唯一标识修订版。

问:使用 Amazon CodeDeploy 时的服务限制是什么?

有关服务限制的信息,请参阅限制。要提高服务限制,请通过管理控制台中的 亚马逊云科技 支持中心提交请求。

问:是否可以出于安全分析和运营故障排除的目的获得从我的账户发起的 Amazon CodeDeploy API 调用的历史记录?

可以。要获得从您的账户发起的 Amazon CodeDeploy API 调用的历史记录,您只需在 亚马逊云科技 管理控制台中打开 Amazon CloudTrail 即可。

安全性

问:是否可以使用 Amazon CodeDeploy 将应用程序部署到在 Amazon Virtual Private Cloud (VPC) 内运行的 Amazon EC2 实例中?

可以,但安装在 Amazon EC2 实例上的 Amazon CodeDeploy 代理程序必须能够访问公用 Amazon CodeDeploy 和 Amazon S3 服务终端节点。有关更多信息,请参阅适用于中国区域的 亚马逊云科技 终端节点

问:是否可以使用 Amazon Identity and Access Management (IAM) 来管理 Amazon CodeDeploy 的访问权限?

可以。Amazon CodeDeploy 支持资源级权限。您可以为每种 Amazon CodeDeploy 资源指定有访问权的用户及其可执行的操作。例如,您可以设置一项 IAM 策略使用户部署一个特定的应用程序,但只列出其他应用程序的修订版。这样,您可以防止用户意外更改错误应用程序。有关如何将 IAM 与 Amazon CodeDeploy 相结合使用的更多信息,请参阅访问权限参考

区域

问:Amazon CodeDeploy 支持哪些区域?
有关 CodeDeploy 在不同区域的具体提供情况,请参阅区域性产品和服务

开始使用亚马逊云科技免费构建

开始使用亚马逊云科技免费构建

关闭
热线

热线

1010 0766
由光环新网运营的
北京区域
1010 0966
由西云数据运营的
宁夏区域