排解 gcloud beta terraform vet 問題

為什麼我預期會發生的違規行為沒有擲回錯誤?

如果您測試驗證邏輯,發現限制條件應該會擲回錯誤,但實際並未發生,可能是下列一或多項原因所致:

  • 政策庫是否設定正確?確認政策程式庫包含 policies/constraints 目錄,其中含有您預期會導致違規的限制。
  • 包含違規事項的 Terraform 資源是否為支援的資源?gcloud beta terraform vet 只能檢查其版本支援的資源是否違規。使用 --verbosity=debug 重新執行指令,並尋找類似 unsupported resource: google_resource_name 的訊息。或者,你也可以查看支援的資源清單,確認資源是否在清單中。
  • 限制是否指定正確的 Terraform 資源?

    1. 檢查限制的 kind 欄位。如下所示: GCPAppengineLocationConstraintV1
    2. policies/templates 目錄中搜尋 spec.crd.spec.names.kind 值相同的政策
    3. rego 欄位中,尋找類似 asset.asset_type == "appengine.googleapis.com/Application" 的內容。這是限制條件的目標 CAI 資產類型
    4. 請確認 CAI 資產類型位於支援的資源清單中。

為什麼我會收到錯誤訊息,指出未定義任何專案?

資源沿襲用於建構準確的 CAI 資產名稱。如果 gcloud beta terraform vet 無法自動判斷 CAI 資產的沿革,系統會傳回錯誤訊息:project: required field is not set。您可以使用 --project 標記提供預設專案,或使用 gcloud config 設定專案。

為什麼我會收到「getting resource ancestry for project PROJECT_ID: googleapi: Error 403: The caller does not have permission, forbidden」錯誤訊息?

使用 --verbosity=debug 執行指令,並尋找類似 Terraform is using this identity: 的訊息。後面應接續電子郵件地址,也就是用於 API 要求的帳戶。