Arbeit mit S3 und Cloud-Speichern in JavaScript (Node.js) — die Bibliothek @aws-sdk/client-s3

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Bibliothek @aws-sdk/client-s3 für die Arbeit mit S3 und Cloud-Speichern in Node.js



Cloud-Speicher sind zu einem unverzichtbaren Bestandteil moderner Webanwendungen geworden. Sie ermöglichen das Speichern und Übertragen von Dateien jeder Größe und gewährleisten hohe Verfügbarkeit und Skalierbarkeit. Im JavaScript-Ökosystem (Node.js) ist eine der beliebtesten Bibliotheken für die Arbeit mit S3-kompatiblen Speichern @aws-sdk/client-s3 — das offizielle AWS SDK der dritten Generation.



Diese Bibliothek bietet einen vollständigen Satz von Methoden für die Interaktion mit Amazon S3 sowie mit beliebigen S3-kompatiblen Objektspeichern (z. B. MinIO, DigitalOcean Spaces, Yandex Object Storage, VK Cloud). In diesem Artikel behandeln wir die Installation, Konfiguration und grundlegende Operationen: Hochladen, Herunterladen, Löschen und Auflisten von Objekten.



Installation und Einbindung



Installieren Sie zunächst das Paket über npm:



npm install @aws-sdk/client-s3


Nach der Installation importieren Sie die erforderlichen Klassen in Ihr Projekt:



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


Konfiguration des S3-Clients



Für die Verbindung zu S3 müssen Sie eine Client-Instanz erstellen und dabei die Region, die Zugriffsschlüssel und gegebenenfalls den Endpunkt (für Drittanbieter-Speicher) angeben.



const s3Client = new S3Client({  region: 'ru-central1', // Region Ihres Speichers  endpoint: 'https://storage.yandexcloud.net', // für Yandex Object Storage  credentials: {    accessKeyId: 'YOUR_ACCESS_KEY',    secretAccessKey: 'YOUR_SECRET_KEY'  }});


Wenn Sie Amazon S3 direkt verwenden, müssen Sie keinen Endpunkt angeben – das SDK ermittelt ihn automatisch anhand der Region. Für lokale Tests mit MinIO geben Sie endpoint: 'http://localhost:9000' und forcePathStyle: true an.



Grundlegende Operationen mit S3



1. Datei hochladen (PutObject)



Um eine Datei in einen Bucket hochzuladen, verwenden Sie den Befehl PutObjectCommand. Die Daten können als String, Buffer oder Stream übergeben werden.



const uploadFile = async (bucketName, key, body) => {  try {    const command = new PutObjectCommand({      Bucket: bucketName,      Key: key,      Body: body,      ContentType: 'text/plain' // optional    });    const response = await s3Client.send(command);    console.log('Datei hochgeladen:', response);  } catch (err) {    console.error('Fehler beim Hochladen:', err);  }};

// Beispiel zur VerwendunguploadFile('my-bucket', 'hello.txt', 'Hallo, Welt!');


2. Datei herunterladen (GetObject)



Zum Abrufen eines Objekts aus dem Speicher wird GetObjectCommand verwendet. Die Daten werden als Stream zurückgegeben, der in einen String oder Buffer umgewandelt werden kann.



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('Dateiinhalt:', str);    return str;  } catch (err) {    console.error('Fehler beim Herunterladen:', err);  }};

// Beispiel zur VerwendungdownloadFile('my-bucket', 'hello.txt');


3. Datei löschen (DeleteObject)



Das Löschen eines Objekts erfolgt mit dem Befehl DeleteObjectCommand.



const deleteFile = async (bucketName, key) => {  try {    const command = new DeleteObjectCommand({      Bucket: bucketName,      Key: key    });    await s3Client.send(command);    console.log('Datei gelöscht');  } catch (err) {    console.error('Fehler beim Löschen:', err);  }};

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


4. Liste der Objekte abrufen (ListObjectsV2)



Zum Auflisten aller Objekte in einem Bucket wird <

Empfehlungen