AWS CodeDeploy
User Guide (API 版本 2014-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

解决实例问题

必须正确设置标签

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

注意

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

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

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

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

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

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

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

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

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

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

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

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

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

sudo service codedeploy-agent stop
sudo service codedeploy-agent

对于 Windows Server 实例

powershell.exe -Command Restart-Service -Name codedeployagent

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

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

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