Pourquoi un problème de non-respect auquel je m'attendais ne génère-t-il pas d'erreur ?
Si vous testez votre logique de validation et constatez que la contrainte ne génère pas d'erreur alors qu'elle le devrait, cela peut être dû à un ou plusieurs des éléments suivants :
- Votre bibliothèque de règles est-elle correctement configurée ? Vérifiez que votre bibliothèque de règles contient un répertoire
policies/constraints
dans lequel se trouve la contrainte devant générer un cas de non-respect. - La ressource Terraform qui contient le problème de non-respect est-elle une ressource acceptée ?
gcloud beta terraform vet
ne peut vérifier les non-respects que pour les ressources compatibles avec sa version. Exécutez à nouveau la commande avec--verbosity=debug
et vérifiez si la sortie contient un message tel que celui-ci :unsupported resource: google_resource_name
. Vous pouvez également vérifier si votre ressource figure dans la liste des ressources compatibles. Votre contrainte cible-t-elle la ressource Terraform appropriée ?
- Vérifiez le champ
kind
de la contrainte. Il doit ressembler à ceci :GCPAppengineLocationConstraintV1
- Dans le répertoire
policies/templates
, recherchez une règle possédant une valeur identique àspec.crd.spec.names.kind
. - Dans le champ
rego
, recherchez une valeur semblable à celle-ci :asset.asset_type == "appengine.googleapis.com/Application"
. Il s'agit du type d'élément CAI ciblé par la contrainte. - Assurez-vous que le type d'élément CAI figure dans la liste des ressources compatibles.
- Vérifiez le champ
Pourquoi une erreur indique-t-elle qu'aucun projet n'est défini ?
L'ancêtre d'une ressource permet de créer un nom d'élément CAI précis. Si gcloud beta terraform vet
ne parvient pas à déterminer automatiquement l'ancêtre d'un élément CAI, il renvoie une erreur indiquant : project: required field is not set
. Vous pouvez spécifier un projet par défaut avec l'option --project
ou en définir un à l'aide de gcloud config
.
Pourquoi une erreur s'affiche-t-elle indiquant getting resource ancestry for project PROJECT_ID: googleapi: Error 403: The caller does not have permission, forbidden
?
Exécutez la commande avec --verbosity=debug
et recherchez un message tel que Terraform
is using this identity:
. Il doit être suivi d'une adresse e-mail, qui est le compte utilisé pour les requêtes API.
- En l'absence d'adresse e-mail, assurez-vous que votre authentification fonctionne correctement.
- S'il existe une adresse e-mail, mais qu'il ne s'agit pas du compte de service dont vous souhaitez emprunter l'identité, assurez-vous que l'emprunt d'identité de votre compte de service est correctement configuré.
- Si la bonne adresse e-mail s'affiche, vérifiez qu'elle dispose des autorisations suivantes pour le projet :
getIamPolicy
resourcemanager.projects.get