

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

# OpsWorks 堆栈生命周期事件
<a name="workingcookbook-events"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

每个层有一组五个生命周期事件，每个事件有一组特定于层的关联配方。当某个层的实例上发生事件时， OpsWorks Stacks 将自动运行一组相应的配方。要对这些事件提供自定义响应，请实现自定义配方[并将其分配给每个图层的相应事件](workingcookbook-assigningcustom.md)。 OpsWorks Stacks 在活动内置食谱之后运行这些食谱。

**Setup**  
此事件在已启动的实例完成引导后发生。也可以使用[安装堆栈命令](workingstacks-commands.md)手动触发Setup事件。 OpsWorks Stacks 运行的配方可以根据实例的层设置实例。例如，如果实例是 Rails App Server 层的成员，则 Setup 配方将安装 Apache、Ruby Enterprise Edition、Passenger 和 Ruby on Rails。  
**Setup** 事件将导致实例中断服务。由于实例在 **Setup** 生命周期事件运行时未处于 **Online** 状态，因此将从负载均衡器中删除运行 **Setup** 事件的实例。

**Configure**  
如果出现以下情况之一，此事件将在堆栈的所有实例上发生：  
+ 实例进入或退出联机状态。
+ 您[将弹性 IP 地址与实例关联](resources-attach.md#resources-attach-eip)或[取消弹性 IP 地址与实例的关联](resources-detach.md#resources-detach-eip)。
+ 您将[ Elastic Load Balancing 负载均衡器](layers-elb.md)附加到层，或将该负载均衡器与层分离。
例如，假设您的堆栈有实例 A、B 和 C，您启动了一个新实例 D。D 运行完设置配方后， OpsWorks 堆栈会在 A、B、C 和 D 上触发Configure事件。如果您随后停止 A， OpsWorks 堆栈会在 B、C 和 D 上触发Configure事件。 OpsWorks 堆栈通过运行每个层的配方来响应Configure事件，这些Configure配方会更新实例的配置以反映当前的在线实例集。因此，Configure 事件是重新生成配置文件的好时机。例如， HAProxy Configure配方会重新配置负载均衡器，以适应在线应用程序服务器实例集中的任何更改。  
您还可使用[“配置”堆栈命令](workingstacks-commands.md)手动触发配置事件。

**Deploy**  
此事件在您运行 **Deploy** 命令时发生，通常用于将应用程序部署到一组应用程序服务器实例。这些实例将运行这样的配方：将应用程序和任何相关文件从其存储库部署到层的实例。例如，对于 Rails 应用程序服务器实例，Deploy 配方将签出指定 Ruby 应用程序并要求 [Phusion Passenger](https://www.phusionpassenger.com/) 重新加载它。您还可在其他实例上运行 Deploy，使这些实例能够更新其配置以适应新部署的应用程序 (举例)。  
“设置”包含“部署”；它在设置完成后运行“部署”配方。

**Undeploy**  
该事件在您删除应用程序或运行 Undeploy 命令以从一组应用程序服务器实例中删除应用程序时发生。指定的实例将运行配方来删除所有应用程序版本并执行所有必需的清理。

**Shutdown**  
此事件发生在您指示 OpsWorks Stacks 关闭实例之后，但在关联的 Amazon EC2 实例实际终止之前。 OpsWorks Stacks 将运行配方来执行清理任务，如关闭服务。  
 如果您已将 Elastic Load Balancing 负载均衡器连接到该层并[启用了对连接耗尽的支持](layers-elb.md)，则 OpsWorks Stacks 会等到连接耗尽完成后再触发事件。Shutdown  
触发Shutdown事件后， OpsWorks Stacks 允许Shutdown配方在指定的时间内执行任务，然后停止或终止 Ama EC2 zon 实例。默认 Shutdown 超时值为 120 秒。如果您的 Shutdown 配方需要更长时间，您可以[编辑层配置](workinglayers-basics-edit.md#workinglayers-basics-edit-general)以更改超时值。有关实例 Shutdown 的更多信息，请参阅[停止实例](workinginstances-starting.md#workinginstances-starting-stop)。

**注意**  
[重新启动实例](workinginstances-starting.md#workinginstances-starting-reboot)不会触发任何生命周期事件。

有关 Deploy 和 Undeploy 应用程序命令的更多讨论，请参阅[部署应用程序](workingapps-deploying.md)。

在已启动的实例完成引导后，剩余的启动序列如下所示：

1. OpsWorks Stacks 运行实例的内置Setup配方，然后运行任何自定义Setup配方。

1. OpsWorks Stacks 运行实例的内置Deploy配方，然后运行任何自定义Deploy配方。

   实例现在处于联机状态。

1. OpsWorks Stacks 会触发堆栈中所有实例Configure的事件，包括新启动的实例。

   OpsWorks Stacks 运行实例的内置Configure配方，然后运行任何自定义配方。Configure

**注意**  
要查看特定实例上发生的生命周期事件，请转到 **Instances** 页并单击实例名称，打开其详细信息页面。事件列表位于该页面底部的 **Logs** 部分。您可单击**日志**列中的**显示**以检查 Chef 日志中是否有事件。它提供了有关如何处理事件的详细信息，包括运行了哪些配方。有关如何解释 Chef 日志的更多信息，请参阅 [Chef 日志](troubleshoot-debug-log.md)。

![\[Log entries showing commands, timestamps, and durations for system operations.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/instance_logs.png)


对于每个生命周期事件， OpsWorks Stacks 会在每个实例上安装一组[堆栈配置和部署属性](workingcookbook-json.md)，其中包含当前堆栈状态以及有关部署的信息（对于Deploy事件）。这些属性包含有关可用的实例、此类实例的 IP 地址等信息。有关更多信息，请参阅 [堆栈配置和部署属性](workingcookbook-json.md)。

**注意**  
同时启动或停止大量实例可能迅速生成大量的 Configure 事件。为避免不必要的处理， OpsWorks Stacks 仅响应最后一个事件。该事件的堆栈配置和部署属性包含针对一整套更改更新堆栈实例所需的一切信息。这样就不必同时处理早期Configure的事件。 OpsWorks **Stacks 将未处理Configure的事件标记为已取代。**