Skip to main content
Les exemples qui omettent auth utilisent un jeton d’accès à l’API CoreWeave fourni par CWSANDBOX_API_KEY. Pour vous authentifier avec une clé API Forge, suivez la page Premiers pas et transmettez les AuthHeaders obtenus à l’opération.Les exemples d’API HTTP utilisent une clé API Forge définie dans FORGE_API_KEY. Pour utiliser plutôt un jeton d’accès à l’API CoreWeave, définissez CWSANDBOX_API_KEY sur ce jeton et remplacez -H "x-wandb-api-key: $FORGE_API_KEY" par -H "Authorization: Bearer $CWSANDBOX_API_KEY" dans chaque requête. Utilisez les identifiants d’authentification du compte propriétaire du sandbox et de ses instantanés.
Les instantanés du système de fichiers (FSS) permettent à un sandbox d’écrire dans un répertoire de travail local, de capturer ce répertoire dans le stockage d’objets sous forme d’instantané immuable, puis de le restaurer ultérieurement dans de nouveaux sandboxes. Utilisez les FSS pour suspendre et reprendre le système de fichiers d’un sandbox d’un run à l’autre, ou pour dupliquer un instantané dans plusieurs sandboxes qui évoluent ensuite indépendamment les uns des autres.

Fonctionnement

Une sandbox avec FSS monte un système de fichiers temporaire accessible en écriture à l’emplacement de votre choix. L’exécuteur s’appuie sur un EmptyDir pour ce montage, et non sur un montage direct du stockage d’objets. Les opérations d’instantané et de restauration copient une archive tar entre ce système de fichiers local et un bucket de stockage d’objets limité à l’organisation. Chaque instantané est une ressource FileSystemSnapshot identifiée par un fileSystemSnapshotId attribué par le serveur. Les instantanés se caractérisent par trois propriétés :
  • Immuable : la création d’un instantané écrit une seule archive. La restauration d’un instantané ne modifie jamais l’instantané source ; une restauration ultérieure retrouve donc toujours les octets d’origine.
  • Limité à l’organisation : vous ne pouvez restaurer que les instantanés créés dans votre propre organisation. Un ID d’instantané provenant d’une autre organisation est considéré comme introuvable.
  • Cycle de vie indépendant : les instantanés sont gérés séparément des bacs à sable. La suppression d’une sandbox ne supprime pas ses instantanés, et la suppression d’un instantané n’a aucune incidence sur les bacs à sable déjà lancés à partir de celui-ci.
Par défaut, CoreWeave provisionne et gère le bucket de stockage d’objets qui contient vos instantanés. Pour stocker plutôt vos instantanés dans un bucket que vous possédez et contrôlez, consultez Utilisez votre propre bucket, qui détaille les prérequis relatifs au compte CoreWeave et au bucket.

Démarrer un sandbox avec un montage d’instantané

Un sandbox peut démarrer à partir de l’une de ces deux sources de système de fichiers : un système de fichiers temporaire, neuf et vide, ou la restauration d’un instantané existant.

Système de fichiers temporaire vierge

Un système de fichiers temporaire vierge est vide au démarrage et peut faire l’objet d’un instantané par la suite. Utilisez-le pour les flux de travail qui nécessitent un état local accessible en écriture pendant l’exécution.

Restaurer à partir d’un instantané

Une restauration initialise le système de fichiers à partir d’un instantané existant. Indiquez l’ID de l’instantané dans la source d’instantané du point de montage.
Un instantané doit être à l’état READY pour pouvoir être restauré. La restauration d’un instantané encore à l’état CREATING échoue. Consultez Statut et échecs des instantanés.

Prendre un instantané

Vous pouvez capturer un instantané de deux façons : à l’arrêt, lorsqu’une sandbox s’éteint, ou en cours d’exécution, depuis une sandbox active.

Instantané à l’arrêt

