fastly-compute-deployment-debugging

Par divinevideo · divine-mobile

Débogage des déploiements Fastly Compute qui semblent réussis mais renvoient des réponses obsolètes ou incorrectes. À utiliser quand : (1) `fastly compute publish` réussit mais la vérification de version affiche l'ancienne version, (2) les nouveaux endpoints renvoient 404 après le déploiement, (3) les requêtes avec cache busting fonctionnent mais les requêtes normales échouent, (4) `fastly domain list` n'affiche pas votre domaine personnalisé. Couvre la propagation en edge, les réponses d'erreur en cache, et les différences d'API de gestion de domaines.

npx skills add https://github.com/divinevideo/divine-mobile --skill fastly-compute-deployment-debugging

Débogage du déploiement Fastly Compute

Problème

Après un déploiement sur Fastly Compute, les requêtes retournent du contenu obsolète ou des 404 alors que :

  • fastly compute publish a signalé une réussite
  • La nouvelle version s'affiche comme « active » dans fastly service-version list
  • Le code est correct et fonctionne localement

Contexte / Conditions déclenchantes

  • L'endpoint de version retourne une ancienne chaîne de version après le déploiement
  • Les nouvelles routes/fonctionnalités retournent 404
  • fastly purge --all ne résout pas le problème
  • Les requêtes avec un cache buster (?v=random) fonctionnent mais pas les requêtes normales
  • fastly domain list n'affiche pas votre domaine personnalisé
  • Différents POPs retournent des résultats différents

Solution

1. Vérifier que le code est réellement déployé

# Vérifier l'URL edgecompute.app directe (contourne la configuration du domaine personnalisé)
curl https://your-service.edgecompute.app/version

# Comparer avec le domaine personnalisé
curl https://your-custom-domain.com/version

Si edgecompute.app fonctionne mais pas le domaine personnalisé, c'est un problème de configuration de domaine.

2. Diagnostiquer les réponses d'erreur en cache

Le problème le plus courant : les 404 sont mis en cache aux POPs edge avant que le nouveau code se propage.

# Tester avec un cache buster
curl "https://your-domain.com/endpoint?bust=$RANDOM"

# Tester sans
curl "https://your-domain.com/endpoint"

Si le cache buster fonctionne mais pas le requête normale = réponse d'erreur en cache.

Solution : Attendez 2-5 minutes pour la propagation complète, puis purgez :

fastly purge --all --service-id YOUR_SERVICE_ID

3. Vérifier la configuration du domaine (deux APIs !)

Fastly dispose de DEUX systèmes de gestion de domaine :

Système Commande CLI Endpoint API
Domaines classiques fastly domain list /service/{id}/version/{ver}/domain
Domaines sans version (non affiché dans CLI) /domain-management/v1/domains

Si fastly domain list n'affiche pas votre domaine, vérifiez l'API sans version :

# Obtenir votre token API
TOKEN=$(fastly profile token)

# Interroger l'API domain-management
curl -s -H "Fastly-Key: $TOKEN" \
  "https://api.fastly.com/domain-management/v1/domains?filter%5Bfqdn%5D=your-domain.com"

Recherchez "activated": true et "verified": true.

4. Forcer une reconstruction complète

Si la mise en cache de la build est soupçonnée :

rm -rf pkg target
fastly compute publish --comment "clean build"

5. Attendre la propagation

Les déploiements Fastly Compute peuvent prendre 2-5 minutes pour se propager à tous les POPs mondiaux. Même après que fastly service-version list affiche la version comme active, certains POPs peuvent encore servir l'ancien code.

Chronologie :

  • Version marquée « active » : ~30 secondes
  • Plupart des POPs mis à jour : ~1-2 minutes
  • Tous les POPs mis à jour : ~3-5 minutes (parfois plus)

6. Vérifier les logs en temps réel

fastly log-tail --service-id YOUR_SERVICE_ID

Faites ensuite une requête et vérifiez qu'elle apparaît. Si aucun log n'apparaît, la requête n'atteint pas votre code Compute (probablement un problème de domaine/routage).

Vérification

Après avoir attendu et purgé :

# Plusieurs requêtes pour frapper différents POPs
for i in 1 2 3 4 5; do
  curl -s "https://your-domain.com/version"
  sleep 1
done

Tous devraient retourner la nouvelle version.

Exemple

Scénario : Code de service de miniatures déployé, mais /hash.jpg retourne 404.

Étapes de débogage :

  1. curl https://service.edgecompute.app/hash.jpg?v=123 → 200 (le code fonctionne !)
  2. curl https://custom-domain.com/hash.jpg → 404 (en cache)
  3. Attendre 3 minutes
  4. fastly purge --all --service-id XXX
  5. curl https://custom-domain.com/hash.jpg → 200 (ça marche !)

Cause racine : Le 404 était en cache à l'edge avant que le nouveau code se propage.

Notes

  • Comptes créés avant septembre 2025 : Peuvent avoir des domaines classiques, les nouveaux comptes utilisent les domaines sans version
  • Pas de panique : Si la vérification de version fonctionne sur edgecompute.app, le code est déployé - attendez simplement
  • Timing de purge : Purgez APRÈS la fin de la propagation, pas immédiatement après le déploiement
  • Variance POP : Différents POPs géographiques peuvent se propager à des vitesses différentes
  • Mise en cache des erreurs : Fastly peut mettre en cache les réponses 404/500 - cela amplifie les problèmes de propagation

Références

Skills similaires