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.
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 :
buckets:
- name: uploads
Ce que reçoit votre appli
Votre appli reçoit ces variables d’environnement à chaque mise en ligne :
| Variable | Ce qu’elle contient |
|---|---|
S3_ENDPOINT | Le point S3 que joint votre appli. |
S3_REGION | La région S3. |
AWS_REGION | La même, pour les SDK d’AWS. |
AWS_ENDPOINT_URL_S3 | Le point S3, pour les SDK d’AWS. |
S3_BUCKET_UPLOADS | Le nom du bucket uploads. |
S3_BUCKET | Le nom du premier bucket. |
AWS_ACCESS_KEY_ID | La clé d’accès, limitée aux buckets de l’environnement. |
AWS_SECRET_ACCESS_KEY | Son secret. |
S3_ACCESS_KEY_ID | La même clé, sous un autre nom. |
S3_SECRET_ACCESS_KEY | Son secret. |
S3_ENDPOINT_PUBLIC | Le 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 :
| Ressource | Prix | Détail |
|---|---|---|
| Stockage objet | 0,25 € les 10 Gio·mois | requêtes comprises |
Les outils MCP de votre agent
Votre agent s’en occupe avec les outils get_app_status et read_bucket.