Appearance
BDD-82 — Architecture de stockage fichiers sur S3
Contexte
Refactoring de l'architecture S3 pour normaliser les variables d'environnement et le chemin de stockage des fichiers. L'ancienne architecture utilisait des noms de variables hérités de Strapi (ENDPOINT_PJ, UPLOAD_S3_BUCKET_PJ, PRIVATE_FOLDER_PJ) avec un chemin de type strapi-private/{nom}_{uuid}.{ext}. Ces noms étaient obsolètes et le chemin n'était pas structuré par entreprise.
Changements
Variables d'environnement
| Avant | Après |
|---|---|
ENDPOINT_PJ | UPLOAD_S3_ENDPOINT |
UPLOAD_S3_BUCKET_PJ | UPLOAD_S3_BUCKET |
PRIVATE_FOLDER_PJ | supprimée |
UPLOAD_S3_ENDPOINT doit être le base endpoint Scaleway sans nom de bucket : https://s3.fr-par.scw.cloud. Le SDK AWS ajoute le bucket en préfixe en virtual-hosted style pour construire {bucket}.s3.fr-par.scw.cloud, qui correspond au wildcard TLS de Scaleway.
Chemin S3
| Avant | Après |
|---|---|
strapi-private/{nom}_{uuid_court}.{ext} | enterprises/{enterpriseUuid}/{documentUuid} |
Le chemin est maintenant structuré par entreprise et utilise l'UUID du document comme nom de fichier, ce qui permet un cloisonnement naturel par entreprise dans le bucket.
Schéma Prisma
La colonne uuid a été ajoutée à la table enterprises (String @unique @default(uuid())). Elle est utilisée comme premier segment du chemin S3, ce qui garantit que les fichiers sont isolés par entreprise.
Impact
- Tous les fichiers déposés avant cette migration ont un chemin S3 sous l'ancien format (
strapi-private/…). Ils restent accessibles carbucketetpathsont stockés dansdocuments; le service génère les URLs pré-signées à partir de ces valeurs stockées. - Les nouveaux uploads utilisent le nouveau format.
- Mettre à jour
UPLOAD_S3_ENDPOINTdans tous les environnements (staging, prod).
