fastly-compute-backend-production-setup

Par divinevideo · divine-mobile

Corrigez les erreurs « Requested backend named 'X' does not exist » ou les erreurs d'alerte TLS dans Fastly Compute@Edge. À utiliser quand : (1) le backend fonctionne en local mais échoue en production avec « backend does not exist », (2) des erreurs « TLS alert received (alert_id=0) » surviennent lors d'appels vers des API externes depuis Fastly, (3) les backends définis dans `fastly.toml` ne sont pas disponibles après le déploiement. La section `[[backends]]` de `fastly.toml` ne s'applique que lors de la création initiale du service — les services existants nécessitent l'ajout des backends via la CLI ou l'API avec une configuration SSL/SNI appropriée.

npx skills add https://github.com/divinevideo/divine-mobile --skill fastly-compute-backend-production-setup

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 serve localement
  • fastly.toml a 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

  1. Vérifiez les logs avec fastly log-tail --service-id YOUR_SERVICE_ID
  2. Effectuez une requête qui utilise le backend
  3. 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 publish cré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 --autoclone est 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 service
  • TLS alert received (alert_id=0) - Configuration SNI hostname manquante
  • Mandatory SSL cert checks require specifying cert hostname - ssl-cert-hostname manquant

Références

Skills similaires