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