AWS CodeDeploy
User Guide (API Version 2014-10-06)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用 AWS CodeDeploy 重新部署和回滚部署

AWS CodeDeploy 回滚部署的方式是将以前的应用程序部署版本重新部署为新的部署。这些回滚部署在技术上属于新部署,具有新的部署 ID,不同于之前部署的存储版本。

可以自动或手动回滚部署。

自动回滚

您可以对部署组或部署进行配置,使之在部署失败或达到您指定的监控阈值时自动回滚。在这种情况下,将会部署上一个已知良好的应用程序版本。您可以在创建应用程序或是创建或更新部署组时配置自动回滚。

创建新部署时,您还可以选择覆盖已为部署组指定的自动回滚配置。

注意

可使用 Amazon Simple Notification Service 在部署自动回滚时接收通知。有关信息,请参阅 使用 Amazon SNS 事件通知监控部署

有关配置自动回滚的更多信息,请参阅为部署组配置高级选项

手动回滚

如果您尚未设置自动回滚,可以通过以下方式手动回滚部署:创建一个使用以前部署的任何应用程序版本的新部署,然后根据步骤重新部署一个版本。如果应用程序进入了未知状态,您可能会这么做。您可以将应用程序重新部署为已知工作状态,而不是花大量的时间排查故障。有关更多信息,请参阅 创建部署

注意

如果您从部署组中删除某个实例,AWS CodeDeploy 不会卸载可能已安装在该实例上的任何内容。

回滚和重新部署工作流程

当启动自动回滚时,或在手动启动重新部署或手动回滚时,AWS CodeDeploy 首先尝试从每个参与实例中删除上次成功安装的所有文件。为此,AWS CodeDeploy 将检查下面的清除文件:

/opt/codedeploy-agent/deployment-root/deployment-instructions/deployment-group-ID-cleanup 文件(适用于 Amazon Linux、Ubuntu Server 和 RHEL 实例)

C:\ProgramData\Amazon\CodeDeploy\deployment-instructions\deployment-group-ID-cleanup 文件(适用于 Windows Server 实例)

如果清除文件存在,则 AWS CodeDeploy 将在开始新部署之前,使用它从实例中删除列出的所有文件。

例如,前面的两个文本文件和两个脚本文件已部署到运行 Windows Server 的 Amazon EC2 实例,并且这两个脚本在部署生命周期事件期间又创建了两个文本文件:

Copy
c:\temp\a.txt (previously deployed by AWS CodeDeploy) c:\temp\b.txt (previously deployed by AWS CodeDeploy) c:\temp\c.bat (previously deployed by AWS CodeDeploy) c:\temp\d.bat (previously deployed by AWS CodeDeploy) c:\temp\e.txt (previously created by c.bat) c:\temp\f.txt (previously created by d.bat)

清除文件将仅列出前面的两个文本文件和两个脚本文件:

Copy
c:\temp\a.txt c:\temp\b.txt c:\temp\c.bat c:\temp\d.bat

在新部署之前,AWS CodeDeploy 将仅删除前面的两个文本文件和两个脚本文件,并保持最后两个文本文件不变:

Copy
c:\temp\a.txt will be removed c:\temp\b.txt will be removed c:\temp\c.bat will be removed c:\temp\d.bat will be removed c:\temp\e.txt will remain c:\temp\f.txt will remain

作为此过程的一部分,AWS CodeDeploy 将不会在后续重新部署(无论是手动还是自动回滚)期间尝试还原或以其他方式协调在以前的部署中由任何脚本所执行的任何操作。例如,如果 c.batd.bat 文件包含不重新创建 e.txtf.txt 文件(如果它们已存在)的逻辑,则每当 AWS CodeDeploy 在后续部署中运行 c.batd.bat 时,旧版本的 e.txtf.txt 都将保持不变。您可以向 c.batd.bat 中添加逻辑,始终先检查并删除旧版本的 e.txtf.txt,然后再创建新文件。