Gestion des avatars utilisateurs avec AWS S3
Permets à chaque utilisateur d’uploader et d’afficher son avatar, stocké sur AWS S3 et affiché partout.
Dans toute application de chat temps réel, personnaliser l’expérience utilisateur est essentiel.
Permettre à chaque utilisateur d’uploader et d’afficher un avatar rend l’interface plus humaine et favorise l’engagement.
Ce module « Gestion des avatars utilisateurs avec AWS S3 » s’intègre à notre stack basée sur Remix et NestJS pour gérer le stockage, la récupération et la suppression des images d’avatar dans un bucket AWS S3.
Pourquoi AWS S3 ?
- Haute disponibilité et scalabilité pour héberger des fichiers statiques.
- Génération d’URL pré-signées pour un accès sécurisé et contrôlé.
- Politique de cache à long terme (
CacheControl) pour optimiser la distribution via CDN.
Rôle de chaque couche
- Frontend Remix : formulaire d’upload multipart, validation avec Zod, affichage de l’aperçu de l’avatar.
- Backend NestJS : service
AwsS3Servicepour effectuer les opérations S3, logique métier de mise à jour d’avatar dans la base de données via Prisma. - Base de données Prisma : champ
avatarFileKeystocke la référence au fichier dans S3. - Stripe (optionnel) : gestion du statut
canReceiveMoneysi vous proposez des paiements P2P.
Sécurité des accès
Nous utilisons la génération d’URL pré-signées pour limiter la durée d’exposition de vos objets S3.
Objectifs du module
À l’issue de cette section, vous saurez :
- Configurer un bucket S3 et vos variables d’environnement AWS.
- Implémenter un
uploadFileet ungetFileUrlavec le SDK AWS v3. - Construire un service NestJS injectable (
AwsS3Service) pour encapsuler les commandes S3. - Mettre à jour l’avatar d’un utilisateur dans la base via Prisma, en supprimant l’ancien fichier.
- Gérer le formulaire Remix en multipart/form-data avec validation Zod et feedback utilisateur.
Prérequis
- Avoir suivi le module d’authentification et de routing Remix
- Compte AWS avec un bucket S3 et clés IAM
- Projet NestJS avec Prisma déjà configuré
- Connaissances de base en TypeScript et React Hooks
- Notions sur les URL pré-signées et permissions S3
Tip
Si vous débutez avec S3, commencez par la console AWS pour créer votre bucket et vos règles CORS.
Aperçu de la solution
1--- app/routes/settings.tsx2// Composant Remix pour l’upload et l’affichage de l’avatar3--- src/aws/aws-s3.service.ts4// Service NestJS utilisant @aws-sdk/client-s3 et getSignedUrl5--- src/user/user.service.ts6// Logique Prisma pour mettre à jour et supprimer les avatars
Nous découvrirons en détail chaque brique, du formulaire Remix aux commandes PutObjectCommand et DeleteObjectCommand de l’AWS SDK, en passant par la validation de fichier avec Zod.