Warum gibt ein erwarteter Verstoß keinen Fehler aus?
Wenn Sie Ihre Validierungslogik testen und feststellen, dass die Einschränkung keinen Fehler auslöst, obwohl ein Verstoß vorliegt, kann dies an einem oder mehreren der folgenden Gründe liegen:
- Ihre Richtlinienbibliothek ist nicht korrekt eingerichtet. Prüfen Sie, ob Ihre Richtlinienbibliothek ein
policies/constraints
-Verzeichnis mit der Einschränkung enthält, von der Sie erwarten, dass sie den Verstoß auslöst. - Die Terraform-Ressource, die den Verstoß enthält, ist keine unterstützte Ressource. Der
gcloud beta terraform vet
kann nur auf Verstöße für Ressourcen prüfen, die für seine Version unterstützt werden. Führen Sie den Befehl mit--verbosity=debug
noch einmal aus und suchen Sie nach einer Meldung wieunsupported resource: google_resource_name
. Sie können auch prüfen, ob Ihre Ressource in der Liste der unterstützten Ressourcen enthalten ist. Ist Ihre Einschränkung auf die richtige Terraform-Ressource ausgerichtet?
- Prüfen Sie das Feld
kind
der Einschränkung. Es sollte in etwa Folgendes enthalten:GCPAppengineLocationConstraintV1
. - Suchen Sie im Verzeichnis
policies/templates
nach einer Richtlinie, die den gleichen Wert fürspec.crd.spec.names.kind
hat. - Suchen Sie im Feld
rego
nach einem Eintrag wieasset.asset_type == "appengine.googleapis.com/Application"
. Dies ist der CAI-Asset-Typ, für den die Einschränkung vorgesehen ist. - Der CAI-Asset-Typ muss in der Liste der unterstützten Ressourcen enthalten sein.
- Prüfen Sie das Feld
Warum erhalte ich die Fehlermeldung, dass kein Projekt definiert ist?
Für das Erstellen eines exakten CAI-Asset-Namens wird die Ressourcenherkunft verwendet. Wenn gcloud beta terraform vet
die Herkunft für ein CAI-Asset nicht automatisch ermitteln kann, wird ein Fehler wie project: required field is not set
zurückgegeben. Sie können ein Standardprojekt mit dem Flag --project
angeben oder ein Projekt mit gcloud config
festlegen.
Warum erhalte ich die Fehlermeldung getting resource ancestry for project PROJECT_ID: googleapi: Error 403: The caller does not have permission, forbidden
?
Führen Sie den Befehl mit --verbosity=debug
aus und suchen Sie nach einer Nachricht wie Terraform
is using this identity:
. Darauf sollte eine E-Mail-Adresse folgen, die das Konto ist, das für API-Anfragen verwendet wird.
- Wenn keine E-Mail-Adresse vorhanden ist, prüfen Sie, ob Ihre Authentifizierung ordnungsgemäß funktioniert.
- Wenn es eine E-Mail-Adresse gibt, diese aber nicht das Dienstkonto ist, dessen Identität Sie übernehmen möchten, prüfen Sie, ob die Identität des Dienstkontos ordnungsgemäß eingerichtet ist.
- Wenn die richtige E-Mail-Adresse angezeigt wird, prüfen Sie, ob sie die folgenden Berechtigungen für das Projekt hat:
getIamPolicy
resourcemanager.projects.get