Saltar a contenido

Bootstrap GCP: Proyecto FarmAPI + Google Geocoding API Key (dev/local)

Objetivo: habilitar el fallback de geocoding por Google (cuando Nominatim no resuelve) y poder usarlo en local con Docker. Estos pasos se realizan en la GCP Console con una cuenta que tenga permisos para crear proyectos, habilitar APIs y gestionar credenciales.

1) Crear proyecto

  1. GCP Console -> IAM & Admin -> Manage resources -> Create Project
  2. Name: FarmAPI
  3. Project ID: farmaapi (si no esta disponible: farmaapi-<sufijo>)

2) Billing + control de coste

  1. Billing -> vincular el proyecto a una billing account activa
  2. (Recomendado) Budgets & alerts: crear un budget con alerta por email

3) Habilitar APIs

En APIs & Services -> Library habilitar: 1. Geocoding API (Google Maps Platform) 2. (Opcional para despliegue futuro del stack completo) Secret Manager, Cloud Run, Cloud SQL, Cloud Storage, Workflows, Scheduler, Tasks, Logging, Monitoring.

4) Crear API key (solo Geocoding API)

  1. APIs & Services -> Credentials -> Create credentials -> API key
  2. Nombre: farmaapi-geocoding-dev
  3. API restrictions: Restrict key y seleccionar solo Geocoding API
  4. Application restrictions:
  5. Para local/dev: None (server-to-server)
  6. Para prod (hardening): restringir por IP (requiere NAT/IP estatica) o por entorno controlado

5) Usarla en local (Docker)

El servicio lee la key via SecretProvider con override por env var: - Secret name: maps_geocoding_api_key - Env var override: MAPS_GEOCODING_API_KEY

Pasos: 1. Edita .env.docker: - MAPS_GEOCODING_ENABLED=true 2. Exporta la key en tu shell (no la metas en git): - export MAPS_GEOCODING_API_KEY="<TU_API_KEY>" 3. Reinicia el stack: - docker compose up -d --build farmaapi coordinate-worker 4. Verifica en logs del worker que baja missing_coords: - docker logs -f farmaapi-coordinate-worker

5bis) (Recomendado en prod) Guardarla en Secret Manager

  1. GCP Console -> Security -> Secret Manager -> Create secret
  2. Name: maps_geocoding_api_key
  3. Secret value: pega tu API key
  4. Replication: Automatic

IAM (runtime): - Concede al service account del runtime el rol Secret Manager Secret Accessor sobre ese secreto.

6) Señales de que esta funcionando

En logs del worker (tick_done): - due.updated o missing.updated > 0 - totals.missing_coords va bajando

En el admin (/admin): - Panel Geocoding health -> missing_coords_total disminuye - Menos items en geocode_tasks con status retry/manual