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?
- Controlla il campo
kind
della limitazione. Dovrebbe essere simile a questo:GCPAppengineLocationConstraintV1
- Cerca nella directory
policies/templates
un criterio con lo stesso valore perspec.crd.spec.names.kind
- 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. - Assicurati che il tipo di asset CAI sia presente nell'elenco delle risorse supportate.
- Controlla il campo
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.
- Se non è presente alcun indirizzo email, assicurati che l'autenticazione funzioni correttamente.
- Se è presente un indirizzo email, ma non è l'account di servizio che volevi rubare l'identità, assicurati che la simulazione dell'identità dell'account di servizio sia configurata correttamente.
- Se viene visualizzato l'indirizzo email corretto, assicurati che disponga delle seguenti autorizzazioni per il progetto:
getIamPolicy
resourcemanager.projects.get