Comprendi i prefissi personalizzati per gli oggetti Amazon S3 - Amazon Data Firehose

La distribuzione di stream Amazon Data Firehose ad Apache Iceberg Tables in Amazon S3 è in anteprima ed è soggetta a modifiche.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Comprendi i prefissi personalizzati per gli oggetti Amazon S3

<evaluated prefix><suffix>Gli oggetti consegnati ad Amazon S3 seguono il formato del nome di. Puoi specificare il tuo prefisso personalizzato che include espressioni che vengono valutate in fase di esecuzione. Il prefisso personalizzato specificato sostituirà il prefisso predefinito di. YYYY/MM/dd/HH

Puoi utilizzare le seguenti forme di espressione nel prefisso personalizzato: !{namespace:value}, dove namespace può essere uno dei seguenti, come descritto nelle sezioni successive.

  • firehose

  • timestamp

  • partitionKeyFromQuery

  • partitionKeyFromLambda

Se un prefisso termina con una barra, viene visualizzato come cartella nel bucket Amazon S3. Per ulteriori informazioni, consulta Amazon S3 Object Name Format nella Amazon Data FirehoseDeveloper Guide.

Spazio dei nomi timestamp

I valori validi per questo spazio dei nomi sono stringhe che sono stringhe Java valide. DateTimeFormatter Ad esempio, nell'anno 2018, l'espressione !{timestamp:yyyy} restituisce 2018.

Durante la valutazione dei timestamp, Firehose utilizza il timestamp di arrivo approssimativo del record più vecchio contenuto nell'oggetto Amazon S3 in fase di scrittura.

Per impostazione predefinita, UTC il timestamp è attivo. Tuttavia, puoi specificare il fuso orario che preferisci. Ad esempio, puoi configurare il fuso orario per Asia/Tokyo nel AWS Management Console o nell'impostazione API dei parametri (CustomTimeZone) se si desidera utilizzare l'ora solare giapponese anziché. UTC Per visualizzare l'elenco dei fusi orari supportati, consulta Amazon S3 Object Name Format.

Se utilizzi lo spazio dei nomi timestamp più di una volta nella stessa espressione del prefisso, ogni istanza restituisce lo stesso istante temporale.

Spazio dei nomi firehose

Con questo spazio dei nomi puoi utilizzare due valori: error-output-type e random-string. La tabella seguente spiega come utilizzarli.

Valori dello spazio dei nomi firehose
Conversione Descrizione Input di esempio Output di esempio Note
error-output-type Restituisce una delle seguenti stringhe, a seconda della configurazione del flusso Firehose e del motivo dell'errore: {processing-failed, AmazonOpenSearchService -failed, splunk-failed,,}. format-conversion-failed http-endpoint-failed

Se lo utilizzi più di una volta nella stessa espressione, ogni istanza restituisce la stessa stringa di errore.

myPrefix/result=!{firehose:error-output-type}/!{timestamp:yyyy/MM/dd} myPrefix/result=processing-failed/2018/08/03 Il valore può essere utilizzato solo nel campo. error-output-type ErrorOutputPrefix
random-string

Restituisce una stringa casuale di 11 caratteri. Se lo utilizzi più di una volta nella stessa espressione, ogni istanza restituisce una nuova stringa casuale.

myPrefix/!{firehose:random-string}/ myPrefix/046b6c7f-0b/ Puoi utilizzarlo con entrambi i tipi di prefisso.

Puoi posizionarlo all'inizio della stringa di formato per ottenere un prefisso randomizzato, che talvolta è necessario per ottenere una velocità di trasmissione effettiva estremamente elevata con Amazon S3.

Spazi dei nomi partitionKeyFromLambda e partitionKeyFromQuery

