Object Storage

Verwalten von Containern und Objekten

├ťberblick

Die pluscloud open bietet object storage kompatibel zu Openstacks Swift und Amazons S3 Protokollen. Er ist grunds├Ątzlich f├╝r Cloud-native Anwendungsf├Ąlle vorgesehen:

  • als Backend f├╝r Infrastructure-as-Code-Szenarien, die von einer Gruppe von EntwicklerInnen genutzt werden k├Ânnen (z. B. als Backend-Speicher f├╝r Terraform-Statusdateien).
  • als Datei-/Inhaltespeicher f├╝r Scale-Out-Szenarien, bei denen aus Images erzeugte Cloud-Instanzen aktuelle Inhalte aus dem Object Storage nachladen (anstatt ein NFS-Volume zu mounten, was in Cloud-Kontexten als “schlechtes Design” angesehen wird).

Object Storage verwalten

Der Object Storage wird entweder ├╝ber die Web-GUI oder mit einem Commandline-Client verwaltet. Sie finden Ihren Object Storage unter “Object Storage” und dann “Container” in Ihrem Horizon-Men├╝. “Containers” ist in Swift das, was “Buckets” in S3 ist.

Bildschirmfoto des Objektspeicher-Men├╝s

Sie k├Ânnen sogar Inhalte in Ihre Container/Buckets hoch- und herunterladen. Klicken Sie einfach auf den kleinen “Upload”-Button und w├Ąhlen Sie eine Datei von Ihrem Computer.

Bildschirmfoto des Upload-Men├╝s

Klicken Sie dann auf “Datei hochladen”. Objekte k├Ânnen mit der Schaltfl├Ąche “Download” auf der rechten Seite heruntergeladen werden. Es gibt aber auch noch andere Optionen in diesem Men├╝.

Screenshot des Men├╝s obs verwalten

Details anzeigen” gibt Ihnen einige Informationen ├╝ber das Objekt (wie Gr├Â├če, Inhaltstyp usw.). Mit “Bearbeiten” k├Ânnen Sie den Inhalt des Objekts ├Ąndern. Bei der Objektspeicherung findet jedoch keine In-Place-Bearbeitung statt - der neue Inhalt wird mit dem alten Objektnamen hochgeladen.

Au├čerdem k├Ânnen Sie ein Objekt in einen anderen Container/Bucket kopieren, indem Sie “Kopieren” w├Ąhlen. Mit “L├Âschen” wird das Objekt nat├╝rlich gel├Âscht.

Sie k├Ânnen einen Ordner in Ihrem Container/Bucket erstellen (anstatt ein Objekt hochzuladen), indem Sie auf “+Ordner” klicken. In diesen Unterordnern k├Ânnen Objekte hochgeladen, kopiert, bearbeitet und gel├Âscht werden, genau wie in anderen Containern/Buckets. Aber Achtung! Diese Unterordner funktionieren nicht wie Unterordner in einem Dateisystem. Die Ordnerstruktur wird nur durch das Anh├Ąngen von “/” an den Ordnernamen simuliert.

CLI-Clients verwenden

Es gibt mehrere M├Âglichkeiten, Ihren Object Storage ├╝ber die Kommandozeile zu verwalten. Wie bereits erw├Ąhnt, ist unser Object Storage kompatibel zu OpenStacks Swift und Amazons S3-Protokoll. Sie sollten also in der Lage sein, Kommandozeilen-Tools zu verwenden, die das eine oder das andere unterst├╝tzen.

Nat├╝rlich unterst├╝tzt der OpenStackClient selbst die Verwaltung von Containern bis zu einem gewissen Grad. Wenn Sie Ihren OpenStackClient richtig konfiguriert haben, k├Ânnen Sie die openstack container-Befehle verwenden, um Ihre Object-Storage-Container/-Buckets zu verwalten:

/configuration # openstack container list
+--------+
| Name   |
+--------+
| first  |
| foobar |
+--------+
/configuration # openstack container show first
+----------------+---------------------------------------+
| Field          | Value                                 |
+----------------+---------------------------------------+
| Konto          | AUTH_d474d55f24a3a97e92cc39b7dd469c14 |
| bytes_used     | 0                                     |
| container      | first                                 |
| object_count   | 0                                     |
| read_acl       | .r:*,.rlistings                       |
| storage_policy | default-placement                     |
+----------------+---------------------------------------+

Da der Befehl openstack container keine Uploads erlaubt, m├╝ssen Sie den swiftclient verwenden, um Objekte in Ihren Object Storage hochzuladen:

/configuration # swift upload --help
Verwendung: swift upload [--changed] [--skip-identical] [--segment-size <size>]
                    [--segment-container <container>] [--leave-segments]
                    [--object-threads <thread>] [--segment-threads <threads>]
                    [--meta <Name:Wert>] [--header <header>] [--use-slo]
                    [--ignore-checksum] [--object-name <object-name>]
                    <Container> <Datei_oder_Verzeichnis> [<Datei_oder_Verzeichnis>] [...]

