Travailler avec S3 et les stockages cloud en JavaScript (Node.js) — la bibliothèque @aws-sdk/client-s3

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bibliothèque @aws-sdk/client-s3 pour travailler avec S3 et les stockages cloud en Node.js



Les stockages cloud sont devenus une partie intégrante des applications web modernes. Ils permettent de stocker et de transférer des fichiers de toute taille, offrant une haute disponibilité et une évolutivité. Dans l'écosystème JavaScript (Node.js), l'une des bibliothèques les plus populaires pour travailler avec les stockages compatibles S3 est @aws-sdk/client-s3 — le SDK AWS officiel de troisième génération.



Cette bibliothèque fournit un ensemble complet de méthodes pour interagir avec Amazon S3, ainsi qu'avec tout stockage d'objets compatible S3 (par exemple, MinIO, DigitalOcean Spaces, Yandex Object Storage, VK Cloud). Dans cet article, nous aborderons l'installation, la configuration et les opérations de base : téléchargement, téléchargement, suppression et obtention de la liste des objets.



Installation et connexion



Pour commencer, installez le package via npm :



npm install @aws-sdk/client-s3


Après l'installation, importez les classes nécessaires dans votre projet :



const { S3Client, PutObjectCommand, GetObjectCommand, DeleteObjectCommand, ListObjectsV2Command } = require('@aws-sdk/client-s3');


Configuration du client S3



Pour se connecter à S3, vous devez créer une instance du client en spécifiant la région, les clés d'accès et, si nécessaire, le point de terminaison (pour les stockages tiers).



const s3Client = new S3Client({  region: 'ru-central1', // région de votre stockage  endpoint: 'https://storage.yandexcloud.net', // pour Yandex Object Storage  credentials: {    accessKeyId: 'YOUR_ACCESS_KEY',    secretAccessKey: 'YOUR_SECRET_KEY'  }});


Si vous utilisez Amazon S3 directement, il n'est pas nécessaire de spécifier le point de terminaison — le SDK le déterminera automatiquement en fonction de la région. Pour les tests locaux avec MinIO, spécifiez endpoint: 'http://localhost:9000' et forcePathStyle: true.



Opérations de base avec S3



1. Téléchargement d'un fichier (PutObject)



Pour télécharger un fichier dans un bucket, utilisez la commande PutObjectCommand. Les données peuvent être transmises sous forme de chaîne, de tampon ou de flux.



const uploadFile = async (bucketName, key, body) => {  try {    const command = new PutObjectCommand({      Bucket: bucketName,      Key: key,      Body: body,      ContentType: 'text/plain' // optionnel    });    const response = await s3Client.send(command);    console.log('Fichier téléchargé :', response);  } catch (err) {    console.error('Erreur de téléchargement :', err);  }};

// Exemple d'utilisationuploadFile('my-bucket', 'hello.txt', 'Bonjour le monde !');


2. Téléchargement d'un fichier (GetObject)



Pour récupérer un objet du stockage, utilisez GetObjectCommand. Les données sont renvoyées sous forme de flux, qui peut être converti en chaîne ou en tampon.



const downloadFile = async (bucketName, key) => {  try {    const command = new GetObjectCommand({      Bucket: bucketName,      Key: key    });    const response = await s3Client.send(command);    const str = await response.Body.transformToString('utf-8');    console.log('Contenu du fichier :', str);    return str;  } catch (err) {    console.error('Erreur de téléchargement :', err);  }};

// Exemple d'utilisationdownloadFile('my-bucket', 'hello.txt');


3. Suppression d'un fichier (DeleteObject)



La suppression d'un objet s'effectue avec la commande DeleteObjectCommand.



const deleteFile = async (bucketName, key) => {  try {    const command = new DeleteObjectCommand({      Bucket: bucketName,      Key: key    });    await s3Client.send(command);    console.log('Fichier supprimé');  } catch (err) {    console.error('Erreur de suppression :', err);  }};

deleteFile('my-bucket', 'hello.txt');


4. Obtention de la liste des objets (ListObjectsV2)



Pour lister tous les objets dans un bucket, utilisez <

Recommendations