Solucionar problemas de gcloud beta terraform vet

¿Por qué no se produce un error cuando se comete una infracción que esperaba?

Si pruebas tu lógica de validación y observas que la restricción no genera un error cuando debería hacerlo, puede deberse a uno o varios de los siguientes motivos:

  • ¿Ha configurado correctamente la biblioteca de políticas? Verifica que tu biblioteca de políticas contenga un directorio policies/constraints, que a su vez contenga la restricción que esperas que provoque una infracción.
  • ¿El recurso de Terraform que contiene la infracción es un recurso admitido? gcloud beta terraform vet solo puede comprobar si hay infracciones en los recursos que se admiten en su versión. Vuelve a ejecutar el comando con --verbosity=debug y busca un mensaje como unsupported resource: google_resource_name. También puedes comprobar si tu recurso está en la lista de recursos admitidos.
  • ¿Tu restricción está orientada al recurso de Terraform correcto?

    1. Consulta el campo kind de la restricción. Debería ser algo parecido a esto: GCPAppengineLocationConstraintV1
    2. Busca en el directorio de policies/templates una política que tenga el mismo valor para spec.crd.spec.names.kind.
    3. En el campo rego, busca algo parecido a asset.asset_type == "appengine.googleapis.com/Application". Este es el tipo de recurso de CAI al que se dirige la restricción.
    4. Asegúrate de que el tipo de recurso de CAI esté en la lista de recursos admitidos.

¿Por qué aparece un error que indica que no se ha definido ningún proyecto?

La ascendencia de los recursos se usa para crear un nombre de recurso de CAI preciso. Si gcloud beta terraform vet no puede determinar automáticamente la ascendencia de un recurso de CAI, devolverá un error que dice: project: required field is not set. Puedes proporcionar un proyecto predeterminado con la marca --project o definir uno con gcloud config.

¿Por qué me aparece el error getting resource ancestry for project PROJECT_ID: googleapi: Error 403: The caller does not have permission, forbidden?

Ejecuta el comando con --verbosity=debug y busca un mensaje como Terraform is using this identity:. Debe ir seguida de una dirección de correo electrónico, que es la cuenta que se usa para las solicitudes a la API.