L├Ądt die angegebenen Dateien und Verzeichnisse in den angegebenen Container hoch.

Positionale Argumente:
  <container> Name des Containers, in den hochgeladen werden soll.
  <Datei_oder_Verzeichnis> Name der hochzuladenden Datei oder des Verzeichnisses. Geben Sie mehrere
                        f├╝r mehrfache Uploads. Wenn "-" angegeben wird, liest
                        Inhalt von der Standardeingabe (--object-name ist in diesem Fall erforderlich
                        in diesem Fall erforderlich).

Optionale Argumente:
  -c, --changed Nur Dateien hochladen, die seit dem letzten Upload ge├Ąndert wurden
                        Upload ge├Ąndert haben.
  --skip-identical ├ťberspringt das Hochladen von Dateien, die auf beiden Seiten identisch sind.
  -S, --segment-size <Gr├Â├če>
                        Hochladen von Dateien in Segmenten, die nicht gr├Â├čer als <size> (in
                        Bytes) und erstellt dann eine "Manifest"-Datei, die
                        alle Segmente herunterl├Ądt, als w├Ąre es die Originaldatei
                        Datei.
  --Segment-Beh├Ąlter <Beh├Ąlter>
                        Hochladen der Segmente in den angegebenen Container. Wenn
                        nicht angegeben, werden die Segmente in einen
                        <container>_segments Container hochgeladen, um nicht die
                        Haupt-<container>-Listen nicht zu verschmutzen.
  --leave-segments Gibt an, dass die ├Ąlteren Segmente von Manifest
                        Objekte in Ruhe gelassen werden sollen (im Falle von ├ťberschreibungen).
  --object-threads <threads>
                        Anzahl der Threads, die f├╝r das Hochladen vollst├Ąndiger Objekte verwendet werden sollen.
                        Standard ist 10.
  --segment-threads <threads>
                        Anzahl der Threads, die f├╝r das Hochladen von Objektsegmenten verwendet werden sollen.
                        Die Vorgabe ist 10.
  -m, --meta <Name:Wert>
                        Legt ein Metadatenelement fest. Diese Option kann wiederholt werden.
                        Beispiel: -m Farbe:Blau -m Gr├Â├če:Gro├č
  -H, --header <Kopfzeile:Wert>
                        F├╝gt einen benutzerdefinierten Anfrage-Header hinzu. Diese Option kann
                        wiederholt werden. Beispiel: -H "content-type:text/plain"
                        -H "Inhalt-L├Ąnge: 4000".
  --use-slo Wird in Verbindung mit --segment-size verwendet, wird
                        wird ein Static Large Object anstelle des standardm├Ą├čigen
                        Dynamic Large Object.
  --object-name <Objektname>
                        Hochladen der Datei und Benennen des Objekts nach <Objektname> oder Hochladen
                        Verzeichnis und verwenden Sie <Objektname> als Objektpr├Ąfix anstelle des
                        Ordnernamen.
  --ignore-checksum Schaltet die Pr├╝fsummen├╝berpr├╝fung f├╝r Uploads aus.

Es gibt auch mehrere Optionen f├╝r die Verwaltung Ihres Object Storage ├╝ber das S3-Protokoll. Eine davon ist S3cmd, das f├╝r verschiedene Plattformen verf├╝gbar ist. Die andere ist AWS CLI - eine universelle Befehlszeilenschnittstelle f├╝r Amazon Web Services, die wir bereits in unserem Tutorial “OpenStack Object Storage as a Backend for Terraform Statefiles” behandeln.

F├╝r s3cmd ben├Âtigen Sie eine Konfigurationsdatei .s3cfg, die Sie mit Hilfe des Befehls s3cmd --configure erstellen k├Ânnen. Wie bereits erw├Ąhnt, k├Ânnen Sie Ihre Zugangsdaten f├╝r den Object-Storage-Zugriff mit openstack ec2 credentials create erstellen, mit openstack ec2 credentials list auflisten und mit openstack ec2 credentials show <accesskey> einsehen. Sie m├╝ssen diese f├╝r die Konfiguration von S3cmd bereithalten.

Nach der Konfiguration sollten Sie eine .s3cfg Datei ├Ąhnlich der folgenden haben:

[default]
access_key = <Ihr AccessKey>
secret_key = <Ihr SecretKey>
enable_multipart = Wahr
multipart_chunk_size_mb = 50
use_https = Wahr
host_base = https://prod1.api.pco.get-cloud.io:8080
host_bucket = https://prod1.api.pco.get-cloud.io:8080
signurl_use_https = Wahr
socket_timeout = 600

Wenn alles korrekt ist, sollte die Ausf├╝hrung von s3cmd ls s3:// den Inhalt Ihres Object Storage auflisten.


Temporary URLs

Verwendung von Temporary URLs aka TempURL

Zuletzt ge├Ąndert 19.03.2024: m feedback (3dfe3d4)