View a markdown version of this page

Anhang: Antwort SelectObjectContent - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Anhang: Antwort SelectObjectContent

Description

Die Amazon S3 Select-Operation filtert den Inhalt eines Amazon S3-Objekts auf der Grundlage einer einfachen SQL-Anweisung (Structured Query Language). Da die Antwortgröße dieses Vorgangs unbekannt ist, streamt Amazon S3 Select die Antwort als eine Reihe von Nachrichten und schließt einen Transfer-Encoding Header ein, dessen Wert in der Antwort enthalten ist. chunked

Weitere Informationen zu Amazon S3 Select finden Sie unter Inhalte aus Objekten auswählen im Amazon Simple Storage Service-Benutzerhandbuch.

Weitere Informationen zur Verwendung von SQL mit Amazon S3 Select finden Sie unter SQL-Referenz für Amazon S3 Select und Amazon Glacier Select im Amazon Simple Storage Service-Benutzerhandbuch.

Antworten

Ein erfolgreicher Amazon S3 Select-Vorgang gibt 200 OK den Statuscode zurück.

Antwort-Header

Bei dieser Implementierung des Vorgangs werden nur Antwort-Header verwendet, die den meisten Antworten gemeinsam sind. Weitere Informationen finden Sie unter Allgemeine Antwortheader.

Antworttext

Da die Amazon S3 Select-Antwortgröße unbekannt ist, streamt Amazon S3 die Antwort als eine Reihe von Nachrichten und nimmt einen Transfer-Encoding Header mit chunked als Wert in die Antwort auf. Das folgende Beispiel zeigt das Antwortformat auf der obersten Ebene:

<Message 1> <Message 2> <Message 3> ...... <Message n>

Jede Nachricht besteht aus zwei Abschnitten: der Einleitung und den Daten. Der Vorspielabschnitt besteht aus 1) der gesamten Bytelänge der Nachricht und 2) der kombinierten Bytelänge aller Header. Der Datenbereich besteht aus 1) den Headern und 2) einer Nutzlast.

Jeder Abschnitt endet mit einer 4-Byte-Big-Endian-Integer-Prüfsumme (CRC). Amazon S3 Select verwendet CRC32 (oft als GZIP CRC32 bezeichnet), um beide CRCs zu berechnen. Weitere Informationen zu CRC32 finden Sie unter GZIP-Dateiformatspezifikation Version 4.3.

Der gesamte Nachrichten-Overhead einschließlich des Vorspiels und beider Prüfsummen beträgt 16 Byte.

Anmerkung

Alle integer Werte in Nachrichten sind in der Netzwerk-Byte-Reihenfolge oder in der Big-Endian-Reihenfolge angegeben.

Das folgende Diagramm zeigt die Komponenten, aus denen eine Nachricht und ein Header bestehen. Beachten Sie, dass es mehrere Header pro Nachricht gibt.

Ein Beispiel für eine Nachrichtenstruktur, die die gesamte Bytelänge, die Header-Bytelänge, das Präludium, den Header, die Nutzlast und die Nachrichten-CRC anzeigt.
Anmerkung

Für Amazon S3 Select ist der Header-Werttyp immer 7 (type=STRING). Bei diesem Typ besteht der Header-Wert aus zwei Komponenten, einer 2-Byte-Big-Endian-Ganzzahl und einer UTF-8 Zeichenfolge, die diese Byte-Länge hat. Das folgende Diagramm zeigt die Komponenten, aus denen die Amazon S3 Select-Header bestehen.

Die Header-Struktur zeigt die Bytelänge des Header-Namens, die Zeichenfolge für den Header-Namen, den Header-Werttyp, die Bytelänge des Werts und die Wertzeichenfolge.

Berechnungen der Nutzlast in der Bytelänge (diese beiden Berechnungen sind gleichwertig):

  • payload_length = total_length - header_length - sizeOf (total_length) - SizeOf (header_length) - SizeOf (prelude_crc) - SizeOf (message_crc)

  • Nutzlastlänge = Gesamtlänge — Kopfzeilenlänge — 16

