Verstehen Sie benutzerdefinierte Präfixe für Amazon S3 S3-Objekte - Amazon Data Firehose

Die Bereitstellung von Amazon Data Firehose-Streams an Apache Iceberg Tables in Amazon S3 befindet sich in der Vorschauversion und kann sich ändern.

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.

Verstehen Sie benutzerdefinierte Präfixe für Amazon S3 S3-Objekte

Objekte, die an Amazon S3 geliefert werden, folgen dem Namensformat von <evaluated prefix><suffix>. Sie können Ihr benutzerdefiniertes Präfix angeben, das Ausdrücke enthält, die zur Laufzeit ausgewertet werden. Das von Ihnen angegebene benutzerdefinierte Präfix überschreibt das Standardpräfix vonYYYY/MM/dd/HH.

Sie können Ausdrücke der folgenden Formen in Ihrem benutzerdefinierten Präfix verwenden: !{namespace:value}, wobei namespace einer von den beiden sein kann, wie in den folgenden Abschnitten erläutert.

  • firehose

  • timestamp

  • partitionKeyFromQuery

  • partitionKeyFromLambda

Wenn ein Präfix mit einem Schrägstrich endet, wird es als Ordner im Amazon-S3-Bucket angezeigt. Weitere Informationen finden Sie unter Amazon S3 Object Name Format im Amazon Data FirehoseDeveloper Guide.

Namespace timestamp

Gültige Werte für diesen Namespace sind Zeichenketten, die gültige DateTimeFormatterJava-Zeichenketten sind. Beispiel: Im Jahr 2018 wird der Ausdruck !{timestamp:yyyy} als 2018 ausgewertet.

Bei der Auswertung von Zeitstempeln verwendet Firehose den ungefähren Ankunftszeitstempel des ältesten Datensatzes, der in dem zu schreibenden Amazon S3 S3-Objekt enthalten ist.

Standardmäßig ist Timestamp aktiviert. UTC Sie können jedoch eine Zeitzone angeben, die Sie bevorzugen. Sie können beispielsweise die Zeitzone für Asien/Tokio in der AWS Management Console oder in der API Parametereinstellung (CustomTimeZone), wenn Sie stattdessen Japan Standard Time verwenden möchten. UTC Eine Liste der unterstützten Zeitzonen finden Sie unter Amazon S3 Object Name Format.

Wenn Sie den Namespace timestamp mehr als einmal in demselben Präfixausdruck verwenden, werden alle Instances mit demselben Zeitpunkt ausgewertet.

Namespace firehose

Es gibt zwei Werte, die Sie mit diesem Namespace verwenden können: error-output-type und random-string. In der folgenden Tabelle wird beschrieben, wie Sie diese verwenden.

Die firehose-Namespace-Werte
Konvertierung Beschreibung Beispieleingabe Beispielausgabe Hinweise
error-output-type Ergibt je nach Konfiguration Ihres Firehose-Streams und der Ursache des Fehlers eine der folgenden Zeichenketten: {processing-failed, -failed, AmazonOpenSearchService splunk-failed,,}. format-conversion-failed http-endpoint-failed

Wenn Sie ihn mehr als einmal in demselben Ausdruck verwenden, werden alle Instances als dieselbe Fehlerzeichenfolge ausgewertet.

myPrefix/result=!{firehose:error-output-type}/!{timestamp:yyyy/MM/dd} myPrefix/result=processing-failed/2018/08/03 Der error-output-type Wert kann nur in dem Feld verwendet werden. ErrorOutputPrefix
random-string

Wird als zufällige Zeichenfolge von 11 Zeichen ausgewertet. Wenn Sie ihn mehr als einmal in demselben Ausdruck verwenden, werden alle Instances als neue zufällige Zeichenfolge ausgewertet.

myPrefix/!{firehose:random-string}/ myPrefix/046b6c7f-0b/ Sie können ihn mit beiden Präfixtypen verwenden.

Sie können ihn an den Anfang der Formatzeichenfolge setzen, um ein zufälliges Präfix abzurufen. Dies ist manchmal erforderlich, wenn sie einen extrem hohen Durchsatz mit Amazon S3 erreichen möchten.

partitionKeyFromLambda- und partitionKeyFromQuery-Namespaces

Für die dynamische Partitionierung müssen Sie das folgende Ausdrucksformat in Ihrem S3-Bucket-Präfix verwenden: !{namespace:value}, wobei Namespace entweder partitionKeyFromQuery, partitionKeyFromLambda oder beides sein kann. Wenn Sie Inline-Parsing verwenden, um die Partitionierungsschlüssel für Ihre Quelldaten zu erstellen, müssen Sie einen S3-Bucket-Präfixwert angeben, der aus Ausdrücken besteht, die im folgenden Format angegeben sind: "partitionKeyFromQuery:keyID". Wenn Sie eine verwenden AWS Lambda-Funktion Um Partitionierungsschlüssel für Ihre Quelldaten zu erstellen, müssen Sie einen S3-Bucket-Präfixwert angeben, der aus Ausdrücken besteht, die im folgenden Format angegeben sind:. "partitionKeyFromLambda:keyID" Weitere Informationen finden Sie unter „Wählen Sie Amazon S3 für Ihr Ziel“ unter Amazon Firehose-Stream erstellen.

