我想使用 AWS Config 的 AWS 受管規則 cloudformation-stack-drift-detection-check 來解決 AWS CloudFormation中的漂移偵測錯誤。
簡短描述
即使堆疊漂移狀態在 CloudFormation 主控台中顯示為 IN_SYNC,您也可能會收到下列錯誤:
- 「AWS CloudFormation 無法偵測到漂移,預設為 NON_COMPLIANT。請重新評估規則並再試一次。如果問題仍然存在,請聯絡 AWS CloudFormation 支援。」
- 「您針對特定堆疊的堆疊漂移偵測操作已失敗。檢查您現有的 AWS CloudFormation 角色許可,並新增缺少的許可。」
根據您收到的錯誤,選擇下列其中一個選項:
- 如果收到 NON-COMPLIANT 錯誤,請完成更新 AWS Config 規則 一節中的步驟。
- 如果您收到許可錯誤,請完成設定正確許可 一節中的步驟。
**注意:**AWS 受管規則 cloudformation-stack-drift-detection-check 會檢查 CloudFormation 堆疊以使用 DetectStackDrift API 進行漂移偵測。此規則同時具備週期性和組態變更觸發條件類型。如果漂移偵測失敗,您會收到錯誤訊息。
解決方法
更新您的 AWS Config 規則
您可能會在 AWS Config 主控台中收到 NON_COMPLIANT 錯誤訊息,原因如下:
- CloudFormation 堆疊中的資源不支援漂移偵測。您會收到針對 AWS Config 規則的 NON_COMPLIANT 資源錯誤 (以註釋提供)。例如,您會在 AWS CloudTrail 日誌中收到「ResourceType 不支援漂移偵測」錯誤。
- 您的 AWS Config 規則取決於 DetectStackDrift 的可用性。您會收到限流或「超過費率」錯誤,因為 AWS Config 會在發生限流時將規則預設為 NON_COMPLIANT。
若要解決不支援漂移偵測而導致的錯誤:
忽略處於 NON_COMPLIANT 狀態的 CloudFormation 堆疊。在這種情況下,錯誤即為誤報。如需詳細資訊,請參閱評估您的資源。
-或-
建立自訂 AWS Config 規則,其中包含可將您的堆疊排除在評估之外的佈建。如需 AWS Config 規則範例,請參閱 AWS Config 規則資料儲存器和 RDKlib。
若要解決 DetectStackDrift 的可用性導致的錯誤:
- 再次評估您的 AWS Config 規則。
**注意:**例如,您可以為角色的 Amazon Resource Name (ARN) 附加 config.amazonaws.com 受信任許可和 ReadOnlyAccess(AWS Managed) 政策許可,該名稱在所需的規則參數 cloudformationRoleArn 中提供。如需詳細資訊,請參閱偵測漂移時的注意事項。
-
在您的 CloudFormation 堆疊上執行漂移偵測。
-
透過 AWS Config 規則執行評估。
設定正確許可
如果所需 cloudformationRoleArn 參數的 AWS Identity and Access Management (IAM) 角色沒有 DetectStackDrift API、DetectStackResourceDrift API 或其他必需的服務許可,您就會收到許可錯誤。
若要解決此錯誤,請為您的 IAM 角色編輯信任政策。您必須為 cloudformationRoleArn 附加 config.amazonaws.com 和 ReadOnlyAccess(AWS Managed) 許可。
相關資訊
CloudFormation 研討會:漂移偵測實驗室