Skip to main content
Les exemples qui omettent Sandbox.run(auth=...) utilisent un jeton d’accès à l’API CoreWeave provenant de CWSANDBOX_API_KEY. Pour l’authentification par clé API Forge, suivez Premiers pas et transmettez les AuthHeaders obtenus à l’opération.
Cette page explique le fonctionnement des points de terminaison publics, comment en déclarer un lors de la création d’une sandbox et comment s’y connecter. Un point de terminaison public attribue à un service exécuté dans une sandbox une adresse accessible aux clients depuis Internet. Vous le demandez lors de la création de la sandbox, et la plateforme provisionne l’acheminement, le DNS et l’accès réseau nécessaires. L’adresse reste attribuée à la sandbox pendant toute la durée de son exécution. Il existe deux types de points de terminaison, qui se distinguent par l’endroit où s’effectue la terminaison TLS :
  • HTTPS : la plateforme assure la terminaison TLS en périphérie avec un certificat qu’elle provisionne et renouvelle, puis transmet la requête à votre port en HTTP non chiffré.
  • TLS passthrough : la plateforme achemine la connexion vers votre port au moyen de Server Name Indication (SNI), sans la déchiffrer. Votre charge de travail assure elle-même la terminaison TLS et gère ses propres certificats.
Choisissez TLS passthrough lorsque la charge de travail doit détenir elle-même la clé privée : TLS mutuel, client qui épingle un certificat ou protocole autre que HTTP.

Comparer les deux types

Les deux types sont exposés sur Internet. La plateforme n’authentifie pas les appelants ; il incombe donc au service situé derrière le point de terminaison de gérer son propre contrôle d’accès.

Déclarer un point de terminaison

Déclarez les points de terminaison dans la liste services lors de la création de la sandbox. Les ports restent fixes pendant toute la durée de vie de la sandbox, et aucun appel ne permet d’exposer un port sur une sandbox déjà en cours d’exécution. Pour attribuer un point de terminaison à un service, définissez sur celui-ci visibility=PUBLIC ainsi qu’une valeur endpoint. Un service sans valeur endpoint écoute sur son port à l’intérieur de la sandbox, mais n’obtient aucune adresse publique. Pour un point de terminaison HTTPS, définissez kind=EndpointKind.HTTPS et auth=EndpointAuth.OPEN :
Pour un point de terminaison en mode TLS passthrough, définissez kind=EndpointKind.TLS_PASSTHROUGH et laissez auth non défini. La commande que vous exécutez doit assurer elle-même la terminaison TLS sur le port, car la plateforme transfère la connexion sans la déchiffrer :
Une même sandbox peut combiner les deux types. Les règles suivantes s’appliquent à chaque entrée services :
  • Les ports doivent être uniques, tout comme les noms que vous définissez. Les noms correspondent aux noms de ports de conteneur Kubernetes, qui doivent être uniques.
  • visibility doit valoir PUBLIC lorsque endpoint est défini, et ne doit pas être défini dans le cas contraire. La visibilité seule ne crée ni point de terminaison ni adresse.
  • protocol doit valoir TCP ou ne pas être défini. La plateforme rejette les points de terminaison UDP et SCTP.
  • Omettez auth et request_timeout_seconds en mode TLS passthrough. Passez None plutôt que 0 : une valeur 0 est considérée comme définie, et la plateforme rejette alors l’appel de création.
  • Le nombre de services qu’une sandbox peut déclarer est plafonné par une limite de la plateforme. Ce plafond est défini par les opérateurs et généralement fixé à cinq dans les déploiements.

Lire l’adresse attribuée

La plateforme attribue l’adresse. Vous ne pouvez pas choisir le nom d’hôte ni fournir votre propre domaine. Récupérez-la depuis la sandbox plutôt que de la construire vous-même, car la zone DNS varie d’un cluster à l’autre et ne fait pas partie du contrat d’API. Les adresses en TLS passthrough sont fournies dans service_addresses au format host:port, et les URL HTTPS dans service_urls. Les deux listes restent distinctes : un point de terminaison TLS n’apparaît jamais dans service_urls.
Vous devriez obtenir une sortie semblable à celle-ci :
Le port annoncé est le port d’écoute TLS de la plateforme, et non le port auquel votre processus se lie dans la sandbox. Dans cet exemple, la charge de travail écoute sur 8443 et les clients se connectent à 443. Les deux types d’adresses deviennent lisibles à des moments différents du démarrage de la sandbox :
  • Une adresse TLS passthrough est attribuée dès la création de la sandbox : elle figure donc dans la réponse de création et reste disponible tant que la sandbox est en cours de création ou d’exécution.
  • Une URL HTTPS reste vide tant que la sandbox n’a pas atteint l’état RUNNING et que sa route n’a pas de nom d’hôte. Appelez get_status() en boucle jusqu’à ce que l’URL apparaisse ou que votre propre délai expire.
  • Dans les deux cas, cela ne signifie pas que l’application est prête à servir. La plateforme n’attend pas que votre processus se lie au port pour signaler que la sandbox est en cours d’exécution : prévoyez donc une nouvelle tentative pour votre première connexion.
La plateforme signale les points de terminaison tant qu’une sandbox est en cours de création ou d’exécution, et les efface dans tous les autres états. Une sandbox en pause ou terminée n’a aucun point de terminaison joignable.

Se connecter à un point de terminaison TLS passthrough

Comme la plateforme ne déchiffre pas la connexion, le certificat reçu par un client est celui que présente votre charge de travail. Cela a deux conséquences pour le client :
  • Envoyez l’hôte du point de terminaison comme nom de serveur SNI. La plateforme achemine le trafic uniquement en fonction du SNI : une connexion qui l’omet, ou qui transmet un autre nom, n’atteint pas votre sandbox.
  • Faites confiance au certificat de la charge de travail. Le nom d’hôte du point de terminaison est attribué par la plateforme ; un certificat que vous émettez vous-même ne lui correspond donc pas, sauf si vous l’émettez pour ce nom d’hôte. Configurez le client pour qu’il fasse confiance à votre propre autorité de certification, ou épinglez le certificat.
Le client suivant envoie l’hôte du point de terminaison comme SNI tout en se connectant à l’adresse annoncée. Remplacez [ENDPOINT-ADDRESS] par l’adresse lue dans service_addresses, et [PATH-TO-CA-CERT] par le chemin d’accès à l’autorité de certification qui a signé le certificat de votre charge de travail :

Durée de vie du point de terminaison

Un point de terminaison existe aussi longtemps que la sandbox à laquelle il appartient :
  • Il est lié à la sandbox, et non à un Pod. Si le Pod sous-jacent redémarre, l’adresse ne change pas.
  • La suppression de la sandbox entraîne celle du point de terminaison. L’adresse n’est pas transférée vers une autre sandbox, et toute nouvelle sandbox reçoit une nouvelle adresse.
  • Rien n’est réservé d’une sandbox à l’autre. Vous ne pouvez pas conserver un nom d’hôte pour le réutiliser.

Résoudre les échecs de création

Si aucun exécuteur de votre flotte ne prend en charge le type de point de terminaison demandé, l’appel de création échoue plutôt que de démarrer une sandbox en abandonnant silencieusement le point de terminaison.
Dernière modification le 15 octobre 2026