AWS OpsWorks Stacks 生命周期事件 - AWS OpsWorks

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

AWS OpsWorks Stacks 生命周期事件

每个层有一组五个生命周期事件,每个事件有一组特定于层的关联配方。当某个层的实例上发生事件时,AWS OpsWorks Stacks 将自动运行一组相应的配方。要提供对这些事件的自定义响应,请为每个层实施自定义配方并将配方分配给相应事件。AWS OpsWorks Stacks 将在事件的内置配方之后运行这些配方。

Setup

此事件在已启动的实例完成引导后发生。您还可使用“设置”堆栈命令手动触发 Setup 事件。AWS OpsWorks Stacks 将运行根据其层设置实例的配方。例如,如果实例是 Rails 应用程序服务器层的成员,则 Setup 配方将安装 Apache、Ruby Enterprise Edition、Passenger 和 Ruby on Rails。

注意

Setup 事件将导致实例中断服务。由于实例在 Setup 生命周期事件运行时未处于 Online 状态,因此将从负载均衡器中删除运行 Setup 事件的实例。

Configure

如果出现以下情况之一,此事件将在堆栈的所有实例上发生:

例如,假设您的堆栈具有实例 A、B 和 C,您启动了一个新实例 D。在 D 运行完其 Setup 配方后,AWS OpsWorks Stacks 将在 A、B、C 和 D 上触发 Configure 事件。如果您随后停止了 A, AWS OpsWorks Stacks 将在 B、C 和 D 上触发 Configure 事件。AWS OpsWorks Stacks 将通过运行每个层的 Configure 配方来响应 Configure 事件,从而更新实例的配置以反映一组当前的联机实例。因此,Configure 事件是重新生成配置文件的好时机。例如,HAProxy Configure 配方将重新配置负载均衡器以适应联机应用程序服务器实例组中的任何更改。

您还可使用“配置”堆栈命令手动触发配置事件。

Deploy

此事件在您运行 Deploy 命令时发生,通常用于将应用程序部署到一组应用程序服务器实例。这些实例将运行这样的配方:将应用程序和任何相关文件从其存储库部署到层的实例。例如,对于 Rails 应用程序服务器实例,Deploy 配方将签出指定 Ruby 应用程序并要求 Phusion Passenger 重新加载它。您还可在其他实例上运行 Deploy,使这些实例能够更新其配置以适应新部署的应用程序 (举例)。

注意

“设置”包含“部署”;它在设置完成后运行“部署”配方。

Undeploy

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

Shutdown

此事件在您指示 AWS OpsWorks Stacks 关闭实例但关联的 Amazon EC2 实例尚未实际终止之前发生。AWS OpsWorks Stacks 将运行配方来执行清理任务,如关闭服务。

如果您已将 Elastic Load Balancing 负载均衡器挂载到层,并启用连接耗尽支持,AWS OpsWorks Stacks 将一直等待连接耗尽完成,然后才会触发 Shutdown 事件。

在触发 Shutdown 事件后,AWS OpsWorks Stacks 将为 Shutdown 配方留出指定的时间来执行其任务,然后停止或终止 Amazon EC2 实例。默认 Shutdown 超时值为 120 秒。如果您的 Shutdown 配方需要更长时间,您可以编辑层配置以更改超时值。有关实例 Shutdown 的更多信息,请参阅停止实例

注意

重新启动实例不会触发任何生命周期事件。

有关 Deploy 和 Undeploy 应用程序命令的更多讨论,请参阅部署应用程序

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

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

  2. AWS OpsWorks Stacks 运行实例的内置 Deploy 配方,然后运行自定义 Deploy 配方。

    实例现在处于联机状态。

  3. AWS OpsWorks Stacks 在堆栈中的所有实例上触发 Configure 事件,包括新启动的实例。

    AWS OpsWorks Stacks 运行实例的内置 Configure 配方,然后运行自定义 Configure 配方。

注意

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

对于每个生命周期事件,AWS OpsWorks Stacks 将在包含当前堆栈状态和有关部署的信息(针对 Deploy 事件)的所有实例上安装一组堆栈配置和部署属性。这些属性包含有关可用的实例、此类实例的 IP 地址等信息。有关更多信息,请参阅堆栈配置和部署属性

注意

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