Stocker les données dans S3 ou R2
Connectez un stockage objet pour partager artefacts, checkpoints et journaux entre machines.
Créer le transport
Section intitulée « Créer le transport »Installez le SDK AWS à côté d’Outpost pour utiliser un stockage objet compatible S3. Cette dépendance est facultative et se charge depuis le point d’entrée du transport S3.
transporter remplace createLocalTransport() partout où un transport est accepté. Chaque objet est rangé sous outpost/ dans le bucket.
Référence API : S3TransportOptions.
Préparer le bucket
Section intitulée « Préparer le bucket »Créez le bucket au préalable : Outpost ne le crée pas. Le point d’accès doit prendre en charge ces opérations, pas seulement l’envoi et le téléchargement.
- PUT conditionnel
If-None-Match: *pour créer une clé,If-Matchpour la remplacer. - DELETE conditionnel
If-Matchà la suppression, dans le mode par défaut"conditional". - Listing paginé
ListObjectsV2avec jetons de continuation.
Le passer aux stockages
Section intitulée « Le passer aux stockages »Un seul transport sert tous les stockages. Passez-le là où chaque type d’objet doit être conservé.
- CheckpointsReprenez une exécution de workflow depuis une autre machine.
- ArtefactsPartagez les sorties des tâches par référence.
- JournauxConservez le journal du dispatch.
- ConversationsArchivez les captures pour les reprendre n’importe où.
- Archives de récupérationSauvegardez les changements distants avant de les appliquer.
- Activité des sandboxesEnregistrez les sandboxes en cours d’utilisation.
Garder les identifiants sur l’hôte
Section intitulée « Garder les identifiants sur l’hôte »Le S3Client s’exécute dans votre processus Node.js. Ses identifiants n’atteignent jamais la sandbox ni l’agent. Configurez-les comme pour tout client du SDK AWS, et fermez le client seulement une fois que tous les stockages qui l’utilisent ont terminé : Outpost ne le ferme jamais.
Utiliser Cloudflare R2
Section intitulée « Utiliser Cloudflare R2 »R2 accepte un DELETE dont le If-Match est périmé : un DELETE conditionnel ne peut donc pas arrêter un processus d’écriture concurrent. Choisissez deleteMode: "tombstone".
Supprimer une clé écrit un marqueur de suppression par PUT conditionnel. Les lectures et les listings masquent les marqueurs, et recréer la clé remplace son marqueur, toujours sous condition.
Chaque marqueur reste dans le bucket comme un objet facturé de 1 Kio. Créer une clé ajoute une requête HEAD, et lister ajoute une requête HEAD par objet.
- Exclusion, pas identité : Les révisions rejettent les processus d’écriture périmés ; elles n’authentifient pas l’auteur d’une écriture.
- Pas d’instantané : Un listing montre les objets actuels, pas une vue cohérente du préfixe.
- Fichiers locaux maintenus : Les worktrees Git, la préparation de l’exécution et les conversations natives exigent toujours un système de fichiers local (Où vivent les données).
API : createS3Transport · S3TransportOptions · Transport.