

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

# CloudFormation 勾點概念
<a name="hooks-concepts"></a>

下列術語和概念是了解和使用 CloudFormation Hooks 的核心。

## 勾點
<a name="hook-terms-hook"></a>

勾點包含在 CloudFormation 建立、更新或刪除堆疊或特定資源之前立即調用的程式碼。它也可以在建立變更集操作期間叫用。勾點可以檢查 CloudFormation 即將佈建的範本、資源或變更集。此外，您可以在 [Cloud Control API](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html) 建立、更新或刪除特定資源之前立即叫用勾點。

如果勾點識別不符合勾點邏輯中定義之組織準則的任何組態，則您可以選擇`WARN`使用者或 `FAIL`，以防止 CloudFormation 佈建資源。

勾點具有下列特性：
+ **主動驗證** – 在建立、更新或刪除不合規資源之前，透過識別這些資源來降低風險、營運開銷和成本。
+ **自動強制執行** – 在 中提供強制執行 AWS 帳戶 ，以防止 CloudFormation 佈建不合規的資源。

## 失敗模式
<a name="hook-terms-failure-mode"></a>

您的勾點邏輯可以傳回成功或失敗。成功回應將允許操作繼續。不合規資源的失敗可能會導致下列情況：
+ `FAIL` – 停止佈建操作。
+ `WARN` – 允許佈建繼續出現警告訊息。

在`WARN`模式下建立勾點是監控勾點行為的有效方式，而不會影響堆疊操作。首先，在 `WARN` 模式中啟用勾點，以了解哪些操作會受到影響。評估潛在影響之後，您可以將勾點切換到 `FAIL` 模式，以開始防止不合規的操作。

## 掛鉤目標
<a name="hook-terms-hook-target"></a>

勾點目標指定勾點將評估的操作。這些可以是 上的操作：
+ CloudFormation 支援的資源 (`RESOURCE`) 
+ 堆疊範本 (`STACK`)
+ 變更集 (`CHANGE_SET`)
+ [Cloud Control API](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html) (`CLOUD_CONTROL`) 支援的資源 

您可以定義一或多個目標，指定勾點將評估的最廣泛操作。例如，您可以撰寫 Hook 目標`RESOURCE`以鎖定所有 AWS 資源`STACK`，並鎖定所有堆疊範本。

## 目標動作
<a name="hook-terms-target-action"></a>

目標動作會定義將叫用勾點的特定動作 `CREATE`(`UPDATE`、 或 `DELETE`)。對於 `RESOURCE`、 `STACK`和 `CLOUD_CONTROL`目標，所有目標動作都適用。對於`CHANGE_SET`目標，只有 `CREATE`動作適用。

## 註釋
<a name="hook-annotations"></a>

[GetHookResult](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetHookResult.html) 回應可以傳回*註釋*，提供每個評估資源的詳細合規檢查結果和修補指導。如需 API 註釋結構的詳細資訊，請參閱 *AWS CloudFormation API 參考*中的[註釋](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Annotation.html)。如需檢視這些驗證結果的說明，請參閱 [檢視 CloudFormation 勾點的調用結果](hooks-view-invocations.md)。

您可以在設定勾點時指定自己的 KMS 金鑰，視需要加密敏感合規資訊的註釋。如需詳細資訊，請參閱[勾點組態結構描述語法參考](hook-configuration-schema.md)。如需設定您為 Hooks 指定 KMS 金鑰時所需金鑰政策的資訊，請參閱 [AWS KMS 加密靜態 CloudFormation Hooks 結果的金鑰政策和許可](hooks-kms-key-policy.md)。

**重要**  
請注意，指定客戶受管金鑰`KmsKeyId`的選項目前只有在您使用 AWS CLI 來設定勾點時才能使用。

## 勾點處理常式
<a name="hook-terms-hook-handler"></a>

對於自訂勾點，這是處理評估的程式碼。它與目標叫用點和目標動作相關聯，該動作會標記勾點的確切執行點。您可以撰寫處理常式，以託管這些特定點的邏輯。例如，具有`PRE`目標動作`CREATE`的目標調用點會成為`preCreate`勾點處理常式。當相符的目標叫用點和服務執行相關聯的目標動作時，Hook 處理常式內的程式碼會執行。

*有效值*： (`preCreate` \$1 `preUpdate` \$1 `preDelete`)

**重要**  
導致 狀態的堆疊操作`UpdateCleanup`不會叫用勾點。例如，在以下兩個案例中，不會叫用 Hook 的`preDelete`處理常式：  
從範本移除一個資源後，堆疊會更新。
會刪除具有[替代](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)更新類型的資源。

## 逾時和重試限制
<a name="hook-timeout-and-retry-limits"></a>

勾點每次調用都有 30 秒的逾時限制，且限制為 3 次重試。如果調用超過逾時，我們會傳回錯誤訊息，指出勾點執行逾時。第三次重試後，CloudFormation 會將勾點執行標記為失敗。