自訂 Lambda 規則 (Amazon EC2 範例) - AWS Config

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

自訂 Lambda 規則 (Amazon EC2 範例)

此程序會引導您完成建立自訂 Lambda 規則的程序,以評估每個 EC2 執行個體是否為 t2.micro 類型。 AWS Config 將針對此規則執行基於事件的評估,這表示每次 AWS Config 偵測到執行個體中的組態變更時,它都會檢查您的執行個體設定。 AWS Config 會將 t2.micro 執行個體標記為相容,並將所有其他執行個體標記為不相容。合規狀態會顯示在 AWS Config 主控台。

為了使用此程序獲得最佳結果,您應該在 AWS 帳戶. 您的執行個體應包含至少一個 t2.micro 執行個體及其他類型的組合。

若要建立此規則,首先,您將透過在 AWS Lambda 主控台中自訂藍圖來建立 AWS Lambda 函數。然後,您將在中建立自訂 Lambda 規則 AWS Config,並將該規則與函數產生關聯。

建立自訂組態規則的 AWS Lambda 函數

  1. 請登入 AWS Management Console 並開啟 AWS Lambda 主控台,網址為 https://console.aws.amazon.com/lambda/

  2. 在 AWS Management Console 功能表中,確認區域選取器已設定為支援 AWS Config 規則的區域。如需支援區域的清單,請參閱《Amazon Web Services 一般參考》中的 AWS Config 區域與端點

  3. 在 AWS Lambda 主控台中,選擇 [建立 Lambda 函數]。

  4. 選擇 使用藍圖 。在搜尋列中鍵入 config-rule-change-triggered。在篩選結果中選取藍圖,然後選取 設定

  5. Configure triggers (設定觸發條件) 頁面中,選擇 Next (下一步)。

  6. 基本資訊 頁面上,完成下列步驟:

    1. 針對 Function name (函數名稱),輸入 InstanceTypeCheck

    2. 針對 [執行角色],選擇 [從 AWS 原則範本建立新角色]。

    3. 針對 Runtime (執行時間),選擇 Node.js

    4. 角色名稱 中鍵入名稱。

    5. 針對 政策範本,選擇 AWS Config Rules 權限

    6. 對於 Lambda function code function (Lambda 函數程式碼函數),請保留預先設定的程式碼。您函數的 Node.js 程式碼會在程式碼編輯器中提供。針對此程序,您無須變更程式碼。

    7. 確認詳細資訊,接著選擇 建立函數。 AWS Lambda 主控台會顯示您的功能。

  7. 若要驗證您的函數已設定正確,請使用下列步驟進行測試:

    1. 函式概觀 下方的功能表中選擇 測試,然後選擇 設定測試事件

    2. 針對 範本,選擇 AWS Config 組態項目變更通知

    3. 針對 Name (名稱),輸入名稱。

    4. 選擇 [測試]。 AWS Lambda 使用示例事件測試您的函數。若您的函數如預期般正常運作,與下列內容相似的錯誤訊息會出現在 Execution result (執行結果) 下方:

      { "errorType": "InvalidResultTokenException," "errorMessage": "Result Token provided is invalid", . . .

      InvalidResultTokenException是預期的,因為您的函數只有在收到來自的結果令牌時才成功運行 AWS Config。結果字符會識別 AWS Config 規則及造成評估的事件,並且結果字符會將評估與規則建立關聯。此異常表示您的函數擁有將結果傳送至 AWS Config的必要許可。否則,會出現下列錯誤訊息:not authorized to perform: config:PutEvaluations。若發生此錯誤,請更新您指派給函數的角色,允許 config:PutEvaluations 動作,並再次測試您的函數。

建立自訂 Lambda 規則以評估 Amazon EC2 執行個體

  1. 開啟主 AWS Config 控台,網址為 https://console.aws.amazon.com/config/

  2. 在 AWS Management Console 功能表中,確認區域選取器設定為您為自訂 Lambda 規則建立 AWS Lambda 函數的相同區域。

  3. Rules (規則) 頁面,選擇 Add rule (新增規則)

  4. 指定規則類型 頁面上,選擇 建立自訂規則

  5. Configure rule (設定規則) 頁面上,完成下列步驟:

    1. Name (名稱) 輸入 InstanceTypesAreT2micro

    2. 針對 Description (描述),輸入 Evaluates whether EC2 instances are the t2.micro type

    3. AWS Lambda function ARN ( 函數 ARN) 中,指定 AWS Lambda 指派給您的函數的 ARN。

      注意

      您在此步驟中指定的 ARN 不得包含 $LATEST 限定詞。您可以指定沒有版本限定符或除了任何限定符之外$LATEST的 ARN。 AWS Lambda 支持功能版本控制,並且每個版本都被分配一個帶有限定符的 ARN。 AWS Lambda 使用最新版本的$LATEST限定詞。

    4. 針對 觸發類型,選擇 組態有所變更時

    5. 針對 Scope of changes (變更範圍),選擇 Resources (資源)

    6. 針對 資源,請從 資源類型下拉式清單中選擇 AWS EC2 執行個體

    7. 在「參數」區段中,您必須指定 AWS Lambda 函數評估的規則參數和所需的值。此程序的函數會評估 desiredInstanceType 參數。

      Key (鍵) 中,輸入 desiredInstanceType。針對 Value (值),輸入 t2.micro

  6. 選擇下一步。在 檢閱和建立 頁面上,驗證規則的詳細資訊,然後選擇 新增函數。您的新規則會顯示在 Rules (規則) 頁面上。

    合規性將顯示評估... 直到從您的 AWS Lambda 函數 AWS Config 收到評估結果。若規則和函數如預期般正常運作,結果摘要便會在幾分鐘之後出現。例如,2 noncompliant resource(s) (2 個不合規資源) 表示您有 2 個執行個體並非 t2.micro 執行個體,Compliant (合規) 結果則表示所有執行個體皆為 t2.micro。您可以使用重新整理按鈕來更新結果。

    如果規則或函數未如預期般正常運作,Compliance (合規) 可能會顯示以下其中一個項目:

    • 未報告結果-根據規則 AWS Config 評估您的資源。規則不適用於範圍內的 AWS 資源,指定的資源已遭刪除,或評估結果已遭刪除。若要取得評估結果,請更新規則、變更其範圍,或選擇 Re-evaluate (重新評估)

      驗證範圍包含適用於 資源AWS EC2 執行個體,然後再試一次。

    • 沒有資源在範圍內- AWS Config 無法根據此規則評估您記錄的資 AWS 源,因為您的資源都不在規則的範圍內。若要取得評估結果,請編輯規則並變更其範圍,或使用「設定」 頁面新增 AWS Config 要記錄的資源。

      確認 AWS Config 是否正在記錄 EC2 執行個體。

    • Evaluations failed (評估失敗) - 如需有助於判斷問題的資訊,請選擇規則名稱以開啟它的詳細資訊頁面,並參閱錯誤訊息。

如果您的規則正常運作並 AWS Config 提供評估結果,您可以瞭解哪些條件會影響規則的符合性狀態。您可以了解哪些資源不合規,以及原因為何 (若有的話)。如需更多詳細資訊,請參閱 檢視資源的相容性 AWS 資訊與評估結果