

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# OpsWorks Stacks 生命週期事件
<a name="workingcookbook-events"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

每個 layer 都有一組五個生命週期事件，而每個事件都有一組特別與該 layer 相關聯的配方。當事件在 layer 的執行個體上發生時， OpsWorks Stacks 會自動執行該組適當的配方。若要提供這些事件的自訂回應，請實作自訂配方，並將其[指派給每個 layer 的適當事件](workingcookbook-assigningcustom.md)。 OpsWorks Stacks 會在事件的內建配方之後執行這些配方。

**Setup**  
此事件會在已啟動的執行個體完成開機後發生。您也可以使用[設定堆疊命令](workingstacks-commands.md)來手動觸發Setup事件。 OpsWorks Stacks 會執行根據其 layer 設定執行個體的配方。例如，如果執行個體是 Rails App Server layer 的成員，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) layer，或從 layer 分離。
例如，假設您的堆疊有執行個體 A、B 和 C，而且您啟動新的執行個體 D。在 D 完成執行其設定配方之後， OpsWorks Stacks 會在 A、B、C 和 D 上觸發Configure事件。如果您隨後停止 A， OpsWorks Stacks 會在 B、C 和 D 上觸發Configure事件。 OpsWorks Stacks 會透過執行每個 layer 的Configure配方來回應Configure事件，以更新執行個體的組態以反映目前的線上執行個體集。Configure 事件是重新產生組態檔案的好機會。例如，HAProxy Configure配方會重新設定負載平衡器，以適應線上應用程式伺服器執行個體集中的任何變更。  
您也可以使用[設定堆疊命令](workingstacks-commands.md)來手動觸發設定事件。

**Deploy**  
此事件會在您執行 **Deploy (部署)** 命令時發生，通常發生於將應用程式部署至一組應用程式伺服器執行個體的情況下。執行個體會執行將應用程式和任何相關檔案從其儲存庫部署到 layer 之執行個體的配方。例如，針對 Rails 應用程式伺服器執行個體，Deploy 配方會檢查指定的 Ruby 應用程式，並告知 [Phusion Passenger](https://www.phusionpassenger.com/) 重新載入它。您也可以在其他執行個體上執行 Deploy，讓它們 (舉例來說) 可更新其組態以適應新部署的應用程式。  
安裝包含部署，其會在安裝完成後執行部署配方。

**Undeploy**  
此事件會在您刪除應用程式或執行 Undeploy 命令，藉此從一組應用程式伺服器執行個體中移除應用程式時發生。指定的執行個體會執行配方，以移除所有應用程式版本，並執行所有必要的清除。

**Shutdown**  
此事件會在您指示 OpsWorks Stacks 關閉執行個體，但在關聯的 Amazon EC2 執行個體實際終止之前發生。 OpsWorks Stacks 會執行配方來執行清除任務，例如關閉服務。  
 如果您已將 Elastic Load Balancing 負載平衡器連接到 layer，並[啟用連線耗盡的支援](layers-elb.md)， OpsWorks Stacks 會等到連線耗盡完成，再觸發Shutdown事件。  
觸發Shutdown事件後， OpsWorks Stacks 允許Shutdown配方有指定的時間執行其任務，然後停止或終止 Amazon EC2 執行個體。預設 Shutdown 逾時值為 120 秒。若您的 Shutdown 配方可能需要更多時間，您可以[編輯 layer 組態](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_tw/opsworks/latest/userguide/images/instance_logs.png)


對於每個生命週期事件， OpsWorks Stacks 會在每個執行個體上安裝一組[堆疊組態和部署屬性](workingcookbook-json.md)，其中包含目前堆疊狀態，以及Deploy事件的部署相關資訊。這些屬性包括哪些執行個體可用、其 IP 地址等資訊。如需詳細資訊，請參閱[堆疊組態及部署屬性](workingcookbook-json.md)。

**注意**  
同時啟動或停止大量的執行個體，可能會快速產生大量的 Configure 事件。為了避免不必要的處理， OpsWorks Stacks 只會回應最後一個事件。該事件的堆疊組態和部署屬性包含為堆疊之執行個體更新整組變更所需的所有資訊。這樣就不需要處理較早Configure的事件。 OpsWorks Stacks 會將未處理Configure的事件標記為**已取代**。