Pour conserver le système de fichiers d’une sandbox lors de son arrêt, arrêtez-la en activant l’instantané à l’arrêt. C’est la méthode à suivre pour suspendre puis reprendre une sandbox : arrêtez-la avec un instantané, puis démarrez ultérieurement une nouvelle sandbox qui le restaure.

Instantané en cours d’exécution

Un instantané en cours d’exécution capture une sandbox active sans l’arrêter. La sandbox continue ensuite de s’exécuter.
Par défaut, snapshot() attend que l’instantané soit READY, puis renvoie son ID.

Créer une branche à partir d’un instantané

Un même instantané peut être restauré dans plusieurs sandbox. Comme chaque instantané est immuable, les sandbox restaurées démarrent à partir d’octets identiques, puis divergent au fil de leurs écritures.
  1. Créez un instantané READY, soit avec un instantané à l’arrêt, soit avec un instantané en cours d’exécution.
  2. Démarrez la sandbox A en définissant fileSystemSnapshotId sur cet instantané.
  3. Démarrez la sandbox B avec le même fileSystemSnapshotId.
  4. Les écritures effectuées dans la sandbox A et dans la sandbox B divergent indépendamment les unes des autres. L’instantané source n’est pas modifié : une restauration ultérieure à partir du même ID retrouve donc l’instantané original, et non les écritures de l’une ou l’autre branche.

Gérer les instantanés

Listez, récupérez et supprimez les instantanés indépendamment des bacs à sable qui les ont créés.
list_snapshots(), get_snapshot() et delete_snapshot() acceptent également un objet AuthHeaders via le paramètre auth.

Statut des instantanés et échecs

Les instantanés sont créés de manière asynchrone. Une requête d’instantané peut réussir et renvoyer un fileSystemSnapshotId alors que l’archive est encore en cours d’écriture, puis l’instantané peut échouer par la suite. Cela se produit le plus souvent lorsque waitForReady vaut false, ou lorsque le délai d’expiration côté client est atteint alors que l’exécuteur est encore en train d’archiver. Pour suivre la progression, récupérez l’instantané et consultez deux champs :
  • status : l’état du cycle de vie. Les valeurs finales sont READY et FAILED. L’API HTTP renvoie la forme entièrement qualifiée, par exemple FILE_SYSTEM_SNAPSHOT_STATUS_READY.
  • statusReason : renseigné lorsque status vaut FAILED, pour indiquer la cause de l’échec.
Interrogez GetFileSystemSnapshot jusqu’à ce que l’instantané atteigne l’état READY avant de le restaurer. Les méthodes snapshot() et get_snapshot() du client Python se chargent de cette interrogation pour vous lorsque vous attendez le résultat. Le tableau suivant répertorie les causes d’échec courantes et la marche à suivre pour chacune. Si un exécuteur termine le téléversement de l’archive sans parvenir à enregistrer le résultat, la ligne de l’instantané peut passer à l’état FAILED alors même qu’un objet existe dans le bucket. Dans ce cas, relancez l’instantané. En cas d’échec asynchrone, la plateforme émet également un événement sandbox.file_system_snapshot.async_fail, ce qui permet aux systèmes de notification en aval de réagir aux instantanés qui échouent après le retour de l’appel initial.

Limitations

La version 1 de FSS fournit un stockage local temporaire adossé à des instantanés. Il ne s’agit pas d’un système de fichiers partagé, et il ne permet pas de montages actifs accessibles en écriture par plusieurs clients. Pendant leur exécution, les bacs à sable ne peuvent ni lire ni écrire dans les systèmes de fichiers des autres bacs à sable. Ils ne partagent leur état que par la création et la restauration d’instantanés.

Exemple avec le SDK

Pour un exemple Python complet et exécutable qui démarre une sandbox, réalise un instantané en cours d’exécution, le duplique, capture un instantané à l’arrêt et gère les instantanés, consultez file_system_snapshots.py dans le dépôt cwsandbox-client.
Dernière modification le 15 octobre 2026