Auf dieser Seite werden Objekte, eine Ressource in Cloud Storage, beschrieben. Eine allgemeine Übersicht über die Funktionsweise von Cloud Storage finden Sie in der Cloud Storage-Produktübersicht.
Objekte
Objekte sind die einzelnen Daten, die Sie in Cloud Storage speichern. Die Anzahl der Objekte, die Sie in einem Bucket erstellen können, ist nicht begrenzt.
Objekte haben zwei Komponenten: Objektdaten und Objektmetadaten. Objektdaten sind normalerweise eine Datei, die Sie in Cloud Storage speichern möchten und vollständig in Cloud Storage undurchsichtig sind. Objektmetadaten bezeichnen eine Sammlung von Name/Wert-Paaren, die verschiedene Objektqualitäten beschreiben.
Zwei wichtige Objekte für alle Objektmetadaten sind der Name und die Generierungsnummer des Objekts. Wenn Sie einem Cloud Storage-Bucket ein Objekt hinzufügen, geben Sie den Objektnamen an und Cloud Storage weist die Generierungsnummer zu. Der Name und die Generierung identifizieren das Objekt innerhalb dieses Buckets zusammen.
Sie können Zugriffssteuerungslisten (ACLs) verwenden, um den Zugriff auf einzelne Objekte zu steuern. Sie können auch das Identity and Access Management (IAM) verwenden, um den Zugriff auf alle Objekte in einem Bucket oder in einem verwalteten Ordner zu steuern.
Überlegungen zur Benennung
Der Name, den Sie einem Objekt geben, muss die folgenden Voraussetzungen erfüllen:
- Objektnamen können eine beliebige Folge gültiger Unicode-Zeichen mit einer Länge von 1 bis 1.024 Byte enthalten, wenn sie mit UTF-8 codiert sind.
- Objektnamen dürfen keine Zeilenumbruch- oder Zeilenvorschubzeichen enthalten.
- Objektnamen dürfen nicht mit
.well-known/acme-challenge/
beginnen. - Objekte können nicht
.
oder..
genannt werden.
Es wird dringend empfohlen, folgende Zeichen in Objektnamen zu vermeiden:
- Steuerzeichen, die in XML 1.0 nicht zulässig sind (#x7F–#x84 und #x86–#x9F): Diese Zeichen verursachen XML-Listenprobleme, wenn Sie versuchen, Objekte aufzulisten.
- Das Zeichen
#
: Google Cloud CLI-Befehle interpretieren Objektnamen, die auf #<numeric string> enden, als Versionsbezeichner. Wenn Objektnamen ein#
enthalten, kann es daher schwierig bis unmöglich sein, für diese versionierten Objekte Vorgänge mit der gcloud CLI auszuführen. - Die Zeichen
[
,]
,*
oder?
: Google Cloud CLI-Befehle interpretieren diese Zeichen als Platzhalter. Wenn sie in Objektnamen enthalten sind, kann es daher schwierig oder unmöglich sein, Platzhaltervorgänge durchzuführen. Darüber hinaus sind*
und?
keine gültigen Zeichen für Dateinamen in Windows. - Die Zeichen
:
,"
,<
,>
oder|
: Dies sind keine gültigen Zeichen für Dateinamen in Windows. Daher wird versucht, ein Objekt herunterzuladen, das verwendet wird. Solche Zeichen im Namen einer Windows-Datei schlagen fehl, es sei denn, die Downloadmethode umfasst das Umbenennen der resultierenden Windows-Datei. Obwohl es in Windows kein gültiges Zeichen für Dateinamen ist, kann das Zeichen/
normalerweise mit Objektnamen verwendet werden, um eine Verzeichnisstruktur nachzuahmen. Tools wie die Google Cloud CLI konvertieren das Zeichen beim Download in eine Windows-Umgebung automatisch in\
. - Vertrauliche oder personenidentifizierbare Informationen (PII): Objektnamen sind allgemeiner sichtbar als Objektdaten. Objektnamen werden beispielsweise in URLs für das Objekt und beim Auflisten von Objekten in einem Bucket angezeigt.
Vorhandene Objekte können nicht direkt umbenannt werden. Sie können jedoch indirekt ein Objekt umbenennen. Kopieren und löschen Sie dazu das ursprüngliche Objekt.
Objekt-Namespace
Objektnamen befinden sich in einem flachen Namespace innerhalb eines Buckets. Das bedeutet:
- Verschiedene Buckets können Objekte mit demselben Namen haben.
- Objekte in einem Bucket sind nicht in Unterverzeichnissen abgelegt.
Der Einfachheit halber werden Objekte auf verschiedene Weise so behandelt, als ob sie in einer Ordnerhierarchie gespeichert wären:
Verwaltete Ordner sind eine Cloud Storage-Ressource, die erweiterten Zugriff auf Gruppen von Objekten mit einem gemeinsamen Namenspräfix bietet.
Tools wie die Google Cloud Console und die Google Cloud CLI verwenden den Schrägstrich (
/
) als Trennzeichen, um Ordner in einem Bucket zu simulieren.
Wenn Sie beispielsweise ein Objekt mit dem Namen folder1/file.txt
im Bucket your-bucket
erstellen, lautet der Pfad zum Objekt your-bucket/folder1/file.txt
und in Cloud Storage ist kein Ordner namens folder1
gespeichert. Aus Sicht von Cloud Storage ist der String folder1/
Teil des Objektnamens.
Da das Objekt jedoch einen /
im Namen hat, implementieren einige Tools das Vorkommen von Ordnern. Bei Verwendung der Google Cloud Console würden Sie beispielsweise das Objekt folder1/file1.txt
aufrufen, als sei es ein Objekt namens file1.txt
in einem Ordner mit namens folder1
. Ebenso können Sie einen verwalteten Ordner mit dem Namen folder1
erstellen und file1.txt
unterliegt dann der Zugriffsrichtlinie, die von diesem verwalteten Ordner festgelegt wird.
Da sich Objekte in einem flachen Namespace befinden, haben tief verschachtelte, verzeichnisartige Strukturen nicht die Leistung eines nativen Dateisystems mit komplex verschachtelten Unterverzeichnissen.
Unter Best Practices für Anfrageraten finden Sie Empfehlungen zur Optimierung der Leistung, da sequenzielle Namen bei umfangreichen Uploads vermieden werden. Objekte, die mit sequenziellen Namen hochgeladen werden, erreichen wahrscheinlich denselben Backend-Server und beeinträchtigen die Leistung.
Simulierte Ordner
Damit Sie Objekte in Ihren Cloud Storage-Buckets organisieren können, simulieren einige Tools Ordner. Außerdem haben die JSON- und XML APIs Funktionen, mit denen Sie ein eigenes Benennungsschema zum Simulieren von Ordnern entwerfen können. Klicken Sie auf die folgenden Tabs, um zu sehen, wie verschiedene Tools simulierte Ordner handhaben.
Console
Die Google Cloud Console erstellt eine visuelle Darstellung von Ordnern, die einem lokalen Dateibrowser ähneln.
In der Google Cloud Console können Sie einen leeren Ordner in einem Bucket erstellen oder einen vorhandenen Ordner hochladen.
Wenn Sie einen vorhandenen Ordner hochladen, wird der Name des Ordners Teil des Pfads für alle im Ordner enthaltenen Objekte. Alle Unterordner und die darin enthaltenen Objekte werden ebenfalls in den Upload einbezogen.
So erstellen Sie einen Ordner:
- Wechseln Sie in der Cloud Console zur Seite Cloud Storage-Buckets.
Rufen Sie den Bucket auf.
Klicken Sie auf Ordner erstellen, um einen leeren neuen Ordner zu erstellen, oder auf Ordner hochladen, um einen vorhandenen Ordner hochzuladen.
Befehlszeile
Cloud Storage-Befehlszeilen simulieren das typische Befehlszeilenverzeichnis unter Verwendung verschiedener Regeln.
Um die Illusion eines hierarchischen Dateibaums zu erreichen, wendet die gcloud CLI die folgenden Regeln an, um zu bestimmen, ob die Ziel-URL in einem Befehl als Objektname oder Ordner behandelt werden soll:
Wenn die Ziel-URL mit einem
/
-Zeichen endet, behandeln gcloud CLI-Befehle die Ziel-URL als Ordner. Betrachten Sie beispielsweise den folgenden Befehl, wobeiyour-file
der Name einer Datei ist:gcloud storage cp your-file gs://your-bucket/abc/
Als Ergebnis dieses Befehls erstellt Cloud Storage ein Objekt namens
abc/your-file
im Bucketyour-bucket
.Wenn Sie mehrere Quelldateien in eine Ziel-URL kopieren, behandelt die gcloud CLI die Ziel-URL als Ordner. Betrachten Sie beispielsweise den folgenden Befehl, wobei
your-dir
ein Ordner mit Dateien wiefile1
undfile2
ist:gcloud storage cp your-dir gs://your-bucket/abc --recursive
Aufgrund dieses Befehls erstellt Cloud Storage die Objekte
abc/your-dir/file1
undabc/your-dir/file2
im Bucketyour-bucket
.Wenn keine dieser Regeln zutrifft, prüft die gcloud CLI die Objekte im Bucket, um festzustellen, ob die Ziel-URL ein Objektname oder ein Ordner ist. Betrachten Sie beispielsweise den folgenden Befehl, wobei
your-file
der Name einer Datei ist:gcloud storage cp your-file gs://your-bucket/abc
Die Befehlszeile stellt eine Anfrage zur Auflistung von Objekten für
your-bucket
unter Verwendung des Trennzeichens/
und des Präfixes=abc
, um festzustellen, ob es inyour-bucket
Objekte gibt, deren Pfad mitabc/
beginnt. Ist dies der Fall, behandelt die gcloud CLIabc/
als Ordnernamen und der Befehl erstellt das Objektabc/your-file
im Bucketyour-bucket
. Andernfalls erstellt die gcloud CLI das Objektabc
inyour-bucket
.
Dieser regelbasierte Ansatz unterscheidet sich von der Funktionsweise vieler Tools, die 0-Byte-Objekte erstellen, um das Vorhandensein von Ordnern zu markieren. Die gcloud CLI versteht mehrere Konventionen, die von solchen Tools verwendet werden, z. B. die Konvention, dass _$folder$
am Ende des Namens des 0-Byte-Objekts hinzugefügt wird. Solche Markierungsobjekte müssen aber kein mit UNIX-Befehlen konsistentes Benennungsverhalten implementieren.
Wiederholungsversuche und Benennung
Wenn die gcloud CLI eine unterbrochene Anfrage wiederholt, tritt möglicherweise ein Problem auf, bei dem beim ersten Versuch eine Teilmenge von Dateien kopiert wird und bei den nachfolgenden Versuchen ein bereits vorhandener Zielordner gefunden wird, was dazu führt, dass Ihre Objekte falsch benannt werden.
Betrachten Sie zum Beispiel den folgenden Befehl, bei dem sich unter your-dir/
Unterordner befinden, z. B. dir1
und dir2
, und beide Unterordner enthalten die Datei abc
:
gcloud storage cp ./your-dir gs://your-bucket/new --recursive
Wenn der Pfad gs://your-bucket/new
noch nicht vorhanden ist, erstellt die gcloud CLI die folgenden Objekte beim ersten erfolgreichen Versuch:
new/dir1/abc new/dir2/abc
Beim nächsten erfolgreichen Versuch desselben Befehls erstellt die gcloud CLI jedoch die folgenden Objekte:
new/your-dir/dir1/abc new/your-dir/dir2/abc
Damit die gcloud CLI bei jedem Versuch konsistent funktioniert, versuchen Sie Folgendes:
Fügen Sie einen Schrägstrich am Ende der Ziel-URL hinzu, damit die gcloud CLI sie immer als Ordner behandelt.
Verwenden Sie
gcloud storage rsync
. Darsync
nicht die von Unix cp definierten Ordnerbenennungsregeln verwendet, ist die Funktionsweise konsistent, unabhängig davon, ob der Zielunterordner vorhanden ist oder nicht.
Weitere Informationen zum Erstellen von Namen finden Sie unter Namenserstellung mit cp
.
Zusätzliche Hinweise
Sie können kein Null-Byte-Objekt erstellen, um einen leeren Ordner mit der gcloud CLI nachzuahmen.
Wenn Sie Scripts verwenden, um Dateipfade durch Kombination von Unterpfaden zu erstellen, beachten Sie, dass
/
nur ein Zeichen ist, das zufällig im Namen des Objekts vorkommt, und die Befehlszeilengs://my-bucket/folder/
als ein anderes Objekt interpretieren alsgs://my-bucket//folder
.
REST APIs
JSON API
Ordner sind in der JSON API nicht vorhanden. Sie können die Liste der Objekte eingrenzen und Ordner mit den Abfrageparametern prefix
und delimiter
simulieren.
Wenn Sie beispielsweise alle Objekte im Bucket my-bucket
mit dem Präfix folder/subfolder/
auflisten möchten, stellen Sie eine Anfrage zur Objektauflistung unter Verwendung der folgenden URL:
"https://storage.googleapis.com/storage/v1/b/my-bucket/o?prefix=folder/subfolder/"
XML API
Ordner sind in der XML API nicht vorhanden. Sie können die Liste der Objekte eingrenzen und Ordner mit den prefix
und delimiter
Abfrageparameter.
Wenn Sie beispielsweise alle Objekte im Bucket my-bucket
mit dem Präfix folder/subfolder/
auflisten möchten, stellen Sie eine Anfrage zur Objektauflistung unter Verwendung der folgenden URL:
"https://storage.googleapis.com/my-bucket?prefix=folder/subfolder/"
Simulierte Ordner entfernen
Da simulierte Ordner nicht tatsächlich vorhanden sind, können Sie simulierte Ordner in der Regel entfernen, indem Sie Objekte umbenennen, sodass der simulierte Ordner nicht mehr Teil des Objektnamens ist. Wenn Sie beispielsweise ein Objekt mit dem Namen folder1/file
haben, können Sie den simulierten Ordner folder1/
entfernen. Benennen Sie dazu das Objekt in file
um.
Wenn Sie jedoch ein Tool verwendet haben, das Null-Byte-Objekte als Ordnerplatzhalter erstellt, z. B. die Google Cloud Console, müssen Sie das Null-Byte-Objekt löschen, um den Ordner zu entfernen. “
Unveränderlichkeit von Objekten
Objekte sind unveränderlich, d. h. ein hochgeladenes Objekt kann sich während seiner gesamten Speicherdauer nicht verändern. Die Speicherdauer eines Objekts ist die Zeit zwischen erfolgreicher Objekterstellung, wie z. B. Hochladen und erfolgreiche Objektlöschung. Das bedeutet in der Praxis, dass Sie keine inkrementellen Änderungen an Objekten vornehmen können, z. B. Anfüge- oder Kürzungsvorgänge. Es ist jedoch möglich, Objekte zu ersetzen, die in Cloud Storage gespeichert sind. Dies geschieht atomar: Bis zum Abschluss des neuen Uploads wird Lesern die alte Version des Objekts und nach Abschluss des Uploads die neue Version bereitgestellt. Ein einzelner Ersetzungsvorgang markiert also das Ende der Lebensdauer eines unveränderlichen Objekts und den Beginn der Lebensdauer eines neuen unveränderlichen Objekts.
Die Generierungsnummer für ein Objekt ändert sich jedes Mal, wenn Sie die Daten des Objekts ersetzen. Somit identifiziert die Generierungsnummer ein unveränderliches Objekt eindeutig.
Beachten Sie, dass beim schnellen Ersetzen desselben Objekts ein Limit von einem Mal pro Sekunde gilt. Wenn dasselbe Objekt öfter ersetzt wird, kann dies zu 429 Too Many Requests
-Fehlern führen. Sie sollten Ihre Anwendung so konfigurieren, dass Daten für ein bestimmtes Objekt nicht öfter als einmal pro Sekunde hochgeladen werden und gelegentliche 429 Too Many Requests
-Fehler mit einer exponentiellen Backoff-Wiederholungsstrategie bewältigt werden.
Nächste Schritte
- Objekte hochladen und herunterladen
- Vorhandenes Objekt verschieben
- Mehr zu Buckets, die Container für Objekte sind.
- Weitere Informationen zu verwalteten Ordnern