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

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

排查实例问题

必须正确设置标签

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

注意

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

实例上必须已安装且正在运行 Amazon CodeDeploy 代理

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

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

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

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

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

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

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

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

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

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

对于 Amazon Linux、Ubuntu Server 或 RHEL 实例,按此顺序运行这些命令(一次运行一个):

systemctl stop codedeploy-agent
systemctl start codedeploy-agent

对于 Windows Server 实例

powershell.exe -Command Restart-Service -Name codedeployagent

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

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

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