S3-Testdaten für CI-Teams — Amazon S3 als Laufwerk mit NetDrive

4 Min. Lesezeit use-case amazon-s3 windows
Alex
AlexPrincipal Engineer
Amazon S3 als lokalen Laufwerksbuchstaben einbinden, damit CI-Testdaten mit normalen Dateipfaden funktionieren. Ein NetDrive-Anwendungsfall für DevOps-Teams.

Ein Backend-Team speichert 40 GB binäre Testdaten auf Amazon S3 — Datenbank-Snapshots, vorgerenderte Mediendateien und große Referenzdatensätze. Ihre Integrationstests lesen diese als normale Dateipfade. Jedes Mal, wenn sich eine Testdatei ändert, läuft der alte Workflow gleich ab: aws s3 cp lädt Gigabytes auf jeden CI-Runner herunter, und wer eine Pipeline auslöst, wartet 25 Minuten, bevor die Tests überhaupt starten. Das Einbinden des S3-Buckets als lokales Laufwerk mit NetDrive eliminiert diesen Kopiervorgang vollständig — Tests lesen direkt von S3 über einen Pfad wie T:\fixtures\, ohne lokalen Download-Schritt.

NetDrive drive manager showing Google Drive, S3 and pCloud mounted as drive lettersMounted clouds appearing as native drives in Windows File Explorer

S3 als Laufwerksbuchstaben einbinden — keine Downloads, keine Codeänderungen

Mit NetDrive erscheinen Google Drive, OneDrive, S3, SFTP, WebDAV und mehr als native Laufwerke unter Windows und macOS — ohne Synchronisation, ohne vollständige Downloads.

  • Jede App, die einen Dateipfad liest, funktioniert automatisch
  • Auto-Mount beim Booten hält das Laufwerk bereit, noch vor jedem Login
  • Wasabi und MinIO funktionieren genauso wie Amazon S3
WindowsmacOS
NetDrive herunterladen →

Kostenlose Testversion. Lifetime- und Abo-Pläne verfügbar.

Warum Dateipfad-Kompatibilität in CI wichtig ist

Die meisten Testsuiten sind so geschrieben, dass sie Testdaten von einem lokalen Pfad lesen. Jede Fixture-Referenz auf eine S3-URL umzustellen bedeutet, Dutzende Dateien anzufassen und möglicherweise auch die lokale Entwicklererfahrung zu beeinträchtigen. Die sauberere Lösung besteht darin, S3 wie ein lokales Laufwerk aussehen zu lassen, damit die bestehenden Pfade unverändert weiterfunktionieren.

NetDrive bindet einen S3-Bucket als Netzlaufwerk, Nur-Lese-Laufwerk oder lokales Laufwerk ein, je nachdem, was der CI-Runner benötigt. Unter Windows wird daraus ein Laufwerksbuchstabe (T:, S: usw.), den jeder Prozess auf der Maschine lesen kann. Unter macOS erscheint es als FUSE-Volume unter /Volumes/ oder einem benutzerdefinierten Pfad. Die Testsuite sieht ein Dateisystem; NetDrive übernimmt die S3-API-Aufrufe im Hintergrund.

Große Fixture-Dateien funktionieren zuverlässig, weil NetDrive Daten in Chunks streamt und bei Netzwerkstörungen automatisch erneut versucht. Dateien über 5 GB nutzen S3-Multipart-Übertragungen (verfügbar seit NetDrive 3.5.434), sodass es praktisch keine Obergrenze für die Fixture-Größe gibt.

Amazon S3 provider logo for mounting S3 buckets as drives via NetDrive

Einen S3-Bucket als Laufwerk einrichten

  1. Open NetDrive öffnen und in der Drive Manager auf + Add Drive klicken.
  2. Amazon S3 aus der Anbieterliste auswählen.
  3. AWS Access Key ID und Secret Access Key eingeben. Eine dedizierte IAM-Rolle mit minimalen Rechten verwenden — Nur-Lese-Zugriff für Fixture-Buckets, Schreibrechte nur dort, wo Tests Artefakte erzeugen.
  4. Bucket Name eingeben. Seit NetDrive 3.19.7 wird die Region automatisch aus der Bucket-Konfiguration erkannt, sodass das Regionsfeld leer bleiben kann, sofern keine Überschreibung nötig ist.
  5. Bei Drive Type Network drive für einen normalen Lese-Schreib-Mount wählen oder Read-only drive, falls CI-Runner niemals in den Fixture-Bucket zurückschreiben sollen.
  6. Mount on auf Boot setzen — das ist der entscheidende Unterschied zu einer Entwickler-Workstation-Einrichtung. Boot-Zeit-Mounting macht das Laufwerk verfügbar, bevor sich ein Benutzer anmeldet, was genau das ist, was headless CI-Server benötigen.
  7. Auf Mount klicken.

Der Laufwerksbuchstabe (Windows) bzw. Volume-Pfad (macOS) ist nun für jeden Prozess auf der Maschine zugänglich, einschließlich des CI-Agenten, ohne dass eine Benutzersitzung aktiv sein muss.

NetDrive showing cloud storage mounted as a native drive accessible in Windows Explorer

Auto-Mount ohne Login — Einrichtung für headless CI-Server

Die Option Mount on Boot macht NetDrive auf CI-Infrastruktur praxistauglich. Die meisten CI-Runner (Jenkins-Agenten, selbst gehostete GitHub-Actions-Runner, GitLab-Agenten) starten als Systemdienste, nicht als Benutzersitzungen. Ein Laufwerk, das erst beim Benutzer-Login eingebunden wird, ist für diese Agenten unsichtbar.

Mit aktiviertem Boot-Zeit-Mounting ist das S3-Laufwerk vorhanden, sobald das Betriebssystem den Start abgeschlossen hat. Der CI-Agent findet es automatisch vor — kein Login, kein Skript zum Ausführen des Mount-Befehls, keine Race Condition zwischen Agentenstart und Laufwerkserscheinung.

NetDrive auto-mount on boot without login setting, keeping drives available for system services

Für Fälle, in denen das Einbinden programmatisch erfolgen muss — etwa um je nach Branch-Name oder Pipeline-Variable dynamisch auszuwählen, welcher Bucket eingebunden wird — enthält NetDrive nd3cmd, ein Kommandozeilenwerkzeug, das mit NetDrive 3.8.921 eingeführt wurde und skriptgesteuerte Laufwerksverwaltung ermöglicht. Die aktuelle nd3cmd-Befehlsreferenz findet sich im NetDrive-Supportforum, da die genauen Flags je nach Version variieren.

Wenn Tests Artefakte erzeugen (Coverage-Reports, gerenderte Ausgaben, Benchmark-Ergebnisse), funktioniert dasselbe eingebundene Laufwerk auch für Schreibvorgänge. Der background upload-Modus von NetDrive schreibt zunächst in einen lokalen Cache und lädt anschließend asynchron zu S3 hoch, sodass der Testprozess nicht auf den Abschluss des Uploads warten muss.

NetDrive background upload progress showing asynchronous write queue to S3

On-Premises-S3: MinIO und Wasabi

Nicht jedes Team nutzt AWS direkt. Manche betreiben MinIO On-Premises, um Fixture-Daten von der Public Cloud fernzuhalten, andere setzen auf Wasabi für kosteneffizienten Kaltspeicher. NetDrive unterstützt S3-kompatible Speicheranbieter seit 3.4.398 und fügte in 3.15.450 explizite MinIO-Unterstützung hinzu.

So wird ein S3-kompatibler Endpunkt verbunden:

  1. Auf + Add Drive klicken und S3 Compatible (nicht Amazon S3) wählen.
  2. Die custom endpoint URL des MinIO-Clusters oder der Wasabi-Region eingeben.
  3. Bucket-Name und Zugangsdaten wie zuvor eingeben.
  4. Laufwerkstyp und Mount-Trigger genauso festlegen.

Der Rest der Einrichtung ist identisch. Aus Sicht der Testsuite ist T:\fixtures\ gleich T:\fixtures\, unabhängig davon, ob der Speicher dahinter AWS us-east-1, ein Wasabi-Bucket oder ein MinIO-Cluster im selben Rechenzentrum wie der CI-Runner ist.

Fazit

Das Einbinden von S3 als Laufwerksbuchstabe verschafft CI-Pipelines ohne Codeänderungen Zugriff auf große Fixture-Bibliotheken im Objektspeicher. Die Testsuite liest weiterhin lokale Pfade; NetDrive übernimmt die S3-Übersetzung. Boot-Zeit-Mounting sorgt dafür, dass das Laufwerk immer da ist, wenn der CI-Agent es braucht, ganz ohne manuellen Eingriff.

Für die Einrichtung des S3-Zugriffs auf einem Entwickler-Mac siehe Mount Amazon S3 on macOS with NetDrive. Falls Ihr Team außerdem eine kosteneffiziente Kaltspeicher-Stufe für ältere Fixtures benötigt, behandelt Mount Backblaze B2 on Windows with NetDrive eine ähnliche Einrichtung mit der S3-kompatiblen API von Backblaze.

— Alex, NetDrive