Risolvere i problemi relativi a gcloud beta terraform vet

Perché una violazione che mi aspettavo non genera un errore?

Se testi la logica di convalida e scopri che il vincolo non genera un errore quando dovrebbe, la causa potrebbe essere una o più delle seguenti situazioni:

  • La tua libreria di criteri è configurata correttamente? Verifica che la libreria dei criteri contenga una directory policies/constraints, che contiene il vincolo che prevedi causi una violazione.
  • La risorsa Terraform che contiene la violazione è una risorsa supportata? gcloud beta terraform vet può verificare la presenza di violazioni solo per le risorse supportate nella sua versione. Esegui di nuovo il comando con --verbosity=debug e cerca un messaggio come: unsupported resource: google_resource_name. In alternativa, puoi verificare se la tua risorsa è nell'elenco delle risorse supportate.
  • Il tuo vincolo ha come target la risorsa Terraform corretta?

    1. Controlla il campo kind del vincolo. Dovrebbe essere qualcosa del tipo: GCPAppengineLocationConstraintV1
    2. Cerca nella directory policies/templates un criterio che abbia lo stesso valore per spec.crd.spec.names.kind
    3. Nel campo rego, cerca qualcosa del tipo: asset.asset_type == "appengine.googleapis.com/Application". Questo è il tipo di asset CAI che il vincolo ha come target.
    4. Assicurati che il tipo di asset CAI sia nell'elenco delle risorse supportate.

Perché viene visualizzato un errore che mi informa che non è stato definito alcun progetto?

L'origine delle risorse viene utilizzata per creare un nome preciso dell'asset CAI. Se gcloud beta terraform vet non riesce a determinare automaticamente la discendenza di un asset CAI, restituirà un errore che dice: project: required field is not set. Puoi fornire un progetto predefinito con il flag --project o impostandone uno utilizzando gcloud config.

Perché viene visualizzato il messaggio di errore getting resource ancestry for project PROJECT_ID: googleapi: Error 403: The caller does not have permission, forbidden?

Esegui il comando con --verbosity=debug e cerca un messaggio come Terraform is using this identity:. Deve essere seguito da un indirizzo email, ovvero l'account utilizzato per le richieste API.