

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

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

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

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

## 啟用 Lambda 勾點 （主控台）
<a name="lambda-hooks-activate-hook-console"></a>

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

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

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

1. 如果您*尚未*為 勾點建立 Lambda 函數，請執行下列動作：
   + 開啟 Lambda 主控台中的 [Functions (函數) 頁面](https://console.aws.amazon.com/lambda/home#/functions)。
   + 建立您將與此勾點搭配使用的 Lambda 函數，然後返回此程序。如需詳細資訊，請參閱[建立 Lambda 函數來評估 Lambda Hooks 的資源](lambda-hooks-create-lambda-function.md)。

   如果您已建立 Lambda 函數，請繼續下一個步驟。

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

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

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

1. 對於 **Lambda 函數**，請提供要與此勾點搭配使用的 Lambda 函數。您可以使用：
   + 不含尾碼的完整 Amazon Resource Name (ARN)。
   + 具有版本或別名尾碼的合格 ARN。

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

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

1. 針對**勾點模式**，選擇勾點在勾點叫用 Lambda 函數傳回回應時的勾點`FAILED`回應方式：
   + **警告** — 向使用者發出警告，但允許動作繼續。這對於非關鍵驗證或資訊檢查非常有用。
   + **失敗** — 防止動作繼續。這有助於強制執行嚴格的合規或安全政策。

1. 針對**執行角色**，選擇 Hook 用來叫用 Lambda 函數的 IAM 角色。您可以允許 CloudFormation 為您自動建立執行角色，也可以指定您已建立的角色。

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

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

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

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

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

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

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

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

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

## 啟用 Lambda 勾點 (AWS CLI)
<a name="lambda-hooks-activate-hooks-cli"></a>

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

**啟用 Lambda 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)命令，將預留位置取代為您的特定值。此命令授權 勾點從您的 使用指定的執行角色 AWS 帳戶。

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

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

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

   ```
   $ cat > config.json
   {
     "CloudFormationConfiguration": {
       "HookConfiguration": {
         "HookInvocationStatus": "ENABLED",
         "TargetOperations": [
           "CLOUD_CONTROL"
         ],
         "FailureMode": "WARN",
         "Properties": {
           "LambdaFunction": "arn:aws:lambda:us-west-2:123456789012:function:MyFunction"
         },
         "TargetFilters": {
           "Actions": [
             "CREATE",
             "UPDATE",
             "DELETE"
           ]
         }
       }
     }
   }
   ```
   + `HookInvocationStatus`：將 設定為 `ENABLED` 以啟用 勾點。
   + `TargetOperations`：指定勾點將評估的操作。
   + `FailureMode`：設為 `FAIL` 或 `WARN`。
   + `LambdaFunction`：指定 Lambda 函數的 ARN。
   + `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-lambda-hooks"></a>

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