fastly-domain-v1-activation

Par divinevideo · divine-mobile

Corriger les erreurs 500 "Fastly error: unknown domain" lorsque les domaines personnalisés renvoient "Domain Not Found" malgré leur création via le CLI domain-v1. À utiliser quand : (1) `fastly domain-v1 create` réussit mais le domaine renvoie une 500, (2) le domaine affiche `activated:false` dans la réponse API, (3) l'API de domaine classique renvoie une erreur "deprecated", (4) le domaine personnalisé fonctionne sur edgecompute.app mais pas sur votre domaine. Couvre la configuration des domaines Fastly Compute après septembre 2025.

npx skills add https://github.com/divinevideo/divine-mobile --skill fastly-domain-v1-activation

Activation Fastly Domain-v1 pour les services Compute

Problème

Après création d'un domaine personnalisé avec fastly domain-v1 create --fqdn example.com --service-id XXX, le domaine retourne une erreur 500 : « Fastly error: unknown domain: example.com. Please check that this domain has been added to a service. » L'URL edgecompute.app fonctionne correctement.

Contexte / Conditions de déclenchement

  • L'API des domaines classiques retourne : « The classic domains APIs are deprecated. Please use the domain management API »
  • fastly domain-v1 create réussit avec domain-id et service-id
  • La requête HTTP au domaine personnalisé retourne 500 « Domain Not Found »
  • La vérification du domaine via API affiche "activated": false, "verified": false
  • Le domaine edgecompute.app généré automatiquement fonctionne correctement

Solution

Étape 1 : Créer le domaine (s'il n'existe pas déjà)

fastly domain-v1 create --fqdn example.com --service-id YOUR_SERVICE_ID

Étape 2 : Créer une souscription TLS pour HTTPS

fastly tls-subscription create --domain example.com

Étape 3 : Obtenir les exigences de configuration DNS

curl -s -H "Fastly-Key: $(fastly profile token)" \
  "https://api.fastly.com/tls/subscriptions/SUBSCRIPTION_ID?include=tls_authorizations" | jq

Recherchez le tableau challenges dans la réponse. Vous verrez des options comme :

  • managed-http-a : Enregistrements A pointant vers les IPs Fastly (utilisez pour les domaines apex)
  • managed-http-cname : CNAME vers x.sni.global.fastly.net (utilisez pour les sous-domaines)
  • managed-dns : CNAME du défi ACME pour _acme-challenge.example.com

Étape 4 : Configurer DNS

Pour les domaines apex, ajoutez des enregistrements A :

example.com → 151.101.1.242
example.com → 151.101.65.242
example.com → 151.101.129.242
example.com → 151.101.193.242

Pour les sous-domaines, utilisez CNAME :

www.example.com → x.sni.global.fastly.net

Étape 5 : Attendre l'activation automatique

Une fois la propagation DNS effectuée, Fastly active automatiquement :

  1. Vérifie la propriété du domaine via défi HTTP
  2. Définit verified: true
  3. Définit activated: true
  4. Émet le certificat TLS (l'état passe de « pending » à « issued »)

Cela se produit généralement entre 1 et 5 minutes après la propagation DNS.

Étape 6 : Vérifier le statut d'activation

# Vérifier le statut du domaine
curl -s -H "Fastly-Key: $(fastly profile token)" \
  "https://api.fastly.com/domain-management/v1/domains/DOMAIN_ID" | jq

# Doit afficher :
# "activated": true,
# "verified": true

# Vérifier le statut TLS
fastly tls-subscription describe --id SUBSCRIPTION_ID
# L'état doit être « issued »

Vérification

# Tester HTTP (doit rediriger vers HTTPS)
curl -I http://example.com
# Attendu : 308 Permanent Redirect vers https://

# Tester HTTPS
curl -s https://example.com | head -20
# Attendu : Votre contenu du site

Exemple

# 1. Créer un magasin KV et le lier au service
fastly kv-store create --name my-content
fastly resource-link create --resource-id KV_STORE_ID --service-id SERVICE_ID --version latest --autoclone

# 2. Compiler et déployer
fastly compute publish

# 3. Ajouter un domaine personnalisé
fastly domain-v1 create --fqdn mysite.com --service-id SERVICE_ID
# Résultat : Created domain 'mysite.com' (domain-id: ABC123, service-id: XYZ789)

# 4. Configurer TLS
fastly tls-subscription create --domain mysite.com
# Résultat : Created TLS Subscription 'SUB123' (Authority: certainly, Common Name: mysite.com)

# 5. Configurer DNS avec des enregistrements A (apex) ou CNAME (sous-domaine)
# 6. Attendre ~2-5 minutes pour la vérification
# 7. Le site est en ligne à https://mysite.com

Remarques

  • Post-septembre 2025 : La commande fastly domain create (API classique) est dépréciée. Utilisez fastly domain-v1 à la place.
  • Pas d'activation manuelle : Contrairement aux domaines classiques, les domaines domain-v1 s'activent automatiquement après vérification DNS. Il n'y a pas d'appel API « activate » explicite.
  • Indépendance de la version du service : Domain-v1 crée des « domaines sans version » qui ne sont pas liés à une version de service spécifique. Vous n'avez pas besoin de cloner/activer des versions pour ajouter des domaines.
  • TLS est séparé : La création du domaine et la gestion du certificat TLS sont des opérations distinctes. Vous pouvez avoir un domaine sans TLS (HTTP uniquement) mais la plupart des configurations veulent les deux.
  • Les IPs Fastly sont globales : Les IPs d'enregistrement A (151.101.x.242) sont les adresses anycast de Fastly et routent vers le nœud edge le plus proche.

Références

Skills similaires