排查实例问题 - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

排查实例问题

必须正确设置标签

使用列出部署实例命令确认已正确标记用于部署的实例。如果输出中缺少 EC2 实例,请使用 EC2 控制台确认已在实例上设置标签。有关更多信息,请参阅 。使用控制台中的标签中的适用于 Linux 实例的 Amazon EC2 用户指南.

注意

如果您标记一个实例并立即使用 CodeDeploy 将一个应用程序部署到该实例,则该实例可能不会包括在部署中。这是因为可能要在几分钟后才能读取标签。建议您在标记实例和尝试对实例进行部署之间等待至少 5 分钟。

Amazon CodeDeploy实例上必须安装并运行代理

要验证 CodeDeploy 代理是否已安装并在实例上运行,请参阅验证代 CodeDeploy 运行.

要安装、卸载或重新安装 CodeDeploy 代理,请参阅安 CodeDeploy.

如果实例在部署期间终止,在最多 1 小时内部署不会失败。

CodeDeploy 为每个部署生命周期事件提供 1 小时的时段来完成。这为长时间运行的脚本提供了足够的时间。

如果生命周期事件正在进行时脚本未运行完成(例如,如果实例终止或 CodeDeploy 代理关闭),部署状态可能需 1 小时后才显示为失败。即使脚本中指定的超时时段不到 1 小时,也会发生此情况。这是因为当实例终止后,CodeDeploy 代理将关闭,并且无法处理更多脚本。

不过,如果实例在生命周期事件之间或在第一个生命周期事件步骤开始之前终止,则超时将在 5 分钟后发生。

分析日志文件以调查针对实例的部署失败

如果部署中的实例具有 Succeeded 以外的任何状态,您可以查看部署日志文件数据来帮助确定问题。有关访问部署日志数据的信息,请参阅查看代表部署EC2/本地部署的日志数据

如果已意外删除,请创建一个新的 CodeDeploy 日志文件

如果您意外删除了实例的部署日志文件,CodeDeploy 将不会创建替代日志文件。要创建新的日志文件,请登录到实例,然后运行以下命令:

对于亚马逊 Linux、Ubuntu 服务器或 RHEL 实例,按此顺序运行以下命令(一次运行一个):

sudo service codedeploy-agent stop
sudo service codedeploy-agent start

对于 Windows Server 实例

powershell.exe -Command Restart-Service -Name codedeployagent

排查“InvalidSignatureException – Signature expired: [time] is now earlier than [time]”部署错误

CodeDeploy 需要准确的时间引用以执行其操作。如果实例上的日期和时间设置不正确,它们可能与 CodeDeploy 拒绝的部署请求的签名日期不匹配。

要避免与不正确的时间设置相关的部署失败,请参阅以下主题: