Objektschlüssel und Metadaten - Amazon Simple Storage Service

Objektschlüssel und Metadaten

Jedes Amazon S3-Objekt hat Daten, einen Schlüssel und Metadaten. Der Objektschlüssel (oder Schlüsselname) identifiziert das Objekt in einem Bucket eindeutig. Objekt-Metadaten bestehen aus Name/Wert-Paaren. Sie können Objekt-Metadaten beim Hochladen festlegen. Nachdem Sie das Objekt hochgeladen haben, können Sie Objekt-Metadaten nicht mehr ändern. Die einzige Methode, wie Sie Objekt-Metadaten ändern können, ist es, eine Kopie des Objekts anzulegen und die Metadaten festzulegen.

Objektschlüssel

Wenn Sie ein Objekt erstellen, geben Sie den Schlüsselnamen an, der das Objekt in dem Bucket eindeutig identifiziert. Wenn Sie in der Amazon S3-Konsole einen Bucket markieren, erscheint beispielsweise eine Liste der Objekte in Ihrem Bucket. Diese Namen sind die Objektschlüssel. Der Name für einen Schlüssel ist eine Sequenz aus Unicode-Zeichen, deren UTF-8-Codierung maximal 1.024 Byte lang ist.

Das Amazon S3-Datenmodell ist eine Flatfile-Struktur: Sie erstellen einen Bucket und der Bucket speichert Objekte. Es gibt keine Hierarchie von Unterbuckets oder Unterordnern. Sie können jedoch mit den Schlüsselnamenpräfixen und Trennzeichen eine logische Hierarchie erschließen, wie dies die Amazon S3-Konsole tut. Die Amazon S3-Konsole unterstützt ein Ordnerkonzept.

Angenommen, Ihr Bucket (admin-created) enthält vier Objekte mit den folgenden Objektschlüsseln:

Development/Projects.xls

Finance/statement1.pdf

Private/taxdocument.pdf

s3-dg.pdf

Die Konsole verwendet die Schlüsselpräfixe (Development/, Finance/ und Private/) und das Trennzeichen ('/'), um eine Ordnerstruktur wie dargestellt anzuzeigen.


          Screenshot der Amazon S3-Konsole mit den Ordnern Development, Finance und Private.

Der s3-dg.pdf-Schlüssel hat kein Präfix, deshalb erscheint sein Objekt direkt auf Root-Ebene des Buckets. Wenn Sie den Ordner Development/ öffnen, werden Sie darin das Objekt Projects.xlsx sehen.


          Screenshot der Amazon S3-Konsole mit der im Ordner Development gewählten Datei Projects.xlsx.
Anmerkung
  • Amazon S3 unterstützt Buckets und Objekte und es gibt keine Hierarchie. Die Präfixe und Trennzeichen in einem Objektschlüsselnamen gestatten der Amazon S3-Konsole und den AWS SDKs jedoch, eine Hierarchie abzuleiten und das Ordnerkonzept einzuführen.

  • Die Amazon S3-Konsole implementiert die Ordnerobjekterstellung, indem sie ein Null-Byte-Objekt mit dem Wert des Ordners für Präfix und Trennzeichen als Schlüssel erstellt. Diese Ordnerobjekte werden nicht in der Konsole angezeigt, verhalten sich jedoch wie alle anderen Objekte und können über die API, die AWS CLI und SDKs angezeigt und bearbeitet werden.

Richtlinien für Objektschlüsselnamen

Sie können in einem Objektschlüsselnamen jedes beliebige UTF-8-Zeichen verwenden. Die Verwendung bestimmter Zeichen in Schlüsselnamen kann jedoch bei manchen Anwendungen und Protokollen zu Problemen führen. Die folgenden Richtlinien helfen Ihnen, die Konformität mit DNS, web-sicheren Zeichen, XML-Parsern und anderen APIs zu maximieren.

Sichere Zeichen