Per il partizionamento dinamico, è necessario utilizzare il seguente formato di espressione nel prefisso del bucket S3: !{namespace:value}, dove lo spazio dei nomi può essere partitionKeyFromQuery o partitionKeyFromLambda o entrambi. Se si utilizza l'analisi in linea per creare le chiavi di partizionamento per i dati di origine, è necessario specificare un valore del prefisso del bucket S3 costituito da espressioni specificate nel seguente formato: "partitionKeyFromQuery:keyID". Se si utilizza un AWS Funzione Lambda per creare chiavi di partizionamento per i dati di origine, è necessario specificare un valore di prefisso del bucket S3 costituito da espressioni specificate nel seguente formato:. "partitionKeyFromLambda:keyID" Per ulteriori informazioni, consulta «Scegli Amazon S3 per la tua destinazione» in Creazione di uno stream Amazon Firehose.

Regole semantiche

Le seguenti regole si applicano alle espressioni Prefix e ErrorOutputPrefix.

  • Per lo spazio dei nomi timestamp, vengono restituiti tutti i caratteri che non sono tra virgolette singole. In altre parole, tutte le stringhe precedute da virgolette singole nel campo dei valori vengono prese alla lettera.

  • Se si specifica un prefisso che non contiene un'espressione dello spazio dei nomi con timestamp, Firehose aggiunge l'espressione al valore nel !{timestamp:yyyy/MM/dd/HH/} campo. Prefix

  • La sequenza !{ può comparire solo nelle espressioni !{namespace:value}.

  • ErrorOutputPrefix può essere null solo Prefix non contiene espressioni. In questo caso, Prefix valuta <specified-prefix>yyyy/MM/DDD/HH/ e ErrorOutputPrefix valuta <specified-prefix><error-output-type>YYYY/MM/DDD/HH/. DDD rappresenta il giorno dell'anno.

  • Se specifichi un'espressione per ErrorOutputPrefix, devi includere almeno un'istanza di !{firehose:error-output-type}.

  • Prefix non può contenere !{firehose:error-output-type}.

  • PrefixErrorOutputPrefix possono contenere più di 512 dopo la restituzione.

  • Se la destinazione è Amazon Redshift, Prefix non deve contenere espressioni e ErrorOutputPrefix deve essere null.

  • Quando la destinazione è Amazon OpenSearch Service o Splunk e non ErrorOutputPrefix viene specificato alcun valore, Firehose utilizza Prefix il campo per i record non riusciti.

  • Quando la destinazione è Amazon S3, Prefix e ErrorOutputPrefix nella configurazione di destinazione di Amazon S3 vengono utilizzati rispettivamente per record riusciti e record non riusciti. Se utilizzi il plugin AWS CLI oppureAPI, è possibile utilizzare ExtendedS3DestinationConfiguration per specificare una configurazione di backup di Amazon S3 con una propria Prefix e. ErrorOutputPrefix

  • Quando si utilizza il AWS Management Console e imposta la destinazione su Amazon S3, Firehose utilizza la Prefix e ErrorOutputPrefix nella configurazione di destinazione rispettivamente per i record riusciti e i record con esito negativo. Se si specifica un prefisso utilizzando espressioni, è necessario specificare il prefisso di errore comprensivo di. !{firehose:error-output-type}

  • Quando si utilizza ExtendedS3DestinationConfiguration con AWS CLI, ilAPI, o AWS CloudFormation, se si specifica unS3BackupConfiguration, Firehose non fornisce un valore predefinito. ErrorOutputPrefix

  • Non è possibile utilizzare gli partitionKeyFromQuery spazi partitionKeyFromLambda dei nomi e durante la creazione di espressioni. ErrorOutputPrefix

Esempi di prefisso

Esempi di Prefix e ErrorOutputPrefix
Input Prefisso valutato (alle 10:30 UTC del 27 agosto 2018)

Prefix: non specificato

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

Prefix: 2018/08/27/10

ErrorOutputPrefix: myFirehoseFailures/processing-failed/

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

ErrorOutputPrefix: non specificato

Input non valido: ErrorOutputPrefix non può essere null se Prefix contiene espressioni

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: non specificato

Prefix: myFirehosePrefix/2018/08/27/

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