Semantische Regeln

Folgende Regeln gelten für die Ausdrücke Prefix und ErrorOutputPrefix.

  • Für den Namespace timestamp wird jedes Zeichen ausgewertet, das nicht in einfache Anführungszeichen gesetzt ist. Anders ausgedrückt: Alle Zeichenfolgen mit durch Escape-Zeichen geschützten einfachen Anführungszeichen im Wertefeld werden unverändert übernommen.

  • Wenn Sie ein Präfix angeben, das keinen Timestamp-Namespace-Ausdruck enthält, hängt Firehose den Ausdruck an den Wert im !{timestamp:yyyy/MM/dd/HH/} Feld an. Prefix

  • Die Sequenz !{ kann nur in !{namespace:value}-Ausdrücken angezeigt werden.

  • ErrorOutputPrefix kann nur dann Null sein, wenn Prefix keine Ausdrücke enthält. In diesem Fall wird Prefix als <specified-prefix>yyyy/MM/DDD/HH/ und ErrorOutputPrefix als <specified-prefix><error-output-type>YYYY/MM/DDD/HH/ ausgewertet. DDD repräsentiert den Tag des Jahres.

  • Wenn Sie einen Ausdruck für ErrorOutputPrefix angeben, müssen Sie mindestens eine Instance von !{firehose:error-output-type} einschließen.

  • Prefix kann nicht !{firehose:error-output-type} enthalten.

  • Weder Prefix noch ErrorOutputPrefix können nach der Auswertung länger als 512 Zeichen sein.

  • Wenn das Ziel Amazon Redshift ist, darf Prefix keine Ausdrücke enthalten und ErrorOutputPrefix muss Null sein.

  • Wenn das Ziel Amazon OpenSearch Service oder Splunk ist und kein Ziel angegeben ErrorOutputPrefix ist, verwendet Firehose das Prefix Feld für fehlgeschlagene Datensätze.

  • Wenn das Ziel Amazon S3 ist, werden das Prefix und ErrorOutputPrefix in der Amazon-S3-Zielkonfiguration für erfolgreiche Datensätze bzw. fehlgeschlagene Datensätze verwendet. Wenn Sie das AWS CLI oder dieAPI, mit der Sie ExtendedS3DestinationConfiguration eine Amazon S3-Backup-Konfiguration mit eigenem Prefix und angeben könnenErrorOutputPrefix.

  • Wenn Sie den verwenden AWS Management Console und als Ziel Amazon S3 festlegen, verwendet Firehose das Prefix und ErrorOutputPrefix in der Zielkonfiguration für erfolgreiche bzw. fehlgeschlagene Datensätze. Wenn Sie ein Präfix mithilfe von Ausdrücken angeben, müssen Sie das Fehlerpräfix einschließlich !{firehose:error-output-type} angeben.

  • Wenn Sie ExtendedS3DestinationConfiguration mit dem verwenden AWS CLI, dasAPI, oder AWS CloudFormation, wenn Sie eine angebenS3BackupConfiguration, stellt Firehose keine Standardeinstellung ErrorOutputPrefix bereit.

  • Sie können beim Erstellen von partitionKeyFromLambda Ausdrücken keine partitionKeyFromQuery Namespaces verwenden. ErrorOutputPrefix

Beispielpräfixe

Beispiele für Prefix und ErrorOutputPrefix
Eingabe Evaluiertes Präfix (am 27. August 2018 um 10:30 UhrUTC)

Prefix: Nicht angegeben

ErrorOutputPrefix: myFirehoseFailures/!{firehose:error-output-type}/

Prefix: 2018/08/27/10

ErrorOutputPrefix: myFirehoseFailures/processing-failed/

Prefix: !{timestamp:yyyy/MM/dd}

ErrorOutputPrefix: Nicht angegeben

Ungültige Eingabe: ErrorOutputPrefix kann nicht Null sein, wenn Präfix Ausdrücke enthält

Prefix: myFirehose/DeliveredYear=!{timestamp:yyyy}/anyMonth/rand=!{firehose:random-string}

ErrorOutputPrefix: myFirehoseFailures/!{firehose:error-output-type}/!{timestamp:yyyy}/anyMonth/!{timestamp:dd}

Prefix: myFirehose/DeliveredYear=2018/anyMonth/rand=5abf82daaa5

ErrorOutputPrefix: myFirehoseFailures/processing-failed/2018/anyMonth/10

Prefix: myPrefix/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/

ErrorOutputPrefix: myErrorPrefix/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}

Prefix: myPrefix/year=2018/month=07/day=06/hour=23/

ErrorOutputPrefix: myErrorPrefix/year=2018/month=07/day=06/hour=23/processing-failed

Prefix: myFirehosePrefix/

ErrorOutputPrefix: Nicht angegeben

Prefix: myFirehosePrefix/2018/08/27/

ErrorOutputPrefix: myFirehosePrefix/processing-failed/2018/08/27/