Die folgenden Zeichensätze sind allgemein sicher für die Verwendung in Schlüsselnamen.

Alphanumerische Zeichen
  • 0-9

  • a-z

  • A-Z

Sonderzeichen
  • Schrägstrich (/)

  • Ausrufezeichen (!)

  • Bindestrich (-)

  • Unterstrich (_)

  • Punkt (.)

  • Sternchen (*)

  • Einzelnes Anführungszeichen (')

  • Öffnende Klammer (()

  • Schließende Klammer ())

Nachfolgend finden Sie Beispiele für gültige Objektschlüsselnamen:

  • 4my-organization

  • my.great_photos-2014/jan/myvacation.jpg

  • videos/2014/birthday/video1.wmv

Wichtig

Wenn der Schlüsselname eines Objekts mit einem Punkt (.) oder zwei Punkten (..) endet, können Sie das Objekt nicht über die Amazon S3-Konsole herunterladen. Um ein Objekt mit einem Schlüsselnamen herunterzuladen, der mit „.“ oder „..“ endet, müssen Sie die AWS Command Line Interface (AWS CLI), AWS SDKs oder die REST API verwenden.

Zeichen, die möglicherweise eine Sonderverarbeitung benötigen

Die folgenden Zeichen in einem Schlüsselnamen erfordern möglicherweise eine zusätzliche Verarbeitung im Code oder müssen URL-codiert oder als HEX angegeben werden. Einige davon sind nicht darstellbare Zeichen, und Ihr Browser kann sie ggf. nicht verarbeiten, was zudem einer speziellen Vorgehensweise bedarf:

  • Ampersand ("&")

  • Dollar ("$")

  • ASCII-Zeichenbereiche 00–1F hex (0–31 dezimal) und 7F (127 dezimal)

  • 'At'-Symbol ("@")

  • Gleichheitszeichen ("=")

  • Semikolon (";")

  • Doppelpunkt (":")

  • Plus ("+")

  • Leerzeichen – Wichtige Leerzeichenfolgen gehen möglicherweise bei bestimmten Verwendungszwecken verloren (insbesondere Mehrfachleerzeichen).

  • Komma (",")

  • Fragezeichen ("?")

Zeichen, die Sie vermeiden sollten

Sie sollten in Schlüsselnamen die folgenden Zeichen vermeiden, weil sie einen maßgeblichen Arbeitsaufwand erfordern, um konsistent über alle Anwendungen zu sein.

  • Umgekehrter Schrägstrich ("\")

  • Linke geschweifte Klammer ("{")

  • Nicht darstellbare ASCII-Zeichen (128–255 Dezimalzeichen)

  • Caret ("^")

  • Rechte geschweifte Klammer ("}")

  • Prozentzeichen ("%")

  • Accent Grave ("`")

  • Rechte eckige Klammer ("]")

  • Anführungszeichen

  • Größersymbol (">")

  • Linke eckige Klammer ("[")

  • Tilde ("~")

  • Kleiner als-Zeichen („<“)

  • Pfundzeichen ("#")

  • Vertikaler Strich ("|")

Objekt-Metadaten

Es gibt zweierlei Arten von Metadaten: System-Metadaten und benutzerdefinierte Metadaten.

Systemdefinierte Objektmetadaten

Amazon S3 verwaltet für jedes in einem Bucket gespeicherte Objekt einen Satz Systemmetadaten. Amazon S3 verarbeitet diese Systemmetadaten nach Bedarf. Beispielsweise verwaltet Amazon S3 das Erstellungsdatum eines Objekts und seine Größe als Metadaten und verwendet dies Information für die Objektverwaltung.

Es gibt zwei Kategorien von Systemmetadaten:

  1. Metadaten wie beispielsweise das Erstellungsdatum werden vom System gesteuert, und nur Amazon S3 kann den Wert ändern.

  2. Andere Systemmetadaten, wie beispielsweise die für das Objekt konfigurierte Speicherklasse, und ob für das Objekt eine serverseitige Verschlüsselung aktiviert ist, sind Beispiele für Metadaten, deren Werte Sie steuern können. Wenn Ihr Bucket als Website konfiguriert ist, wollen Sie eine Seite möglicherweise irgendwann auf eine andere Seite oder zu einer externen URL umleiten. In diesem Fall ist eine Webseite ein Objekt in Ihrem Bucket. Amazon S3 speichert den Wert für die Seitenumleitung als Systemmetadaten, deren Wert Sie steuern können

    Wenn Sie Objekte erstellen, können Sie Werte dieser Systemmetadaten konfigurieren oder sie nach Bedarf aktualisieren. Weitere Informationen über Speicherklassen finden Sie unter Amazon S3-Speicherklassen.

    Weitere Informationen zur serverseitigen Verschlüsselung finden Sie unter Datenschutz durch Verschlüsselung.

Die folgenden Tabelle enthält eine Liste der vom System definierten Metadaten, und gibt an, ob Sie sie aktualisieren können.

Name Beschreibung Kann der Benutzer den Wert ändern?
Datum Aktuelles Datum und Uhrzeit. Nein
Content-Length Objektgröße in Bytes. Nein
Content-Type Objekttyp. Ja
Letzte Änderung

Datum, zu dem das Objekt erstellt wurde, oder das letzte Änderungsdatum, je nachdem, welcher Wert der neueste ist.

Nein
Inhalt-MD5 Der base64-verschlüsselte 128-Bit-MD5-Digest des Objekts. Ja
x-amz-server-side-encryption Gibt an, ob für das Objekt die serverseitige Verschlüsselung aktiviert ist und ob diese Verschlüsselung über die von AWS Key Management Service (AWS KMS) oder von Amazon S3 verwalteten Verschlüsselung (SSE-S3) erfolgt. Weitere Informationen finden Sie unter Schützen von Daten mithilfe serverseitiger Verschlüsselung. Ja
x-amz-version-id Objektversion. Wenn Sie das Versioning für einen Bucket aktivieren, weist Amazon S3 allen Objekten, die dem Bucket hinzugefügt werden, eine Versions-ID zu. Weitere Informationen finden Sie unter Verwenden von Versioning. Nein
x-amz-delete-marker In einem Bucket, für den das Versioning aktiviert ist, gibt dieses Boolesche Kennzeichen an, ob das Objekt eine Löschmarkierung ist. Nein
x-amz-storage-class Speicherklasse, für die Speicherung des Objekts verwendet wird. Weitere Informationen finden Sie unter Amazon S3-Speicherklassen. Ja
x-amz-website-redirect-location Leitet Anforderungen für das jeweilige Objekt auf ein anderes Objekt im selben Bucket oder zu einer externen URL um. Weitere Informationen finden Sie unter (Optional) Konfigurieren einer Webseiten-Umleitung. Ja
x-amz-server-side-encryption-aws-kms-key-id Wenn x-amz-server-side-encryption mit dem Wert aws:kms vorhanden ist, wird dadurch die ID des AWS KMS-Kundenmasterschlüssels (CMK) angegeben, der für das Objekt verwendet wurde. Ja
x-amz-server-side-encryption-customer-algorithm Gibt an, ob die serverseitige Verschlüsselung mit vom Kunden bereitgestellten Verschlüsselungsschlüsseln (SSE-C) aktiviert ist. Weitere Informationen finden Sie unter Schützen von Daten durch eine serverseitige Verschlüsselung mit vom Kunden bereitgestellten Verschlüsselungsschlüsseln (SSE-C). Ja

Benutzerdefinierte Objektmetadaten

Wenn Sie ein Objekt hochladen, können Sie ihm Metadaten zuweisen. Sie geben diese optionalen Informationen als Name-Wert-Paar (Schlüssel-Wert) an, wenn Sie eine PUT- oder POST-Anforderung senden, um das Objekt zu erstellen. Wenn Sie Objekte mit der REST API hochladen, müssen die optionalen benutzerdefinierten Metadatennamen mit "x-amz-meta-" beginnen, damit sie von den anderen HTTP-Header unterschieden werden können. Wenn Sie das Objekt mit der REST API abrufen, wird dieses Präfix zurückgegeben. Wenn Sie Objekte mit der SOAP API hochladen, ist das Präfix nicht erforderlich. Wenn Sie das Objekt mit der SOAP API abrufen, wird das Präfix entfernt, unabhängig davon, welche API Sie zum Hochladen des Objekts verwendet haben.

Anmerkung

Die SOAP-Unterstützung über HTTP ist veraltet, steht über HTTPS aber noch zur Verfügung. Die neuen Amazon S3-Funktionen werden unter SOAP nicht unterstützt. Wir empfehlen, entweder die REST API oder die AWS SDKs zu verwenden.

Wenn Metadaten über die REST API abgerufen werden, kombiniert Amazon S3 Header, die denselben Namen haben (wobei die Groß-/Kleinschreibung ignoriert wird) in einer durch Kommas getrennten Liste. Wenn einige Metadaten nicht darstellbare Zeichen enthalten, werden sie nicht zurückgegeben. Stattdessen wird der x-amz-missing-meta-Header mit der Anzahl der nicht darstellbaren Metadateneinträge als Wert zurückgegeben.

Benutzerdefinierte Metadaten sind Schlüssel/Wert-Paare. Amazon S3 speichert benutzerdefinierte Metadatenschlüssel in Kleinbuchstaben.

Amazon S3 erlaubt beliebige Unicode-Zeichen in Ihren Metadatenwerten.

Um Probleme bei der Darstellung dieser Metadatenwerte zu vermeiden, sollten Sie US-ASCII-Zeichen verwenden, wenn REST verwendet wird, und UTF-8-Zeichen, wenn SOAP oder browserbasierte Uploads über POST verwendet werden.

Wenn Sie Nicht-US-ASCII-Zeichen in Ihren Metadatenwerten verwenden, wird die bereitgestellte Unicode-Zeichenfolge auf Nicht-US-ASCII-Zeichen untersucht. Wenn die Zeichenfolge nur US-ASCII Zeichen enthält, wird sie so dargestellt, wie sie ist. Wenn die Zeichenfolge Nicht-US-ASCII Zeichen enthält, wird sie zuerst mit UTF-8 zeichencodiert und dann in US-ASCII codiert.

Beispiel:

PUT /Key HTTP/1.1 Host: awsexamplebucket1.s3.amazonaws.com x-amz-meta-nonascii: ÄMÄZÕÑ S3 HEAD /Key HTTP/1.1 Host: awsexamplebucket1.s3.amazonaws.com x-amz-meta-nonascii: =?UTF-8?B?w4PChE3Dg8KEWsODwpXDg8KRIFMz?= PUT /Key HTTP/1.1 Host: awsexamplebucket1.s3.amazonaws.com x-amz-meta-ascii: AMAZONS3 HEAD /Key HTTP/1.1 Host: awsexamplebucket1.s3.amazonaws.com x-amz-meta-ascii: AMAZONS3
Anmerkung

Der PUT-Anforderungs-Header ist auf eine Größe von 8 KB begrenzt. Innerhalb des PUT-Anforderungsheaders sind die benutzerdefinierten Metadaten auf eine Größe von 2 KB begrenzt. Die Größe der benutzerdefinierten Metadaten wird anhand der Summe der Byteanzahl der UTF-8-Codierung jedes Schlüssels und Werts gemessen.

Informationen dazu, wie Sie einem Objekt Metadaten hinzufügen, nachdem es hochgeladen wurde, finden Sie unter Wie füge ich einem S3-Objekt Metadaten hinzu? im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.