Fehlerbehebung bei gcloud beta terraform vet

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 wie unsupported 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?

    1. Prüfen Sie das Feld kind der Einschränkung. Es sollte in etwa Folgendes enthalten: GCPAppengineLocationConstraintV1.
    2. Suchen Sie im Verzeichnis policies/templates nach einer Richtlinie, die den gleichen Wert für spec.crd.spec.names.kind hat.
    3. Suchen Sie im Feld rego nach einem Eintrag wie asset.asset_type == "appengine.googleapis.com/Application". Dies ist der CAI-Asset-Typ, für den die Einschränkung vorgesehen ist.
    4. Der CAI-Asset-Typ muss in der Liste der unterstützten Ressourcen enthalten sein.

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.