Zum Inhalt

Verwendung des s3cmd-Clients (S3)

Mit dem s3cmd-Client kannst Du einfach mit Deinem Object Storage interagieren. Hier findest Du praktische Beispiele, wie Du den Client für Deinen Bucket unter storage.netways.cloud nutzen kannst.

Voraussetzungen

  • Du besitzt einen User mit S3-Key (Access Key und Secret Key).
  • Der s3cmd-Client ist auf Deinem System installiert. Falls nicht, installiere ihn über Deinen Paketmanager oder von s3tools.org.

Konfiguration des s3cmd-Clients

1. Konfiguration anlegen

Erstelle eine Konfiguration für Deinen NWS-Speicher, um nicht jedes Mal die Zugangsdaten eingeben zu müssen:

s3cmd --configure

Folge den Anweisungen und gib Deine Zugangsdaten ein:

  • Access Key: ACCESS_KEY
  • Secret Key: SECRET_KEY
  • Region: default
  • Endpoint: storage.netways.cloud
  • DNS-style template: %(bucket)s.storage.netways.cloud
  • Use HTTPS: Y

Grundlegende Beispiele

1. Bucket auflisten

Zeige alle Buckets in Deinem Projekt an:

s3cmd ls

2. Datei hochladen

Lade eine lokale Datei in Deinen Bucket hoch:

s3cmd put ~/meine-datei.txt s3://mein-bucket/

3. Bucket-Inhalt anzeigen

Zeige alle Dateien in einem Bucket an:

s3cmd ls s3://mein-bucket/

4. Verzeichnis synchronisieren

Synchronisiere ein lokales Verzeichnis mit Deinem Bucket:

s3cmd sync ~/mein-verzeichnis/ s3://mein-bucket/backup/

5. Datei herunterladen

Lade eine Datei aus dem Bucket herunter:

s3cmd get s3://mein-bucket/meine-datei.txt ~/Downloads/

6. Dateien löschen

Lösche eine Datei aus dem Bucket:

s3cmd del s3://mein-bucket/meine-datei.txt

7. Datei-Statistiken anzeigen

Zeige Details zu einer Datei an:

s3cmd info s3://mein-bucket/meine-datei.txt

Erstelle einen temporären Download-Link (standardmäßig 1 Stunde gültig):

s3cmd signurl s3://mein-bucket/meine-datei.txt +3600

9. Bucket erstellen

s3cmd mb --bucket-location=":default-placement" s3://mein-bucket2

Grundlegende Befehle für Bucket-Policies

Für die Verwaltung öffentlicher Zugriffe (anonymous access) müssen die ACL-Befehle verwendet werden:

1. Aktuelle ACL anzeigen

s3cmd info s3://mein-bucket/

2. ACL setzen

s3cmd setacl s3://mein-bucket[/prefix] --acl-<POLICY>

Beispiele für gängige ACL-Szenarien

ACL-Typen

Der s3cmd-Client unterstützt folgende vordefinierte ACL-Typen:

  • private
  • public

1. Öffentlichen Zugriff erlauben

s3cmd setacl s3://mein-bucket --acl-public

2. Öffentlichen Zugriff für alle Dateien erlauben

s3cmd setacl s3://mein-bucket --acl-public -r

3. Alle öffentlichen Zugriffe entfernen

s3cmd setacl s3://mein-bucket --acl-private -r
s3cmd setacl s3://mein-bucket --acl-private

4. ACL für bestimmten Prefix setzen

s3cmd setacl s3://mein-bucket/öffentlich/ --acl-public -r

JSON-basierte Policy Verwaltung

1. JSON-Policy auf Bucket anwenden

s3cmd setpolicy policy.json s3://mein-bucket

2. Aktuelle Policy auslesen

s3cmd info s3://mein-bucket

3. Aktuelle Policy löschen

s3cmd delpolicy s3://mein-bucket

Beispiele für JSON-Policies

Beispiel 1: Lesezugriff für bestimmte IP-Bereiche

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": ["s3:GetObject"],
      "Resource": ["arn:aws:s3:::mein-bucket/*"],
      "Condition": {
        "IpAddress": {"aws:SourceIp": ["192.0.2.0/24"]}
      }
    }
  ]
}

Beispiel 2: Zeitlich begrenzter Zugriff

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": ["s3:GetObject"],
      "Resource": ["arn:aws:s3:::mein-bucket/öffentlich/*"],
      "Condition": {
        "DateLessThan": {"aws:CurrentTime": "2023-12-31T23:59:59Z"}
      }
    }
  ]
}

Tipps & Hinweise

Sicherheitshinweise

  • Öffentliche Rechte (public) sollten nur in Ausnahmefällen verwendet werden
  • Prüfe Policies regelmäßig auf ihre Notwendigkeit
  • Kombiniere Policies mit Bucket-Quotas, um unerwünschte Nutzung zu begrenzen
  • Prüfe JSON-Policies immer auf Gültigkeit
  • Teste neue Policies zunächst in nicht-produktiven Umgebungen
Debugging

Füge den Parameter --debug zu Deinen Befehlen hinzu, um detaillierte Informationen zu erhalten, falls etwas nicht wie erwartet funktioniert.

Bucket Versioning

Aktivierung des Versionings

s3cmd setversioning s3://mein-bucket enable

Versioning-Status prüfen

s3cmd info s3://mein-bucket | grep Versioning

Versioning suspendieren

s3cmd setversioning s3://mein-bucket disable

Object Lifecycle Management

Lifecycle-Regeln erstellen

Erstelle eine XML-Konfigurationsdatei (lifecycle.xml):

<LifecycleConfiguration>
  <Rule>
    <ID>AutoDeleteTempFiles</ID>
    <Filter>
      <Prefix>temp/</Prefix>
    </Filter>
    <Status>Enabled</Status>
    <Expiration>
      <Days>7</Days>
    </Expiration>
  </Rule>
</LifecycleConfiguration>

Regel anwenden:

s3cmd setlifecycle lifecycle.xml s3://mein-bucket

Lifecycle-Regeln verwalten

# Vorhandene Regeln anzeigen
s3cmd getlifecycle s3://mein-bucket

# Regel entfernen
s3cmd dellifecycle s3://mein-bucket