Aller au contenu

Aller au sommaire de la doc

Stockage objet (S3)

Des buckets S3 en France pour les fichiers de votre appli : images, exports, documents. Ils sont chiffrés et versionnés, et votre appli reçoit une clé qui ne vaut que pour eux.

Mis à jour le 9 novembre 2026.

Voir en Markdown

Vous, à votre agent : Ajoute un stockage pour les photos des visites.

Ce que votre agent écrit

Votre agent l’écrit dans while.yaml, à la racine de votre appli :

while.yaml
buckets:
  - name: uploads

Ce que reçoit votre appli

Votre appli reçoit ces variables d’environnement à chaque mise en ligne :

VariableCe qu’elle contient
S3_ENDPOINTLe point S3 que joint votre appli.
S3_REGIONLa région S3.
AWS_REGIONLa même, pour les SDK d’AWS.
AWS_ENDPOINT_URL_S3Le point S3, pour les SDK d’AWS.
S3_BUCKET_UPLOADSLe nom du bucket uploads.
S3_BUCKETLe nom du premier bucket.
AWS_ACCESS_KEY_IDLa clé d’accès, limitée aux buckets de l’environnement.
AWS_SECRET_ACCESS_KEYSon secret.
S3_ACCESS_KEY_IDLa même clé, sous un autre nom.
S3_SECRET_ACCESS_KEYSon secret.
S3_ENDPOINT_PUBLICLe point S3 public, pour une URL présignée qu’ouvre un navigateur.

Quand vous en servir

Servez-vous-en pour les fichiers (images, exports, documents), plutôt que dans la base.

Comment ça marche

Chaque bucket S3 déclaré est créé en France, chiffré et versionné. L’appli reçoit le point S3, le nom de ses buckets et une clé limitée aux buckets de son environnement.

Ce qu’il faut savoir

Une appli aux sorties fermées (le défaut) joint ses buckets par le relais S3 de while (S3_ENDPOINT, dans le cluster). Par le relais, la clé reçue ne vaut que pour les buckets de l’environnement, et seulement depuis ses pods. Pour lire un bucket depuis un poste, sans clé, votre agent utilise l’outil read_bucket.

Une URL présignée pour un navigateur se fait sur S3_ENDPOINT_PUBLIC, en style chemin (forcePathStyle), et les adresses de l’appli y sont permises (CORS). Pour une autre origine, déclarez buckets: [{ name, cors: [https://…] }]. L’adresse publique prend des URL présignées pour lire ou envoyer un objet (GET, HEAD, PUT, 5 Go au plus), et des formulaires POST présignés (createPresignedPost) : le relais vérifie la politique (signature, expiration, bucket, key ou son préfixe, Content-Type, x-amz-meta-*) et compte content-length-range pendant l’envoi. Une URL qui signe content-length impose la taille : le relais vérifie la signature avec elle et transmet Content-Length tel quel ; une autre longueur est refusée.

Le bucket est créé à la mise en ligne : c’est une ressource facturée, validée comme une base, et public: true (lecture anonyme) se fait valider aussi. Une version remplacée ou supprimée d’un objet est gardée 30 jours. Une prévisualisation a ses propres buckets, vides : rien n’est copié. Les buckets partent avec leur environnement, vidés, versions comprises. Le verrouillage d’objets en mode compliance n’est pas proposé.

Prix

Ces prix sont les mêmes dans toutes les offres, hors taxes :

RessourcePrixDétail
Stockage objet0,25 € les 10 Gio·moisrequêtes comprises

Les outils MCP de votre agent

Votre agent s’en occupe avec les outils get_app_status et read_bucket.

Guides

Branchez votre agent, il s’occupe du reste

À coller dans votre agent

Lis while.sh/agents, puis mets mon appli en ligne avec while.

Copier les instructions

Pas besoin de compte pour essayer : votre appli est en ligne tout de suite. Pour la garder, connectez-vous.

Un projet pour votre entreprise ? Parlez à l’équipe : hello@while.sh