

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

# 在您的帳戶中啟用 Guard Hook
<a name="guard-hooks-activate-hooks"></a>

下列主題說明如何在您的 帳戶中啟用 Guard Hook，使其可在其啟用的帳戶和區域中使用。

**Topics**
+ [啟用 Guard Hook （主控台）](#guard-hooks-activate-hook-console)
+ [啟用 Guard Hook (AWS CLI)](#guard-hooks-activate-hooks-cli)
+ [相關資源](#related-resources-guard-hooks)

## 啟用 Guard Hook （主控台）
<a name="guard-hooks-activate-hook-console"></a>

**啟用 Guard Hook 以在您的帳戶中使用**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

1. 在畫面頂端的導覽列上，選擇您要建立連接所在的 AWS 區域 。

1. 在左側導覽窗格中，選擇**勾點**。

1. 在**勾點**頁面上，選擇**建立勾點**，然後選擇**使用 Guard**。

1. 如果您尚未**建立任何 Guard 規則，請建立您的 Guard 規則，將其存放在 Amazon S3 中，然後返回此程序。請參閱 中的範例規則[撰寫 Guard 規則來評估 Guard Hooks 的資源](guard-hooks-write-rules.md)以開始使用。

   如果您已建立 Guard 規則並將其存放在 S3 中，請繼續下一個步驟。
**注意**  
存放在 S3 中的物件必須具有下列其中一個副檔名：`.guard`、 `.zip`或 `.tar.gz`。

1. 對於 **Guard Hook 來源**，**請將您的 Guard 規則存放在 S3 中**，請執行下列動作：
   + 對於 **S3 URI**，指定規則檔案的 S3 路徑，或使用**瀏覽 S3** 按鈕開啟對話方塊來瀏覽並選取 S3 物件。
   + （選用） 對於**物件版本**，如果您的 S3 儲存貯體已啟用版本控制，您可以選取 S3 物件的特定版本。

     每次叫用勾點時，Guard Hook 都會從 S3 下載您的規則。為了防止意外變更或刪除，我們建議您在設定 Guard Hook 時使用 版本。

1. （選用） 針對 **Guard 輸出報告的 S3 儲存貯**體，指定要存放 Guard 輸出報告的 S3 儲存貯體。此報告包含 Guard 規則驗證的結果。

   若要設定輸出報告目的地，請選擇下列其中一個選項：
   + 選取**使用與 Guard 規則存放相同的儲存貯體**核取方塊，以使用 Guard 規則所在的相同儲存貯體。
   + 選擇不同的 S3 儲存貯體名稱來存放 Guard 輸出報告。

1. （選用） 展開 **Guard 規則輸入參數**，然後在 ** S3 中存放 Guard 規則輸入參數**下提供以下資訊：
   + 對於 **S3 URI**，指定參數檔案的 S3 路徑，或使用**瀏覽 S3** 按鈕開啟對話方塊來瀏覽並選取 S3 物件。
   + （選用） 對於**物件版本**，如果您的 S3 儲存貯體已啟用版本控制，您可以選取 S3 物件的特定版本。

1. 選擇**下一步**。

1. 針對**勾點名稱**，選擇下列其中一個選項：
   + 提供將在 之後新增的簡短描述性名稱`Private::Guard::`。例如，如果您輸入 *`MyTestHook`*，則完整的勾點名稱會變成 `Private::Guard::MyTestHook`。
   + 使用此格式提供完整的勾點名稱 （也稱為別名）： `Provider::ServiceName::HookName`

1. 對於**勾點目標**，選擇要評估的內容：
   + **堆疊** — 在使用者建立、更新或刪除堆疊時評估堆疊範本。
   + **資源** — 評估使用者更新堆疊時的個別資源變更。
   + **變更集** — 評估使用者建立變更集時的計劃更新。
   + **雲端控制 API** — 評估 [Cloud Control API](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html) 啟動的建立、更新或刪除操作。

1. 針對**動作**，選擇哪些動作 （建立、更新、刪除） 會叫用您的勾點。

1. 對於**勾點模式**，選擇當規則評估失敗時勾點如何回應：
   + **警告** — 向使用者發出警告，但允許動作繼續。這適用於非關鍵驗證或資訊檢查。
   + **失敗** — 防止動作繼續。這有助於強制執行嚴格的合規或安全政策。

1. 針對**執行角色**，選擇 Hook 從 S3 擷取您的 Guard 規則所擔任的 IAM 角色，並選擇性地撰寫詳細的 Guard 輸出報告。您可以允許 CloudFormation 為您自動建立執行角色，也可以指定您已建立的角色。

1. 選擇**下一步**。

1. （選用） 對於**勾點篩選條件**，請執行下列動作：

   1. 針對**資源篩選條件**，指定哪些資源類型可以叫用勾點。這可確保僅針對相關資源叫用勾點。

   1. 針對**篩選條件**，選擇套用堆疊名稱和堆疊角色篩選條件的邏輯：
      + **所有堆疊名稱和堆疊角色** – 只有在所有指定的篩選條件相符時，才會叫用勾點。
      + **任何堆疊名稱和堆疊角色** – 如果至少一個指定的篩選條件相符，則會叫用勾點。
**注意**  
對於雲端控制 API 操作，會忽略所有**堆疊名稱**和**堆疊角色**篩選條件。

   1. 對於**堆疊名稱**，請在勾點調用中包含或排除特定堆疊。
      + 針對**包含**，指定要包含的堆疊名稱。當您有一小組想要鎖定的特定堆疊時，請使用此選項。只有此清單中指定的堆疊才會叫用勾點。
      + 針對**排除**，指定要排除的堆疊名稱。當您想要在大多數堆疊上叫用勾點，但排除幾個特定堆疊時，請使用此選項。除了此處列出的堆疊之外，所有堆疊都會叫用勾點。

   1. 對於**堆疊角色**，請根據特定堆疊相關聯的 IAM 角色，從勾點調用中包含或排除特定堆疊。
      + 針對**包含**，指定一或多個 IAM 角色 ARNs 至與這些角色相關聯的目標堆疊。只有這些角色啟動的堆疊操作才會叫用勾點。
      + 針對**排除**，為您要排除的堆疊指定一或多個 IAM 角色 ARNs。所有堆疊都會叫用勾點，但由指定角色啟動的堆疊除外。

1. 選擇**下一步**。

1. 在**檢閱和啟用**頁面上，檢閱您的選擇。選擇**編輯**以對相關區段進行變更。

1. 當您準備好繼續時，請選擇**啟用勾點**。

## 啟用 Guard Hook (AWS CLI)
<a name="guard-hooks-activate-hooks-cli"></a>

在繼續之前，請確認您已建立 Guard 規則和您將與此勾點搭配使用的執行角色。如需詳細資訊，請參閱[撰寫 Guard 規則來評估 Guard Hooks 的資源](guard-hooks-write-rules.md)及[建立 Guard Hook 的執行角色](guard-hooks-prepare-to-create-hook.md#guard-hooks-create-execution-role)。

**啟用 Guard Hook 以用於您的帳戶 (AWS CLI)**

1. 若要開始啟用勾點，請使用下列[https://docs.aws.amazon.com/cli/latest/reference/cloudformation/activate-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/activate-type.html)命令，將預留位置取代為您的特定值。此命令會授權 Hook 從您的 使用指定的執行角色 AWS 帳戶。

   ```
   aws cloudformation activate-type --type HOOK \
     --type-name AWS::Hooks::GuardHook \
     --publisher-id aws-hooks \
     --type-name-alias Private::Guard::MyTestHook \
     --execution-role-arn arn:aws:iam::123456789012:role/my-execution-role \
     --region us-west-2
   ```

1. 若要完成啟用勾點，您必須使用 JSON 組態檔案進行設定。

   使用 **cat**命令建立具有下列結構的 JSON 檔案。如需詳細資訊，請參閱[勾點組態結構描述語法參考](hook-configuration-schema.md)。

   ```
   $ cat > config.json
   {
     "CloudFormationConfiguration": {
       "HookConfiguration": {
         "HookInvocationStatus": "ENABLED",
         "TargetOperations": [
           "STACK",
           "RESOURCE",
           "CHANGE_SET"
         ],
         "FailureMode": "WARN",
         "Properties": {
           "ruleLocation": "s3://amzn-s3-demo-bucket/MyGuardRules.guard",
           "logBucket": "amzn-s3-demo-logging-bucket"
         },
         "TargetFilters": {
           "Actions": [
             "CREATE",
             "UPDATE",
             "DELETE"
           ]
         }
       }
     }
   }
   ```
   + `HookInvocationStatus`：將 設定為 `ENABLED` 以啟用 勾點。
   + `TargetOperations`：指定勾點將評估的操作。
   + `FailureMode`：設為 `FAIL` 或 `WARN`。
   + `ruleLocation`：將 取代為儲存規則的 S3 URI。存放在 S3 中的物件必須具有下列其中一個副檔名：`.guard`、 `.zip`和 `.tar.gz`。
   + `logBucket`：（選用） 指定 Guard JSON 報告的 S3 儲存貯體名稱。
   + `TargetFilters`：指定將調用勾點的動作類型。

1. 使用下列[https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-configuration.html)命令以及您建立的 JSON 檔案來套用組態。將預留位置取代為您的特定值。

   ```
   aws cloudformation set-type-configuration \
     --configuration file://config.json \
     --type-arn "arn:aws:cloudformation:us-west-2:123456789012:type/hook/MyTestHook" \
     --region us-west-2
   ```

## 相關資源
<a name="related-resources-guard-hooks"></a>

我們提供範本範例，您可以用來了解如何在 CloudFormation 堆疊範本中宣告 Guard Hook。如需詳細資訊，請參閱《AWS CloudFormation 使用者指南》**中的 [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-guardhook.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-guardhook.html)。