Jede Nachricht enthält die folgenden Komponenten:

  • Präludium: Immer feste Größe von 8 Byte (zwei Felder mit jeweils 4 Byte):

    • Die ersten vier Byte: Gesamtbytelänge: Big-endian Ganzzahl-Bytelänge der gesamten Nachricht (einschließlich des Felds mit der Gesamtlänge von 4 Byte selbst).

    • Die zweiten vier Byte: Bytelänge der Kopfzeile: Big-endian Ganzzahl-Bytelänge des Header-Teils der Nachricht (mit Ausnahme des Felds für die Header-Länge selbst).

  • Prelude CRC: 4-Byte-Big-Endian-Integer-Prüfsumme (CRC) für den Auftaktteil der Nachricht (ohne den CRC selbst). Das Präludium hat einen vom Nachrichten-CRC getrennten CRC (siehe unten), um sicherzustellen, dass beschädigte Informationen mit Bytelänge sofort erkannt werden können, ohne dass es zu pathologischem Pufferverhalten kommt.

  • Header: Eine Reihe von Metadaten, die die Nachricht mit Anmerkungen versehen, z. B. der Nachrichtentyp, das Nutzdatenformat usw. Nachrichten können mehrere Header haben, sodass dieser Teil der Nachricht je nach Nachrichtentyp unterschiedliche Bytelängen haben kann. Header sind Schlüssel-Wert-Paare, wobei sowohl der Schlüssel als auch der Wert Zeichenketten sind. UTF-8 Header können in beliebiger Reihenfolge innerhalb des Header-Bereichs der Nachricht erscheinen, und jeder angegebene Header-Typ kann nur einmal vorkommen.

    Für Amazon S3 Select finden Sie im Folgenden eine Liste mit Header-Namen und den Satz gültiger Werte, abhängig vom Nachrichtentyp.

    • MessageType Kopfzeile:

      • HeaderName => „:Nachrichtentyp“

      • Gültig HeaderValues => „Fehler“, „Ereignis“

    • EventType Kopfzeile:

      • HeaderName => „:Ereignistyp“

      • Valid HeaderValues => „Datensätze“, „Cont“, „Progress“, „Stats“, „End“

    • ErrorCode Kopfzeile:

    • ErrorMessage Kopfzeile:

      • HeaderName => „:Fehlermeldung“

      • Gültig HeaderValues => Vom Service zurückgegebene Fehlermeldung, um Fehler auf Anforderungsebene zu diagnostizieren.

  • Payload: Kann alles sein.

  • Nachrichten-CRC: 4-Byte-Big-Endian-Integer-Prüfsumme (CRC) vom Anfang der Nachricht bis zum Anfang der Prüfsumme (d. h. alles in der Nachricht, außer dem Nachrichten-CRC selbst).

Jeder Header enthält die folgenden Komponenten. Es kann mehrere Header pro Nachricht geben.

  • Header-Name Byte-Length: Byte-length des Header-Namens.

  • Header-Name: Name der Kopfzeile, der den Header-Typ angibt. Gültige Werte: „:message-type“ „:event-type“ „:error-code“ „:error-message“

  • Header-Werttyp: Enum, das den Header-Werttyp angibt. Für Amazon S3 Select ist dies immer 7.

  • Wertzeichenfolge Byte-Length: (Für Amazon S3 Select) Byte-length der Header-Wertezeichenfolge.

  • Zeichenfolge mit Header-Wert: (Für Amazon S3 Select) Wert der Header-Zeichenfolge. Die gültigen Werte für dieses Feld variieren je nach Typ des Headers. In den folgenden Abschnitten finden Sie gültige Werte für jeden Headertyp und Nachrichtentyp.

Bei Amazon S3 Select können Antworten Nachrichten der folgenden Typen sein:

  • Nachricht mit Datensätzen: Kann einen einzelnen Datensatz, Teildatensätze oder mehrere Datensätze enthalten. Je nach Größe des Ergebnisses kann eine Antwort eine oder mehrere dieser Meldungen enthalten.

  • Fortsetzungsnachricht: Amazon S3 sendet diese Nachricht regelmäßig, um die TCP-Verbindung aufrechtzuerhalten. Diese Nachrichten erscheinen in den Antworten nach dem Zufallsprinzip. Der Client muss den Nachrichtentyp erkennen und entsprechend verarbeiten.

  • Fortschrittsmeldung: Amazon S3 sendet diese Meldung regelmäßig, falls gewünscht. Sie enthält Informationen über den Fortschritt einer Abfrage, die gestartet, aber noch nicht abgeschlossen wurde.

  • Statistikmeldung: Amazon S3 sendet diese Nachricht am Ende der Anfrage. Sie enthält Statistiken über die Abfrage.

  • Endnachricht: Zeigt an, dass die Anfrage abgeschlossen ist und keine weiteren Nachrichten gesendet werden. Sie sollten nicht davon ausgehen, dass die Anfrage abgeschlossen ist, bis der Client eine End Nachricht erhält.

  • RequestLevelError Nachricht: Amazon S3 sendet diese Nachricht, wenn die Anfrage aus irgendeinem Grund fehlgeschlagen ist. Sie enthält den Fehlercode und die Fehlermeldung für den Fehler. Wenn Amazon S3 eine RequestLevelError Nachricht sendet, wird keine End Nachricht gesendet.

