

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

# 与 CodeDeploy 代理合作
<a name="codedeploy-agent"></a>

 Amazon CodeDeploy 代理是一个软件包，在实例上安装和配置后，该实例就可以在 CodeDeploy 部署中使用。

Amazon 支持 CodeDeploy 代理的最新次要版本。目前最新的次要版本是 1.8.x。

**注意**  
 只有部署到 EC2/本地计算平台时，才需要使用 CodeDeploy 代理。使用 Amazon ECS 或 Amazon Lambda 计算平台的部署不需要该代理。

安装该代理时，将在实例上放置一个配置文件。此文件用于指定代理的工作方式。此配置文件指定了与实例交互 Amazon CodeDeploy 时要使用的目录路径和其他设置。可以更改此文件中的某些配置选项。有关使用 CodeDeploy 代理配置文件的信息，请参见[CodeDeploy 代理配置参考](reference-agent-configuration.md)。

有关使用 CodeDeploy 代理的更多信息，例如安装、更新和验证版本的步骤，请参阅[管理 CodeDeploy 代理操作](codedeploy-agent-operations.md)。

**Topics**
+ [CodeDeploy 代理支持的操作系统](#codedeploy-agent-supported-operating-systems)
+ [CodeDeploy 代理的通信协议和端口](#codedeploy-agent-outbound-port)
+ [CodeDeploy 代理的版本历史记录](#codedeploy-agent-version-history)
+ [管理 CodeDeploy 流程](#codedeploy-agent-processes)
+ [应用程序修订和日志文件清理](#codedeploy-agent-revisions-logs-cleanup)
+ [CodeDeploy 代理安装的文件](#codedeploy-agent-install-files)
+ [管理 CodeDeploy 代理操作](codedeploy-agent-operations.md)

## CodeDeploy 代理支持的操作系统
<a name="codedeploy-agent-supported-operating-systems"></a>

### 支持的 Amazon EC2 AMI 操作系统
<a name="codedeploy-agent-supported-operating-systems-ec2"></a>

该 CodeDeploy 代理已在以下 Amazon EC2 AMI 操作系统上进行了测试：
+ Amazon Linux 2023（ARM、x86）
+ Amazon Linux 2（ARM、x86）
+ Microsoft Windows Server 2022、2019
+ Red Hat Enterprise Linux（RHEL）9.x、8.x、7.x
+ Ubuntu Server 22.04 LTS、20.04 LTS、18.04 LTS、16.04 LTS

该 CodeDeploy 代理以开源形式提供，以供您适应您的需求。它可与其他 Amazon EC2 AMI 操作系统配合使用。有关更多信息，请访问中的[CodeDeploy 代理](https://github.com/aws/aws-codedeploy-agent)存储库 GitHub。

### 支持的本地操作系统
<a name="codedeploy-agent-supported-operating-systems-on-premises"></a>

该 CodeDeploy 代理已在以下本地操作系统上进行了测试：
+ Microsoft Windows Server 2022、2019
+ Red Hat Enterprise Linux（RHEL）9.x、8.x、7.x
+ Ubuntu Server 22.04 LTS、20.04 LTS

该 CodeDeploy 代理以开源形式提供，以供您适应您的需求。它可与其他本地实例操作系统配合使用。有关更多信息，请访问中的[CodeDeploy 代理](https://github.com/aws/aws-codedeploy-agent)存储库 GitHub。

## CodeDeploy 代理的通信协议和端口
<a name="codedeploy-agent-outbound-port"></a>

 CodeDeploy 代理使用 HTTPS 通过端口 443 进行出站通信。

当 CodeDeploy 代理在 EC2 实例上运行时，它将使用 [EC2 元数据](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)终端节点来检索与实例相关的信息。了解有关[限制和授予实例元数据服务访问权限](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html#instance-metadata-limiting-access)的更多信息。

## CodeDeploy 代理的版本历史记录
<a name="codedeploy-agent-version-history"></a>

您的实例必须运行支持的 CodeDeploy 代理版本。当前支持的最低版本为 1.8.x。

**注意**  
我们建议使用最新版本的 CodeDeploy 代理。如果您遇到问题，请在联系 Su Amazon pport 之前更新到最新版本。有关升级信息，请参阅[更新代 CodeDeploy 理](codedeploy-agent-operations-update.md)。

下表列出了该 CodeDeploy 代理的所有版本以及每个版本中包含的功能和增强功能。


| 版本 | 发行日期 | Details | 
| --- | --- | --- | 
|  1.8.1  |  2026 年 2 月 3 日  |  **修复**：S3 端点错误修复。 **新增**：Sectigo CA 证书已添加到 Windows CA 列表中。  | 
|  1.8.0  |  2025 年 7 月 31 日  |  **改动**：在 Windows CodeDeploy 代理中将捆绑的 Ruby 升级到 3.2。  | 
|  1.7.1  |  2024 年 11 月 14 日  |  **已更改**：更新了安全补丁的依赖项。  | 
|  1.7.0  |  2024 年 3 月 6 日  |  **新增**： CodeDeploy 代理`:disable_imds_v1:`配置文件的配置设置。使用此设置可禁用 IMDSv2 错误发生 IMDSv1 时的回退功能。默认为 `false`（启用回退）。有关更多信息，请参阅[CodeDeploy 代理配置参考](https://docs.amazonaws.cn/codedeploy/latest/userguide/reference-agent-configuration.html)。 **新增**：支持 Red Hat Enterprise Linux 9（RHEL 9）操作系统。 **新增：**在 Ubuntu Server 上支持 Ruby 版本 3.1 和 3.2。 **已修复**：如果 CodeDeploy 代理配置文件加载失败， CodeDeploy 代理现在会生成用户友好的错误。 **改动**：在 Windows CodeDeploy 代理中将 Ruby 升级到 2.7.8-1。  | 
|  1.6.0  |  2023 年 3 月 30 日  |  **新增**：对 Ruby 3.1、3.2 的支持。 **新增**：对 Amazon Linux 2023 的支持。 **新增**：对 Windows Server 2022 的支持。 **已更改**：Windows Server 实例的 `verbose` 默认设置现在为 `false`。要继续在 Windows 的日志文件中打印调试消息，必须将 `verbose` 设置为 `true`。 **已删除**：对 Windows Server 2016 和 Windows Server 2012 R2 的支持。 **已删除**：对 Amazon Linux 2018.03.x 的支持。  | 
|  1.5.0  |  2023 年 3 月 3 日  |  **新增**：对 Ruby 3 的支持。 **新增**：对 Ubuntu 22.04 的支持。 **已修复**：启动后不久重新启动 CodeDeploy 代理会导致代理挂起的问题。 已@@ **更改**：现在，如果 CodeDeploy 代理服务在运行挂钩脚本时意外重启，代理启动时将无法部署主机。此修复可让您避免在重试部署前等待 70 分钟的超时时间。 **弃用通知**： CodeDeploy 代理 1.5.0 是最后一个支持 Windows Server 2016 和 Windows Server 2012 R2 的版本。 **已删除：**在 Ubuntu 14.04 LTS、Windows Server 2008 R2 和 Windows Server 2008 R2 32 位上支持该 CodeDeploy代理。  | 
|  1.4.1  |  2022 年 12 月 6 日  |  **已修复**：与日志记录相关的安全漏洞。 **增强**：改进了轮询主机命令时的日志记录。  | 
|  1.4.0  |  2022 年 8 月 31 日  |  **新增**：对 Red Hat Enterprise Linux 8 的支持。 **新增**：支持 Windows 版 CodeDeploy 代理上的长文件路径。要启用长文件路径，您需要设置相应的 Windows 注册表项，然后重新启动代理。有关更多信息，请参阅 [长文件路径会导致“没有这样的文件或目录”错误](troubleshooting-deployments.md#troubleshooting-long-file-paths)。 **已修复**：磁盘已满时解压缩操作出现问题。现在， CodeDeploy 代理会检测到解压缩的[退出代码 50](https://linux.die.net/man/1/unzip)，表示磁盘已满，删除部分提取的文件，并引发异常以将故障发布到 CodeDeploy服务器。该错误消息显示为生命周期事件错误消息，主机级部署将停止，而不会卡住或超时。 **已修复**：会导致代理失败的问题。 **已修复**：钩子在边缘争用条件下超时的问题。没有脚本的钩子现在将继续运行，并且不会再导致失败或超时。 **已更改**： CodeDeploy 代理`bin`目录中的`update`脚本已被删除，因为该脚本已不再使用。 **改动**：Windows 服务器 CodeDeploy 代理现在捆绑了 Ruby 2.7。 **已更改**：添加了新的环境变量，供挂钩脚本使用，具体取决于部署包的来源（Amazon S3 或 GitHub）。 有关更多信息，请参阅 [挂钩的环境变量可用性](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-environment-variable-availability)。  **弃用通知**： CodeDeploy代理 1.4.0 是包含 32 位 Windows 服务器安装程序的最后一个版本。 **弃用通知**： CodeDeploy代理 1.4.0 是最后一个支持 Windows Server 2008 R2 的版本。 **已删除**：支持以下亚马逊 EC2 上的 CodeDeploy 代理 AMIs：亚马逊 Linux 2014.09、2016.03、2016.09 和 2017.03。   | 
|  1.3.2  |  2021 年 5 月 6 日  |   CodeDeploy 代理 1.3.2 解决了影响运行该代理的 Windows 主机的 [CVE-2018-1000201](https://nvd.nist.gov/vuln/detail/CVE-2018-1000201)。CVE 引用了 ruby-ffi，这是代理的依赖关系。 CodeDeploy 如果您的代理与 Amazon EC2 Systems Manager（SSM）一起安装并且设置为自动更新，则无需执行任何操作。否则，需要采取措施来手动更新代理。要升级代理，请按照在 [Windows 服务器上更新 CodeDeploy 代理](https://docs.amazonaws.cn/codedeploy/latest/userguide/codedeploy-agent-operations-update-windows.html)中的说明进行操作。   **已修复**：在 Ubuntu 20.04 及更高版本上安装 CodeDeploy 代理时出现问题。 **已修复**：由于未正确处理相对路径，在提取压缩文件时出现间歇性问题。 **新增**：对 Windows 实例的 [Amazon PrivateLink 和 VPC 终端节点](https://docs.amazonaws.cn//vpc/latest/userguide/endpoint-services-overview.html)的支持。 **新增**： AppSpec 文件改进，如下所述。 [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/codedeploy/latest/userguide/codedeploy-agent.html) 已@@ **升级**： CodeDeploy 现在使用适用于 Ruby 3.0 的 Amazon SDK。  | 
|  1.3.1  |  2020 年 12 月 22 日  |  **已修复**：导致本地实例无法启动的 1.3.0 问题。  | 
|  1.3.0  |  2020 年 11 月 10 日  |   此版本已被弃用。  **已修复**：删除了不再使用的过期证书。 已@@ **修复**：从使用的代理卸载脚本中删除了提示消息 Amazon Systems Manager，从而可以更轻松地将主机或队列降级到代理的先前版本。  | 
|  1.2.1  |  2020 年 9 月 23 日  |  **已更改**：将 适用于 Ruby 的 Amazon SDK 依赖项从 v2 升级到 v3。 **新增**：Support fo IMDSv2 r. 包括对 h IMDSv2 ttp 请求失败 IMDSv1 时的静默回退。 **已更改**：更新了安全补丁的 Rake 和 Rubyzip 依赖项。 **已修复**：确保代理启动时，空的 PID 文件将返回状态 `No CodeDeploy Agent Running` 并清理 PID 文件。  | 
|  1.1.2  |  2020 年 8 月 4 日  |  **新增**：对 Ubuntu Server 19.10 和 20.04 的支持。 **注意**：19.10版本已 end-of-life过期，Ubuntu或不再支持该版本。 CodeDeploy **新增**：改进了 Linux 和 Ubuntu 的内存效率，可以更及时地释放预留内存。 **新增**：与 Windows Server“静默清理”的兼容性，这会导致代理在某些情况下无响应。 **新增**：在清理过程中忽略非空目录，以避免部署失败。 **新增**：对洛杉矶（洛杉矶） Amazon 本地区域的 Support 支持。 **新增**：从实例元数据中提取可用区以提供与 L Amazon ocal Zones 的兼容性。 **新增**：用户现在可以在子目录中提供存档，无需将其存储在根目录中。 **新增**：检测到 Rubyzip 存在的、可能导致内存泄漏的问题。更新了 unzip 命令，使其在使用 Rubyzip 之前首先尝试使用系统安装的 unzip 实用程序。 **新增**：`:enable_auth_policy:` 作为代理配置设置。 **已更改**：现在将忽略解压缩警告，因此部署将继续进行。  | 
|  1.1.0  |  2020 年 6 月 30 日  |  **已更改**： CodeDeploy代理的版本控制现在遵循 Ruby 标准版本控制惯例。 **新增**：安装和更新命令的新参数，允许从命令行安装特定代理版本。 **已删除**：移除了适用于 Linux 和 Ubuntu 的 CodeDeploy 代理自动更新程序。要配置 CodeDeploy 代理的自动更新，请参阅[使用安装 CodeDeploy 代理 Amazon Systems Manager](https://docs.amazonaws.cn/codedeploy/latest/userguide/codedeploy-agent-operations-install-ssm.html)。  | 
|  1.0.1.1597  |  2018 年 11 月 15 日  |  **增强**： CodeDeploy 支持 Ubuntu 18.04。 **增强**： CodeDeploy 支持 Ruby 2.5。 **增强**： CodeDeploy 支持 FIPS 端点。有关联邦信息处理标准端点的更多信息，请参阅 [FIPS 140-2 概述](https://www.amazonaws.cn/compliance/fips/)。有关可与之配合使用的终端节点 CodeBuild，请参阅[CodeDeploy区域和终端节点](https://docs.amazonaws.cn/general/latest/gr/rande.html#codedeploy_region)。  | 
|  1.0.1.1518  |  2018 年 6 月 12 日  |  **增强功能**：修复了 CodeDeploy 代理在接受轮询请求时关闭时导致错误的问题。 **增强**：添加了部署跟踪功能，该功能可防止 CodeDeploy 代理在部署进行时关闭。 **增强功能**：改进了删除文件时的性能。  | 
|  1.0.1.1458  |  2018 年 3 月 6 日  |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 **增强功能**：改进了证书验证，以支持更多受信任的机构。 **增强**：修复了在包含 BeforeInstall 生命周期事件的部署期间导致本地 CLI 失败的问题。 **增强**：修复了更新 CodeDeploy 代理时可能导致主动部署失败的问题。  | 
|  1.0.1.1352  |  2017 年 11 月 16 日  |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 **功能**：引入了一项新功能，用于在安装 CodeDeploy 代理的本地计算机或实例上测试和调试 EC2/Londest 部署。  | 
|  1.0.1.1106  |  2017 年 5 月 16 日  |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 **功能**：引入了对处理目标位置上的不作为来自最新成功部署的应用程序修订的一部分的内容的新支持。针对现有内容的部署选项现在包括保留内容、覆盖内容或使部署失败。 **增强**：使 CodeDeploy 代理与 2.9.2 版本的 适用于 Ruby 的 Amazon SDK (aws-sdk-core2.9.2) 兼容。  | 
|  1.0.1.1095  |  2017 年 3 月 29 日  |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 **增强**：在中国（北京）地区引入了对 CodeDeploy 代理的支持。 **增强功能**：生命周期事件挂钩进行调用时，允许 Puppet 在 Windows Server 实例上运行。 **增强功能**：改进对 `untar` 操作的处理。  | 
| 1.0.1.1067 | 2017 年 1 月 6 日 |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 **增强功能**：修改了很多错误消息，以包含导致部署故障的更具体的原因。 **增强功能**：修复了在某些部署期间 CodeDeploy 代理无法识别要部署的正确应用程序修订的问题。 **增强功能**：恢复在 `untar` 操作之前和之后使用 `pushd` 和 `popd`。  | 
| 1.0.1.1045 | 2016 年 11 月 21 日 |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 **增强**：使 CodeDeploy 代理与 2.6.11 版本的 适用于 Ruby 的 Amazon SDK (aws-sdk-core2.6.11) 兼容。  | 
| 1.0.1.1037 | 2016 年 10 月 19 日 |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 亚马逊 Linux、RHEL 和 Ubuntu 服务器实例的 CodeDeploy 代理已更新，其中包含以下更改。对于 Windows Server 实例，最新版本仍为 1.0.1.998。 **增强功能**：该代理现在可以确定哪个 Ruby 版本安装在实例上，以使它可以使用该版本调用 `codedeploy-agent` 脚本。  | 
| 1.0.1.1011.1 | 2016 年 8 月 17 日 |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 **增强功能**：删除了由于外壳支持问题而在 1.0.1.1011 版中引入的更改。此版本代理在功能上与 2016 年 7 月 11 日发布的 1.0.1.998 版相同。 | 
| 1.0.1.1011 | 2016 年 8 月 15 日 |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 亚马逊 Linux、RHEL 和 Ubuntu 服务器实例的 CodeDeploy 代理已更新，其中包含以下更改。对于 Windows Server 实例，最新版本仍为 1.0.1.998。**功能**：增加了对在使用 systemd init 系统的操作系统上使用 bash shell 调用 CodeDeploy 代理的支持。增强：在 CodeDeploy 代理和 CodeDeploy 代理更新程序中启用了对所有版本的 Ruby 2.x 的支持。更新的 CodeDeploy 代理不再仅依赖于 Ruby 2.0。（ CodeDeploy 代理安装程序的 deb 和 rpm 版本仍然需要 Ruby 2.0。） | 
| 1.0.1.998 | 2016 年 7 月 11 日 |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 **增强**：修复了对使用 *roo* t 用户以外的用户配置文件运行 CodeDeploy 代理的支持。名为 `USER` 的变量将被替换为 `CODEDEPLOY_USER`，以避免与环境变量发生冲突。  | 
| 1.0.1.966 | 2016 年 6 月 16 日 |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 **功能**：引入了对使用 *roo* t 用户以外的用户配置文件运行 CodeDeploy 代理的支持。 **增强功能**：修复了对指定您希望 CodeDeploy 代理为部署组存档的应用程序修订数量的支持。 **增强**：使 CodeDeploy 代理与 2.3 版本的 适用于 Ruby 的 Amazon SDK (aws-sdk-core 2.3) 兼容。 **增强功能**：修复了与部署期间的 UTF-8 编码有关的问题。 **增强功能**：提高了标识进程名称时的准确性。  | 
| 1.0.1.950 | 2016 年 3 月 24 日 |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 **功能**：添加了安装代理支持。 **增强**：更新了安装脚本，使其在已安装最新版本时不下载 CodeDeploy 代理。  | 
| 1.0.1.934 | 2016 年 2 月 11 日 |  **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 **功能**：引入了对指定您要 CodeDeploy 代理为部署组存档的应用程序修订数量的支持。  | 
| 1.0.1.880 | 2016 年 1 月 11 日 | **注意**：此版本不再受支持，可能会导致部署失败。 **增强**：使 CodeDeploy 代理与 2.2 版本的 适用于 Ruby 的 Amazon SDK (aws-sdk-core 2.2) 兼容。版本 2.1.2 仍受支持。  | 
| 1.0.1.854 | 2015 年 11 月 17 日 | **注意**：此版本不再受支持。如果您使用此版本，您的部署可能会失败。 **功能**：引入了对 SHA-256 哈希算法的支持。 **功能**：在 `.version` 文件中引入了版本跟踪支持。 **功能**：通过使用环境变量使部署组 ID 可用。 **增强**：增加了对使用 [Amazon 日志监控 CodeDeploy 代理 CloudWatch 日志](https://docs.amazonaws.cn/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)的支持。  | 

有关相关信息，请参阅下列内容：
+ [确定 CodeDeploy 代理的版本](codedeploy-agent-operations-version.md)
+ [安装代 CodeDeploy 理](codedeploy-agent-operations-install.md)

有关 CodeDeploy 代理版本的历史记录，请参阅[上的 Release 存储库 GitHub](https://github.com/aws/aws-codedeploy-agent/releases)。

## 管理 CodeDeploy 流程
<a name="codedeploy-agent-processes"></a>

默认情况下， CodeDeploy 代理的所有 Linux 发行版（rpm 和 deb）都使用 [systemd](https://systemd.io/) 来管理代理进程。

但是，rpm 和 deb 发行版都附带了位于 `/etc/init.d/codedeploy-agent` 的启动脚本。根据您使用的发行版，在使用 `sudo service codedeploy-agent restart` 这样的命令时，可能会运行 `/etc/init.d` 中的脚本来启动代理进程，而不是允许 `systemd` 管理该进程。在 `/etc/init.d` 上运行脚本是不可取的。

为防止出现此问题，对于支持 `systemd` 的系统，我们建议使用 `systemctl` 实用程序进行任何代理操作，而不是使用 `service` 命令。

例如，要重新启动 CodeDeploy 代理，请使用`sudo systemctl restart codedeploy-agent`该`service`实用程序中的等效命令。

## 应用程序修订和日志文件清理
<a name="codedeploy-agent-revisions-logs-cleanup"></a>

 CodeDeploy 代理会存档实例上的修订和日志文件。 CodeDeploy 代理会清理这些工件以节省磁盘空间。

**应用程序修订部署日志**：您可以使用代理配置文件中的:max\$1revisions**: 选项**，通过输入任何正整数来指定要存档的应用程序修订数量。 CodeDeploy 还会存档这些修订的日志文件。所有其他文件将被删除，但上次成功部署的日志文件除外。该日志文件将始终保留，即使失败的部署数量超过保留的修订数量也是如此。如果未指定任何值，则除了当前部署的修订版外，还 CodeDeploy 保留五个最新的修订版。

**CodeDeploy 日志**：对于 Amazon Linux、Ubuntu Server 和 RHEL 实例， CodeDeploy 代理会轮换文件夹下的日志文件。`/var/log/aws/codedeploy-agent`日志文件将在每天 00:00:00（实例时间）轮换。日志文件会在七天后删除。已轮换日志文件的命名模式是 `codedeploy-agent.YYYYMMDD.log`。

## CodeDeploy 代理安装的文件
<a name="codedeploy-agent-install-files"></a>

 CodeDeploy 代理将修订、部署历史记录和部署脚本存储在实例的根目录中。该目录的默认名称和位置是：

对于 Amazon Linux、Ubuntu Server 和 RHEL 实例为 `'/opt/codedeploy-agent/deployment-root'`。

对于 Windows Server 实例为 `'C:\ProgramData\Amazon\CodeDeploy'`。

您可以使用 CodeDeploy 代理配置文件中的 **root\$1dir** 设置来配置目录的名称和位置。有关更多信息，请参阅 [CodeDeploy 代理配置参考](reference-agent-configuration.md)。

下面是根目录下文件和目录结构的示例。该结构假定有 N 个部署组，每个部署组包含 N 个部署。

```
|--deployment-root/
|-- deployment group 1 ID 
|    |-- deployment 1 ID 
|    |    |-- Contents and logs of the deployment's revision
|    |-- deployment 2 ID
|    |    |-- Contents and logs of the deployment's revision
|    |-- deployment N ID
|    |    |-- Contents and logs of the deployment's revision
|-- deployment group 2 ID
|    |-- deployment 1 ID
|    |    |-- bundle.tar
|    |    |-- deployment-archive
|    |    |    | -- contents of the deployment's revision
|    |    |-- logs
|    |    |    | -- scripts.log     
|    |-- deployment 2 ID
|    |    |-- bundle.tar
|    |    |-- deployment-archive
|    |    |    | -- contents of the deployment's revision
|    |    |-- logs
|    |    |    | -- scripts.log     
|    |-- deployment N ID
|    |    |-- bundle.tar
|    |    |-- deployment-archive
|    |    |    | -- contents of the deployment's revision
|    |    |-- logs
|    |    |    | -- scripts.log     
|-- deployment group N ID
|    |-- deployment 1 ID
|    |    |-- Contents and logs of the deployment's revision
|    |-- deployment 2 ID
|    |    |-- Contents and logs of the deployment's revision
|    |-- deployment N ID
|    |    |-- Contents and logs of the deployment's revision
|-- deployment-instructions
|    |-- [deployment group 1 ID]_cleanup
|    |-- [deployment group 2 ID]_cleanup
|    |-- [deployment group N ID]_cleanup
|    |-- [deployment group 1 ID]_install.json
|    |-- [deployment group 2 ID]_install.json
|    |-- [deployment group N ID]_install.json
|    |-- [deployment group 1 ID]_last_successful_install
|    |-- [deployment group 2 ID]_last_successful_install
|    |-- [deployment group N ID]_last_successful_install
|    |-- [deployment group 1 ID]_most_recent_install
|    |-- [deployment group 2 ID]_most_recent_install
|    |-- [deployment group N ID]_most_recent_install
|-- deployment-logs
|    |-- codedeploy-agent-deployments.log
```


+  **Deployment Group ID** 文件夹代表您的每个部署组。部署组目录的名称是其 ID（例如，`acde1916-9099-7caf-fd21-012345abcdef`）。每个部署组目录都包含该部署组中每次尝试的部署的一个子目录。

   您可以使用 [batch-get-deployments](https://docs.amazonaws.cn/cli/latest/reference/deploy/batch-get-deployments.html) 命令查找部署组 ID。
+  **Deployment ID** 文件夹代表部署组中的每个部署。每个部署目录的名称都是其 ID。每个文件夹都包含：
  +  **bundle.tar**，一个压缩文件，其中包含部署修订的内容。如果要查看修订，请使用 zip 解压实用程序。
  +  **deployment-archive**，一个目录，其中包含部署修订的内容。
  +  **logs**，一个包含 `scripts.log` 文件的目录。此文件列出了部署 AppSpec 文件中指定的所有脚本的输出。

   如果您想查找部署文件夹，但不知道其部署 ID 或部署组 ID，则可以使用[Amazon CodeDeploy 控制台](https://console.amazonaws.cn/codedeploy)或 Amazon CLI 来查找它们。有关更多信息，请参阅 [查看 CodeDeploy 部署详情](deployments-view-details.md)。

   部署组中可以存档的默认最大部署数为五个。达到该数量后，将来的部署将被存档，最旧的存档将被删除。您可以使用 CodeDeploy 代理配置文件中的 **max\$1re** visions 设置来更改默认值。有关更多信息，请参阅 [CodeDeploy 代理配置参考](reference-agent-configuration.md)。
**注意**  
 如果您想恢复已存档部署使用的硬盘空间，请将 **max\$1revisions** 设置更新为较低的数量，例如 1 或 2。下一次部署将删除已存档的部署，以便数量等于您指定的数量。
+  **deployment-instructions** 包含每个部署组的四个文本文件：
  + **[Deployment Group ID]-cleanup**，一个文本文件，其中包含部署期间运行的每个命令的撤消版本。示例文件名为 `acde1916-9099-7caf-fd21-012345abcdef-cleanup`。
  + **[Deployment Group ID]-install.json**，在最近的部署过程中创建的 JSON 文件。它包含部署期间运行的命令。示例文件名为 `acde1916-9099-7caf-fd21-012345abcdef-install.json`。
  + **[Deployment Group ID]\$1last\$1successfull\$1install**，一个文本文件，其中列出了上次成功部署的存档目录。此文件是在 CodeDeploy 代理将部署应用程序中的所有文件复制到实例时创建的。 CodeDeploy 代理在下次部署时使用它来确定要运行的`BeforeInstall`脚本`ApplicationStop`和脚本。示例文件名为 `acde1916-9099-7caf-fd21-012345abcdef_last_successfull_install`。
  + **[Deployment Group ID]\$1most\$1recent\$1install**，一个文本文件，其中列出了最近一次部署的存档目录的名称。该文件在部署中的文件成功下载时创建。[deployment group ID]\$1last\$1successfull\$1install 文件在该文件之后创建，即下载的文件被复制到其最终目的地时。示例文件名为 `acde1916-9099-7caf-fd21-012345abcdef_most_recent_install`。
+  **deployment-logs** 包含以下日志文件：
  +  **codedeploy-agent.yyyymmdd.log** 文件按天创建，只要当天发生部署活动，就会创建该文件。每个日志文件都包含有关当天部署的信息。这些日志文件可能对调试权限问题等很有用。日志文件最初名为 `codedeploy-agent.log`。第二天，其部署日期将被插入到文件名中。例如，如果今天是 2018 年 1 月 3 日，您可以在 `codedeploy-agent.log` 中看到有关今天的所有部署的信息。明天，也就是 2018 年 1 月 4 日，日志文件将重命名为 `codedeploy-agent.20180103.log`。
  +  **codedeploy-agent-deployments.log** 为每个部署编译`scripts.log`文件内容。`scripts.log` 文件位于每个 `logs` 文件夹下的 `Deployment ID` 子文件夹中。此文件中的条目前面带有部署 ID。例如，“`[d-ABCDEF123]LifecycleEvent - BeforeInstall`”可能是在 ID 为 `d-ABCDEF123` 的部署期间写入的。当`codedeploy-agent-deployments.log`达到其最大大小时， CodeDeploy 代理会继续向其写入内容，同时删除旧内容。