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 la limitazione non genera un messaggio di errore quando dovrebbe, il problema potrebbe essere dovuto a uno o più dei seguenti fattori:

  • La raccolta di norme è configurata correttamente? Verifica che la tua raccolta di norme contenga una directory policies/constraints contenente la limitazione che prevedi possa causare una violazione.
  • La risorsa Terraform che contiene la violazione è 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 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 della limitazione. Dovrebbe essere simile a questo: GCPAppengineLocationConstraintV1
    2. Cerca nella directory policies/templates un criterio con 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". Si tratta del tipo di risorsa CAI di destinazione del vincolo.
    4. Assicurati che il tipo di asset CAI sia presente nell'elenco delle risorse supportate.

Perché ricevo l'errore che indica che non è definito alcun progetto?

L'ascendenza della risorsa viene utilizzata per creare un nome dell'asset CAI accurato. Se gcloud beta terraform vet non riesce a determinare automaticamente l'ascendenza di un asset CAI, restituirà 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.