In den folgenden Abschnitten wird die Struktur der einzelnen Nachrichtentypen ausführlicher erläutert.

Beispielcode und Komponententests, die dieses Protokoll verwenden, finden Sie auf der GitHub Website unter AWS C Event Stream.

Zeichnet die Nachricht auf

Header-Spezifikation

Datensatznachrichten enthalten drei Header, wie folgt:

Ein Beispiel für eine Nachrichtenstruktur, einschließlich der Header für diesen Datensatztyp.
Spezifikation der Nutzlast

Payloads für Datensatznachrichten können einen einzelnen Datensatz, Teildatensätze oder mehrere Datensätze enthalten.

Meldung zur Fortsetzung

Header-Spezifikation

Fortsetzungsnachrichten enthalten zwei Header, wie folgt:

Ein Beispiel für eine Nachrichtenstruktur, einschließlich der Header für diesen Datensatztyp.
Spezifikation der Nutzlast

Fortsetzungsnachrichten haben keine Nutzlast.

Fortschrittsmeldung

Header-Spezifikation

Fortschrittsmeldungen enthalten drei Header, wie folgt:

Ein Beispiel für eine Nachrichtenstruktur, einschließlich der Header für diesen Datensatztyp.
Spezifikation der Nutzlast

Die Nutzlast für Fortschrittsnachrichten ist ein XML-Dokument, das Informationen über den Fortschritt einer Anfrage enthält.

  • BytesScanned=> Anzahl der Byte, die vor der Dekomprimierung verarbeitet wurden (falls die Datei komprimiert ist).

  • BytesProcessed=> Anzahl der Bytes, die nach dem Entpacken verarbeitet wurden (falls die Datei komprimiert ist).

  • BytesReturned=> Aktuelle Anzahl der von Amazon S3 zurückgegebenen Nutzlastdaten in Byte für Datensätze.

Für unkomprimierte Dateien BytesProcessed sind BytesScanned und gleich.

Beispiel:

<?xml version="1.0" encoding="UTF-8"?> <Progress> <BytesScanned>512</BytesScanned> <BytesProcessed>1024</BytesProcessed> <BytesReturned>1024</BytesReturned> </Progress>

Statistische Meldung

Header-Spezifikation

Statistiknachrichten enthalten drei Header, wie folgt:

Ein Beispiel für eine Nachrichtenstruktur, einschließlich der Header für diesen Datensatztyp.
Spezifikation der Nutzlast

Die Nutzlast der Statistiknachricht ist ein XML-Dokument, das Informationen über die Statistiken einer Anfrage enthält, wenn die Verarbeitung abgeschlossen ist.

  • BytesScanned=> Anzahl der Bytes, die vor der Dekomprimierung verarbeitet wurden (falls die Datei komprimiert ist).

  • BytesProcessed=> Anzahl der Bytes, die nach dem Entpacken verarbeitet wurden (falls die Datei komprimiert ist).

  • BytesReturned=> Gesamtzahl der Byte der von Amazon S3 zurückgegebenen Nutzdaten für Datensätze.

Für unkomprimierte Dateien BytesProcessed sind BytesScanned und gleich.

Beispiel:

<?xml version="1.0" encoding="UTF-8"?> <Stats> <BytesScanned>512</BytesScanned> <BytesProcessed>1024</BytesProcessed> <BytesReturned>1024</BytesReturned> </Stats>

Nachricht beenden

Header-Spezifikation

Endnachrichten enthalten zwei Header, wie folgt:

Ein Beispiel für eine Nachrichtenstruktur, einschließlich der Header für diesen Datensatztyp.
Spezifikation der Nutzlast

Endnachrichten haben keine Nutzlast.

Fehlermeldung auf Anforderungsebene

Header-Spezifikation

Request-level Fehlermeldungen enthalten drei Header, wie folgt:

Ein Beispiel für eine Nachrichtenstruktur, einschließlich der Header für diesen Datensatztyp.

Eine Liste möglicher Fehlercodes und Fehlermeldungen finden Sie imListe der SELECT-Fehlercodes für den Objektinhalt.

Spezifikation der Nutzlast

Request-level Fehlermeldungen haben keine Nutzlast.

Verwandte Ressourcen