Configuration de production pour Fastly Compute Backend
Problème
Les backends définis dans fastly.toml fonctionnent lors du développement local avec fastly compute serve
mais retournent des erreurs « Requested backend named 'X' does not exist » en production après un déploiement
avec fastly compute publish.
Contexte / Conditions déclenchantes
- Erreur :
Requested backend named 'funnelcake' does not exist - Erreur :
TLS alert received (alert_id=0)lors de la connexion à des backends HTTPS - Le backend fonctionne avec
fastly compute servelocalement fastly.tomla une section[[backends]]correctement configurée- Le service a été créé avant l'ajout du backend à fastly.toml
Cause racine
La section [[backends]] dans fastly.toml n'est traitée que lors de la création initiale du service
via la configuration [setup]. Une fois qu'un service existe, les modifications des backends dans fastly.toml
sont ignorées - vous devez ajouter/modifier les backends via la CLI Fastly ou l'API.
Selon la sortie de la CLI Fastly :
INFO: Processing of the fastly.toml [setup] configuration happens only for a new service. Once a service is created, any further changes to the service or its resources must be made manually.
Solution
Étape 1 : Créer le backend via CLI
fastly backend create \
--service-id YOUR_SERVICE_ID \
--version active \
--autoclone \
--name backend-name \
--address api.example.com \
--port 443 \
--override-host api.example.com \
--use-ssl \
--ssl-cert-hostname api.example.com \
--ssl-sni-hostname api.example.com
Flags clés :
--autoclone: Crée automatiquement une nouvelle version--ssl-cert-hostname: Requis pour la validation du certificat SSL--ssl-sni-hostname: Requis pour TLS SNI (corrige les erreurs alert_id=0)
Étape 2 : Activer la nouvelle version
fastly service-version activate --service-id YOUR_SERVICE_ID --version VERSION_NUMBER
Étape 3 : Vérifier que le backend existe
fastly backend list --service-id YOUR_SERVICE_ID --version active
Étape 4 : Redéployer votre code
Après l'ajout du backend, redéployez pour vous assurer que le code et le backend sont dans la même version :
fastly compute publish
Ensuite, vérifiez que les backends existent toujours dans la nouvelle version :
fastly backend list --service-id YOUR_SERVICE_ID --version active
Vérification
- Vérifiez les logs avec
fastly log-tail --service-id YOUR_SERVICE_ID - Effectuez une requête qui utilise le backend
- Confirmez l'absence d'erreurs « backend does not exist » ou de TLS dans les logs
Exemple
Étant donné ce fastly.toml (qui fonctionne localement mais pas en production) :
[[backends]]
name = "funnelcake"
address = "relay.dvines.org"
port = 443
override_host = "relay.dvines.org"
use_ssl = true
Ajoutez le backend à un service existant :
# Créer le backend avec SSL correctement configuré
fastly backend create \
--service-id WfOrPTFYmwwxRvqrfralLA \
--version active \
--autoclone \
--name funnelcake \
--address relay.dvines.org \
--port 443 \
--override-host relay.dvines.org \
--use-ssl \
--ssl-cert-hostname relay.dvines.org \
--ssl-sni-hostname relay.dvines.org
# Activer la nouvelle version
fastly service-version activate --service-id WfOrPTFYmwwxRvqrfralLA --version 49
# Redéployer le code
fastly compute publish
Notes
- Chaque
fastly compute publishcrée une nouvelle version qui hérite les backends de la version active précédente - Si vous avez besoin de backends différents pour différents environnements, envisagez d'utiliser des variables d'environnement ou des services séparés
- Le flag
--autocloneest essentiel - vous ne pouvez pas modifier directement une version active - Les noms des backends dans votre code doivent correspondre exactement au paramètre
--name
Erreurs associées
Requested backend named 'X' does not exist- Backend non créé dans le serviceTLS alert received (alert_id=0)- Configuration SNI hostname manquanteMandatory SSL cert checks require specifying cert hostname- ssl-cert-hostname manquant