本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
与 CodeDeploy 代理合作
Amazon CodeDeploy 代理是一个软件包,在实例上安装和配置后,该实例就可以在 CodeDeploy 部署中使用。
Amazon 支持 CodeDeploy 代理的最新次要版本。目前最新的次要版本是 1.7.x。
注意
只有在部署到 EC2 /Onlide 计算平台时,才需要使用 CodeDeploy 代理。使用 Amazon ECS 或 Amazon Lambda 计算平台的部署不需要代理。
安装该代理时,将在实例上放置一个配置文件。此文件用于指定代理的工作方式。此配置文件指定了与实例交互 Amazon CodeDeploy 时要使用的目录路径和其他设置。可以更改此文件中的某些配置选项。有关使用 CodeDeploy 代理配置文件的信息,请参见CodeDeploy 代理配置参考。
有关使用 CodeDeploy 代理的更多信息,例如安装、更新和验证版本的步骤,请参阅管理 CodeDeploy 代理操作。
主题
CodeDeploy 代理支持的操作系统
支持的亚马逊EC2AMI操作系统
该 CodeDeploy 代理已在以下 Amazon EC2 AMI 操作系统上进行了测试:
-
亚马逊 Linux 2023 (ARM, x86)
-
亚马逊 Linux 2 (ARM, x86)
-
Microsoft Windows Server 2022、2019
-
红帽企业 Linux (RHEL) 9.x、8.x、7.x
-
Ubuntu Server 22.04 LTS、20.04、18.04、16.04 LTS LTS LTS
该 CodeDeploy 代理以开源形式提供,供您适应您的需求。它可以与其他 Amazon EC2 AMI 操作系统一起使用。有关更多信息,请访问中的CodeDeploy 代理
支持的本地操作系统
该 CodeDeploy 代理已在以下本地操作系统上进行了测试:
-
Microsoft Windows Server 2022、2019
-
红帽企业 Linux (RHEL) 9.x、8.x、7.x
-
Ubuntu Server 22.0 LTS 4、20.04 LTS
该 CodeDeploy 代理以开源形式提供,供您适应您的需求。它可与其他本地实例操作系统配合使用。有关更多信息,请访问中的CodeDeploy 代理
CodeDeploy 代理的通信协议和端口
CodeDeploy 代理通过端口 443 进行HTTPS出站通信。
当 CodeDeploy 代理在EC2实例上运行时,它将使用EC2元数据终端节点来检索与实例相关的信息。了解有关限制和授予实例元数据服务访问权限的更多信息。
CodeDeploy代理的版本历史记录
您的实例必须运行支持的 CodeDeploy 代理版本。当前支持的最低版本为 1.7.x。
注意
我们建议使用最新版本的 CodeDeploy 代理。如果您遇到问题,请在联系 Su Amazon pport 之前更新到最新版本。有关升级信息,请参阅更新代 CodeDeploy 理。
下表列出了该 CodeDeploy 代理的所有版本以及每个版本中包含的功能和增强功能。
版本 | 发行日期 | 详细信息 |
---|---|---|
1.7.1 |
2024 年 11 月 14 日 |
已更改:更新了安全补丁的依赖关系。 |
1.7.0 |
2024 年 3 月 6 日 |
新增: CodeDeploy 代理 新增:支持红帽企业 Linux 9 (RHEL9) 操作系统。 新增:在 Ubuntu 服务器上支持 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 实例的 已删除:对 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 注册表项,然后重新启动代理。有关更多信息,请参阅 长文件路径会导致“没有这样的文件或目录”错误。 已修复:磁盘已满时解压缩操作出现问题。现在, CodeDeploy 代理会检测到解压缩的退出代码 50 已修复:会导致代理失败的问题。 已修复:钩子在边缘争用条件下超时的问题。没有脚本的钩子现在将继续运行,并且不会再导致失败或超时。 已更改: CodeDeploy 代理 改动:Windows 服务器 CodeDeploy 代理现在捆绑了 Ruby 2.7。 已更改:添加了新的环境变量,供挂钩脚本使用,具体取决于部署包的来源(Amazon S3 或 GitHub)。 有关更多信息,请参阅 挂钩的环境变量可用性。 重要弃用通知: CodeDeploy代理 1.4.0 是包含 32 位 Windows 服务器安装程序的最后一个版本。 弃用通知: CodeDeploy代理 1.4.0 是最后一个支持 Windows Server 2008 R2 的版本。 已删除:在以下亚马逊上支持该 CodeDeploy 代理 EC2AMIs:亚马逊 Linux 2014.09、2016.03、2016.09 和 2017.03。 |
1.3.2 |
2021 年 5 月 6 日 |
重要CodeDeploy 代理 1.3.2 地址 CVE-2018-1000201,这会影响运行 已修复:在 Ubuntu 20.04 及更高版本上安装 CodeDeploy 代理时出现问题。 已修复:由于未正确处理相对路径,在提取压缩文件时出现间歇性问题。 新增:对 Windows 实例的 S Amazon PrivateLink u VPC pport 和终端节点。 新增: AppSpec 文件改进,如下所述。
已升级: CodeDeploy 现在使用 Amazon SDK适用于 Ruby 3.0 的。 |
1.3.1 |
2020 年 12 月 22 日 |
已修复:导致本地实例无法启动的 1.3.0 问题。 |
1.3.0 |
2020 年 11 月 10 日 |
重要此版本已被弃用。 已修复:删除了不再使用的过期证书。 已@@ 修复:从使用的代理卸载脚本中删除了提示消息 Amazon Systems Manager,从而可以更轻松地将主机或队列降级到代理的先前版本。 |
1.2.1 |
2020 年 9 月 23 日 |
已更改:将 Amazon SDK for Ruby 依赖项从 v2 升级到 v3。 新增:Support fo IMDSv2 r. 包括对 h IMDSv2 ttp 请求失败IMDSv1时的静默回退。 已更改:更新了安全补丁的 Rake 和 Rubyzip 依赖项。 已修复:确保空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 实用程序。 新增: 已更改:现在将忽略解压缩警告,因此部署将继续进行。 |
1.1.0 |
2020 年 6 月 30 日 |
已更改: CodeDeploy代理的版本控制现在遵循 Ruby 标准版本控制惯例。 新增:安装和更新命令的新参数,允许从命令行安装特定代理版本。 已删除:移除了适用于 Linux 和 Ubuntu 的 CodeDeploy 代理自动更新程序。要配置 CodeDeploy 代理的自动更新,请参阅使用安装 CodeDeploy 代理 Amazon Systems Manager。 |
1.0.1.1597 |
2018 年 11 月 15 日 |
增强: CodeDeploy 支持 Ubuntu 18.04。 增强: CodeDeploy 支持 Ruby 2.5。 增强: CodeDeploy 支持FIPS端点。有关FIPS终端节点的更多信息,请参阅 FIPS140-2 |
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 版本的 Amazon SDK for Ruby (aws-sdk-core2.9.2) 兼容。 |
1.0.1.1095 |
2017 年 3 月 29 日 |
注意:此版本不再受支持。如果您使用此版本,您的部署可能会失败。 增强:在中国(北京)地区引入了对 CodeDeploy 代理的支持。 增强功能:生命周期事件挂钩进行调用时,允许 Puppet 在 Windows Server 实例上运行。 增强功能:改进对 |
1.0.1.1067 | 2017 年 1 月 6 日 |
注意:此版本不再受支持。如果您使用此版本,您的部署可能会失败。 增强功能:修改了很多错误消息,以包含导致部署故障的更具体的原因。 增强功能:修复了在某些部署期间 CodeDeploy 代理无法识别要部署的正确应用程序修订的问题。 增强功能:恢复在 |
1.0.1.1045 | 2016 年 11 月 21 日 |
注意:此版本不再受支持。如果您使用此版本,您的部署可能会失败。 增强:使 CodeDeploy 代理与 2.6.11 版本的 Amazon SDK for Ruby (aws-sdk-core2.6.11) 兼容。 |
1.0.1.1037 | 2016 年 10 月 19 日 |
注意:此版本不再受支持。如果您使用此版本,您的部署可能会失败。 亚马逊 Linux 和 Ubuntu 服务器实例的 CodeDeploy 代理已更新,其中包含以下更改。RHEL对于 Windows Server 实例,最新版本仍为 1.0.1.998。 增强功能:该代理现在可以确定哪个 Ruby 版本安装在实例上,以使它可以使用该版本调用 |
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 和 Ubuntu 服务器实例的 CodeDeploy 代理已更新,其中包含以下更改。RHEL对于 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 代理的支持。名为 |
1.0.1.966 | 2016 年 6 月 16 日 |
注意:此版本不再受支持。如果您使用此版本,您的部署可能会失败。 功能:引入了对使用 roo t 用户以外的用户配置文件运行 CodeDeploy 代理的支持。 增强功能:修复了对指定您希望 CodeDeploy代理为部署组存档的应用程序修订数量的支持。 增强:使 CodeDeploy 代理与 2.3 版本的 Amazon SDK for Ruby (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 版本的 Amazon SDK for Ruby (aws-sdk-core 2.2) 兼容。版本 2.1.2 仍受支持。 |
1.0.1.854 | 2015 年 11 月 17 日 | 注意:此版本不再受支持。如果您使用此版本,您的部署可能会失败。 功能:引入了对 SHA -256 哈希算法的支持。 功能:在 功能:通过使用环境变量使部署组 ID 可用。 增强:增加了对使用 Amazon 日志监控 CodeDeploy 代理 CloudWatch 日志的支持。 |
有关相关信息,请参阅下列内容:
有关 CodeDeploy 代理版本的历史记录,请参阅上的 Release 存储库 GitHub
管理 CodeDeploy 流程
默认情况下, CodeDeploy 代理的所有 Linux 发行版(rpm 和 deb)都使用 systemd
但是,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
实用程序中的等效命令。
应用程序修订和日志文件清理
CodeDeploy 代理会存档实例上的修订和日志文件。 CodeDeploy 代理会清理这些工件以节省磁盘空间。
应用程序修订部署日志:您可以使用代理配置文件中的:max_revisions: 选项,通过输入任何正整数来指定要存档的应用程序修订数量。 CodeDeploy 还会存档这些修订的日志文件。所有其他文件将被删除,但上次成功部署的日志文件除外。该日志文件将始终保留,即使失败的部署数量超过保留的修订数量也是如此。如果未指定任何值,则除了当前部署的修订版外,还 CodeDeploy 保留五个最新的修订版。
CodeDeploy 日志:对于 Amazon Linux、Ubuntu 服务器和RHEL实例, CodeDeploy 代理会轮换文件夹下的日志文件。/var/log/aws/codedeploy-agent
日志文件将在每天 00:00:00(实例时间)轮换。日志文件会在七天后删除。已轮换日志文件的命名模式是 codedeploy-agent.
。YYYYMMDD
.log
CodeDeploy 代理安装的文件
CodeDeploy 代理将修订、部署历史记录和部署脚本存储在实例的根目录中。该目录的默认名称和位置是:
'/opt/codedeploy-agent/deployment-root'
适用于亚马逊 Linux、Ubuntu 服务器和实例。RHEL
对于 Windows Server 实例为 'C:\ProgramData\Amazon\CodeDeploy'
。
您可以使用 CodeDeploy 代理配置文件中的 root_dir 设置来配置目录的名称和位置。有关更多信息,请参阅 CodeDeploy 代理配置参考。
下面是根目录下文件和目录结构的示例。该结构假定有 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命令来查找部署组 ID。
-
Deployment ID 文件夹代表部署组中的每个部署。每个部署目录的名称都是其 ID。每个文件夹都包含:
-
bundle.tar,一个压缩文件,其中包含部署修订的内容。如果要查看修订,请使用 zip 解压实用程序。
-
deployment-archive,一个目录,其中包含部署修订的内容。
-
logs,一个包含
scripts.log
文件的目录。此文件列出了部署 AppSpec 文件中指定的所有脚本的输出。
如果您想查找部署文件夹,但不知道其部署 ID 或部署组 ID,则可以使用Amazon CodeDeploy 控制台
或 Amazon CLI 来查找它们。有关更多信息,请参阅 查看 CodeDeploy 部署详情 。 部署组中可以存档的默认最大部署数为五个。达到该数量后,将来的部署将被存档,最旧的存档将被删除。您可以使用 CodeDeploy 代理配置文件中的 max_re visions 设置来更改默认值。有关更多信息,请参阅 CodeDeploy 代理配置参考。
注意
如果您想恢复已存档部署使用的硬盘空间,请将 max_revisions 设置更新为较低的数量,例如 1 或 2。下一次部署将删除已存档的部署,以便数量等于您指定的数量。
-
-
deployment-instructions 包含每个部署组的四个文本文件:
-
[Deployment Group ID]-cleanup,一个文本文件,其中包含部署期间运行的每个命令的撤消版本。示例文件名为
acde1916-9099-7caf-fd21-012345abcdef-cleanup
。 -
[部署组 ID]-install.json,在最近一次部署期间创建的JSON文件。它包含部署期间运行的命令。示例文件名为
acde1916-9099-7caf-fd21-012345abcdef-install.json
。 -
[Deployment Group ID]_last_successfull_install,一个文本文件,其中列出了上次成功部署的存档目录。此文件是在 CodeDeploy 代理将部署应用程序中的所有文件复制到实例时创建的。 CodeDeploy 代理在下次部署时使用它来确定要运行的
BeforeInstall
脚本ApplicationStop
和脚本。示例文件名为acde1916-9099-7caf-fd21-012345abcdef_last_successfull_install
。 -
[Deployment Group ID]_most_recent_install,一个文本文件,其中列出了最近一次部署的存档目录的名称。该文件在部署中的文件成功下载时创建。[deployment group ID]_last_successfull_install 文件在该文件之后创建,即下载的文件被复制到其最终目的地时。示例文件名为
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 代理会继续向其写入内容,同时删除旧内容。
-