

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

# 建立和管理 CloudFormation 勾點
<a name="creating-and-managing-hooks"></a>

CloudFormation 勾點提供一種機制，可在允許堆疊建立、修改或刪除之前評估 CloudFormation 資源。此功能可協助您確保 CloudFormation 資源符合組織的安全性、營運和成本最佳化最佳實務。

若要建立勾點，您有四個選項。
+ **做為勾點的主動控制** – 使用 Control AWS Control Tower Catalog 中的主動控制評估資源。
+ **Guard Hook** – 使用 AWS CloudFormation Guard 規則評估資源。
+ **Lambda Hook** – 將資源評估的請求轉送至 AWS Lambda 函數。
+ **Custom Hook** – 使用您手動開發的自訂 Hook 處理常式。

------
#### [ Proactive controls as Hooks ]

若要從主動控制建立勾點，請遵循下列步驟：

1. 導覽至 CloudFormation 主控台並開始建立勾點。

1. 從控制目錄中選擇您希望勾點評估資源的特定控制項。

   這些控制項會在建立或更新指定的資源時自動套用。您的選擇會決定勾點將評估哪些資源類型。

1. 將勾點模式設定為警告使用者不合規或防止不合規的操作。

1. 設定選用篩選條件，依堆疊名稱或堆疊角色來包含或排除堆疊。

1. 完成組態後，請啟用勾點以開始強制執行。

------
#### [ Guard Hook ]

若要建立 Guard Hook，請遵循下列步驟：

1. 使用 Guard 網域特定語言 (DSL)，將資源評估邏輯撰寫為 Guard 政策規則。

1. 將 Guard 政策規則存放在 Amazon S3 儲存貯體中。

1. 導覽至 CloudFormation 主控台並開始建立 Guard Hook。

1. 提供您 Guard 規則的 Amazon S3 路徑。

1. 選擇勾點將評估的特定目標類型。
   + CloudFormation 資源 (`RESOURCE`)
   + 整個堆疊範本 (`STACK`)
   + 變更集 (`CHANGE_SET`)
   + Cloud Control API 資源 (`CLOUD_CONTROL`)

1. 選擇將調用勾點的部署動作 （建立、更新、刪除）。

1. 選擇勾點在評估失敗時如何回應。

1. 設定選用篩選條件以指定掛鉤應評估的資源類型

1. 設定選用篩選條件，依堆疊名稱或堆疊角色來包含或排除堆疊。

1. 完成組態後，請啟用勾點以開始強制執行。

------
#### [ Lambda Hook ]

若要建立 Lambda 勾點，請遵循下列步驟：

1. 將您的資源評估邏輯撰寫為 Lambda 函數。

1. 導覽至 CloudFormation 主控台並開始建立 Lambda Hook。

1. 為您的 Lambda 函數提供 Amazon Resource Name (ARN)。

1. 選擇勾點將評估的特定目標類型。
   + CloudFormation 資源 (`RESOURCE`)
   + 整個堆疊範本 (`STACK`)
   + 變更集 (`CHANGE_SET`)
   + Cloud Control API 資源 (`CLOUD_CONTROL`)

1. 選擇將調用勾點的部署動作 （建立、更新、刪除）。

1. 選擇勾點在評估失敗時如何回應。

1. 設定選用篩選條件以指定掛鉤應評估的資源類型

1. 設定選用篩選條件，依堆疊名稱或堆疊角色來包含或排除堆疊。

1. 完成組態後，請啟用勾點以開始強制執行。

------
#### [ Custom Hook ]

自訂勾點是您使用 CloudFormation 命令列界面 (CFN-CLI) 在 CloudFormation 登錄檔中註冊的延伸模組。

若要建立自訂勾點，請遵循這些主要步驟：

1. **啟動專案** – 產生開發自訂勾點所需的檔案。

1. **勾點模型** – 撰寫定義勾點的結構描述，以及指定可叫用勾點之操作的處理常式。

1. **註冊並啟用勾點** – 建立勾點後，您需要在要使用勾點的帳戶和區域中註冊它，這會啟用它。

------

下列主題提供建立和管理勾點的詳細資訊。

**Topics**
+ [概念](hooks-concepts.md)
+ [主動控制即勾點](proactive-controls-hooks.md)
+ [Guard 勾點](guard-hooks.md)
+ [Lambda 勾點](lambda-hooks.md)
+ [自訂勾點](hooks-develop.md)