本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
排查实例问题
主题
必须正确设置标签
使用 list-deployment-instances 命令确认已正确标记用于部署的实例。如果输出中缺少 EC2 实例,请使用 EC2 控制台确认已在该实例上设置标签。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的在控制台中使用控制台中的使用标签。
如果您标记实例并立即使用该实例 CodeDeploy 向其部署应用程序,则该实例可能不包含在部署中。这是因为读取标签 CodeDeploy 可能需要几分钟时间。建议您在标记实例和尝试对实例进行部署之间等待至少 5 分钟。
Amazon CodeDeploy代理必须安装并在实例上运行
要验证 CodeDeploy 代理是否已安装并在实例上运行,请参阅确认 CodeDeploy 代理是否正在运行。
要安装、卸载或重新安装代 CodeDeploy 理,请参阅安装代 CodeDeploy 理。
如果实例在部署期间终止,在最多 1 小时内部署不会失败。
CodeDeploy 为每个部署生命周期事件提供一小时的运行时间窗口,直至完成。这为长时间运行的脚本提供了足够的时间。
如果在生命周期事件进行中(例如,如果实例终止或 CodeDeploy 代理关闭)脚本未运行到完成,则部署状态可能需要一个小时才能显示为 “失败”。即使脚本中指定的超时时段不到 1 小时,也会发生此情况。这是因为当实例终止时, CodeDeploy 代理会关闭并且无法处理更多脚本。
不过,如果实例在生命周期事件之间或在第一个生命周期事件步骤开始之前终止,则超时将在 5 分钟后发生。
分析日志文件以调查针对实例的部署失败
如果部署中的实例具有 Succeeded
以外的任何状态,您可以查看部署日志文件数据来帮助确定问题。有关访问部署日志数据的信息,请参阅查看 CodeDeploy EC2/本地部署部署的日志数据。
如果不小心删除了 CodeDeploy 日志文件,则创建一个新的日志文件
如果您不小心删除了实例上的部署日志文件,则 CodeDeploy 不会创建替换日志文件。要创建新的日志文件,请登录到实例,然后运行以下命令:
对于 Amazon Linux、Ubuntu Server 或 RHEL 实例,按以下顺序逐个运行这些命令:
sudo service codedeploy-agent stop
sudo service codedeploy-agent start
对于 Windows 服务器实例:
powershell.exe -Command Restart-Service -Name codedeployagent
排除 “InvalidSignatureException — 签名已过期:[时间] 现在早于 [时间]” 部署错误
CodeDeploy 需要准确的时间引用以执行其操作。如果实例上的日期和时间设置不正确,它们可能与部署请求的签名日期不匹配,部署请求会被 CodeDeploy 拒绝。
要避免与不正确的时间设置相关的部署失败,请参阅以下主题: