Projekte in S3-Buckets

Statt in einem Ordner auf dem Server kann ein Projekt seine Dateien in einem S3-Bucket ablegen: AWS S3, MinIO, SeaweedFS oder jeder andere Speicher mit S3-Schnittstelle. Unterhalb des Präfixes des Projekts ist der Aufbau genau der eines Projektordners (Datumsordner, <Bild>.png, .csv, .json). Ein Ordner lässt sich also mit jedem S3-Werkzeug (aws s3 sync, mc mirror, …) in einen Bucket kopieren und zurück, und LumiScan Training liest dieselben Dateien.

1. Buckets konfigurieren

Der Server-Admin trägt die Buckets in die Konfiguration ein. Die Zugangsschlüssel bleiben in der Konfiguration; der Browser sieht nur den Namen.

"s3_targets": [
  { "name": "aws-frankfurt", "endpoint": "https://s3.eu-central-1.amazonaws.com",
    "region": "eu-central-1", "bucket": "annotation-data", "path_style": false,
    "access_key_id": "AKIA...", "secret_access_key_file": "aws-annotation.secret" },
  { "name": "seaweedfs-lab", "endpoint": "https://s3.lab.example.com:8333", "bucket": "annotation",
    "path_style": true, "access_key_id": "annotation-server",
    "secret_access_key_file": "seaweedfs-annotation.secret", "ca_file": "root-ca.pem" }
]
Schlüssel Bedeutung

name

Wird Admins beim Anlegen eines Projekts angezeigt; Projekte verweisen darauf. Später nicht umbenennen.

endpoint

https://s3.<Region>.amazonaws.com (AWS), http(s)://host:9000 (MinIO), http(s)://host:8333 (SeaweedFS)

region

Die Region des Buckets bei AWS, z. B. eu-central-1; MinIO und SeaweedFS akzeptieren us-east-1.

bucket

Der Bucket; er muss existieren.

path_style

true: endpoint/bucket/key (MinIO, SeaweedFS; Standard). false: bucket.endpoint/key (AWS; nötig für Buckets in neueren Regionen).

access_key_id, secret_access_key_file

Die Schlüssel. secret_access_key direkt in der Datei geht auch, eine eigene, nur für das Dienstkonto lesbare Datei ist besser. Ohne Schlüssel werden AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY und AWS_SESSION_TOKEN aus der Umgebung verwendet.

ca_file, tls_verify

Eigene Zertifizierungsstelle für selbst signierte Zertifikate; "tls_verify": false nur für Tests.

proxy

http://proxy:3128, wenn der Server den Speicher nur über einen Proxy erreicht.

cache_mb, cache_dir

Lokaler Bildzwischenspeicher, Standard 2048 MB in s3-cache/<Name> neben der Konfiguration; 0 schaltet ihn ab.

timeout_s

Je Anfrage, Standard 30.

2. Projekt in einem Bucket anlegen

Unter Ihrem Namen → Projekte → Neues Projekt (oder Projekt importieren) wählen Sie Dateien speichern in: S3-Bucket … und geben einen Ordner im Bucket an (das Präfix, z. B. line-5). Ein Bucket nimmt beliebig viele Projekte auf; die Präfixe zweier Projekte dürfen sich nicht überschneiden. Bilder, die schon unter dem Präfix liegen, werden verwendet, wie sie sind; ein Import braucht ein leeres Präfix.

Verhalten

  • Annotationsdateien werden immer aus dem Bucket gelesen und dorthin geschrieben, nie zwischengespeichert. Wurde eine Datei inzwischen im Bucket geändert (durch ein S3-Werkzeug oder einen anderen Server), wird das Speichern wie bei einem Ordner mit einem Konflikt abgelehnt, und die fremde Version bleibt im Verlauf.

  • Bilder werden auf der Festplatte des Servers zwischengespeichert und bei jeder Anfrage mit dem Bucket abgeglichen: Geänderte Bilder werden neu geholt, unveränderte kosten eine kleine Anfrage.

  • Datenbank, Sperren, Sitzungen und Sicherungen bleiben auf dem Server. Das Löschen eines Bucket-Projekts löscht nie etwas im Bucket.

  • Fehlgeschlagene Anfragen (Netzwerk, 503 SlowDown) werden wiederholt; Fehler werden mit dem Grund gemeldet, den S3 angibt (falscher Schlüssel, Uhrzeitabweichung, fehlender Bucket, falsche Region).

Rechte bei AWS

Der IAM-Benutzer oder die Rolle braucht:

  • auf dem Bucket: s3:ListBucket,

  • auf arn:aws:s3:::<Bucket>/*: s3:GetObject, s3:PutObject, s3:DeleteObject.

Ohne s3:ListBucket beantwortet AWS fehlende Dateien mit 403 statt 404. Halten Sie die Uhr des Servers synchron: AWS lehnt Anfragen ab, die mehr als 15 Minuten abweichen.

MinIO oder SeaweedFS?

Beide funktionieren für LumiScan Annotation Web gleich. Der Hersteller von MinIO veröffentlicht die Community-Edition seit Oktober 2025 nicht mehr als fertige Programme; bestehende Installationen laufen weiter. Für einen neuen selbst betriebenen Speicher ist SeaweedFS (Apache 2.0, aktiv gepflegt) die sicherere Wahl.