我的 AWS Config 規則無法運作。如何對此問題進行疑難排解?
解決方法
許多問題都可能導致受管 AWS Config 規則無法運作,包括許可、資源範圍或組態變更項目。若要解決 AWS Config 規則無法運作的問題,請嘗試下列疑難排解步驟。
注意事項: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確認您使用的是最新版本的 AWS CLI。
一般 AWS Config 規則疑難排解
- 確認組態記錄器是否記錄規則所需的所有資源類型 (例如 AWS::EC2::Instance)。
- 開啟 AWS Config 主控台,然後從導覽窗格中選擇規則。如果合規欄位顯示沒有報告結果或範圍內沒有資源,請參閱設定和啟用 AWS 受管規則的步驟 8。
- 如果未報告評估時間並指出評估失敗,請檢視 AWS CloudTrail 日誌中的 PutEvaluations API 呼叫,以查看報告的錯誤。
- 開啟 AWS CloudTrail 主控台,然後從導覽窗格中選擇事件歷史記錄。若要篩選日誌,請從下拉式清單中選擇事件來源,然後在搜尋欄位中輸入 config.amazonaws.com。檢閱篩選日誌結果是否存在存取遭拒錯誤。
- 對於定期觸發 AWS Config 規則,請存取 CloudTrail 主控台事件歷史記錄儀表板,以驗證資源上的相關服務 API。
- 檢閱特定資源組態和合規時間表。確認產生的組態項目,以反映使用組態變更型觸發器的 AWS Config 規則變更。
- 確認是否符合記錄器角色許可需求。這些憑證是用於使用 PutEvaluations API 描述資源配置和發佈合規。
- 執行下列 AWS CLI 命令。使用您的 AWS Config 規則名稱取代 ConfigRuleName,然後使用您的 AWS 區域名稱取代 RegionID。從輸出中,檢閱 LastErrorMessage 值。
aws configservice describe-config-rule-evaluation-status --config-rule-names ConfigRuleName --region RegionID
自訂 AWS Config 規則疑難排解
對於自訂 AWS Config 規則,除了前述的一般疑難排解步驟之外,請驗證以下各項:
「無法執行 Lambda 函數」錯誤訊息表示該 AWS Config 服務不具備叫用 AWS Lambda 函數的權限。若要解決此錯誤,請執行下列命令以授予所需權限。使用 Lambda 函數名稱取代 function_name,使用 AWS 區域取代 RegionID,並使用 AWS 帳戶 ID 取代 AWS-accountID:
aws lambda add-permission --function-name function_name --region RegionID --statement-id allow_config --action lambda:InvokeFunction --principal config.amazonaws.com --source-account AWS-accountID
以下是 Lambda 函數的資源政策範例:
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "allow_config",
"Effect": "Allow",
"Principal": {
"Service": "config.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "lambda-function-arn",
"Condition": {
"StringEquals": {
"AWS:SourceAccount": "AWS-accountID"
}
}
}
]
}
識別 PutEvaluations 事件的使用者名稱值是否與 Lambda 函數名稱相符。請檢閱 errorMessage 了解詳細資訊。
- 如果 Lambda 函數用於執行程式碼的角色未獲得執行 config:PutEvaluations 的權限,請為該指定角色新增許可。
- 如果許可正確,請檢閱 Lambda 函數程式碼是否存在任何引發的例外狀況。如需詳細資訊,請檢閱 Amazon CloudWatch 日誌群組 (/aws/lambda/FunctionName) 中與 Lambda 函數相關聯的日誌。在程式碼中新增 print 陳述式,以產生更多偵錯日誌。
相關資訊
為什麼無法建立或刪除組織設定規則?