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, ciò potrebbe essere dovuto a uno o più dei seguenti motivi:

  • La libreria delle norme è configurata correttamente? Verifica che la tua libreria di norme 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 le violazioni solo per le risorse supportate nella sua versione. Esegui di nuovo il comando con --verbosity=debug e cerca un messaggio simile a: unsupported resource: google_resource_name. In alternativa, puoi controllare se la risorsa è presente nell'elenco delle risorse supportate.
  • Il vincolo ha come target la risorsa Terraform corretta?

    1. Controlla il campo kind del vincolo. Dovrebbe essere simile a questo: 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 di simile a: asset.asset_type == "appengine.googleapis.com/Application". Questo è il tipo di asset CAI a cui è destinato il vincolo.
    4. Assicurati che il tipo di asset CAI sia presente nell'elenco delle risorse supportate.

Perché ricevo un errore che indica che non è stato definito alcun progetto?

La gerarchia delle risorse viene utilizzata per creare un nome asset CAI accurato. Se gcloud beta terraform vet non riesce a determinare automaticamente la discendenza di un asset CAI, restituisce un errore che indica: project: required field is not set. Puoi fornire un progetto predefinito con il flag --project o impostarne uno utilizzando gcloud config.

Perché ricevo l'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.