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 publisha 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 --allne résout pas le problème- Les requêtes avec un cache buster (
?v=random) fonctionnent mais pas les requêtes normales fastly domain listn'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 :
curl https://service.edgecompute.app/hash.jpg?v=123→ 200 (le code fonctionne !)curl https://custom-domain.com/hash.jpg→ 404 (en cache)- Attendre 3 minutes
fastly purge --all --service-id XXXcurl 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