Amazon S3 オブジェクトのカスタムプレフィックスを理解する - Amazon Data Firehose

Amazon S3 の Apache Iceberg テーブルへの Amazon Data Firehose ストリームの配信はプレビュー中であり、変更される可能性があります。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon S3 オブジェクトのカスタムプレフィックスを理解する

Amazon S3 に配信されるオブジェクトは、<評価済みプレフィックス><suffix> の名前形式に従います。実行時に評価される式を含むカスタムプレフィックスを指定できます。指定するカスタムプレフィックスは、 のデフォルトのプレフィックスを上書きしますYYYY/MM/dd/HH

カスタムプレフィックスでは、フォーム !{namespace:value} の式を使用できます。ここで、namespace は、以下のセクションで説明されているとおり、以下のいずれかです。

  • firehose

  • timestamp

  • partitionKeyFromQuery

  • partitionKeyFromLambda

プレフィックスの最後がスラッシュの場合は、Amazon S3 バケット内のフォルダとして表示されます。詳細については、Amazon S3 オブジェクト名形式」を参照してください。 FirehoseDeveloper

timestamp 名前空間

この名前空間の有効な値は、有効な Java DateTimeFormatter 文字列である文字列です。例としては、2018 年には、式 !{timestamp:yyyy}2018 として評価されます。​

タイムスタンプを評価する際、Firehose は、書き込まれる Amazon S3 オブジェクトに含まれる最も古いレコードのおおよその到着タイムスタンプを使用します。

デフォルトでは、タイムスタンプは にありますUTC。ただし、希望するタイムゾーンを指定できます。例えば、 でタイムゾーンをアジア/東京に設定することができます。 AWS Management Console の代わりに日本標準時を使用する場合は、APIパラメータ設定 (CustomTimeZone) で または を使用しますUTC。サポートされているタイムゾーンのリストを確認するには、Amazon S3 オブジェクト名形式」を参照してください。

timestamp 名前空間を同じプレフィックス式で複数回使用した場合、すべてのインスタンスが同じ時点として評価されます。

firehose 名前空間

この名前空間では、2 つの値 error-output-type および random-string を使用できます。​ 次の表は、これらの値の使用方法を説明しています。

firehose 名前空間の値
変換 説明 入力例 出力例 メモ
error-output-type Firehose ストリームの設定と失敗の理由に応じて、次のいずれかの文字列に評価されます: {processing-failed, AmazonOpenSearchService-failed, splunk-failed, format-conversion-failed, http-endpoint-failed}。

同じ式で複数回使用した場合、すべてのインスタンスが同じエラー文字列として評価されます。

myPrefix/result=!{firehose:error-output-type}/!{timestamp:yyyy/MM/dd} myPrefix/result=processing-failed/2018/08/03 error-output-type 値は フィールドでのみ使用できます ErrorOutputPrefix。
random-string

11 文字のランダムな文字列として評価されます。同じ式で複数回使用した場合、すべてのインスタンスが新しいランダム文字列として評価されます。

myPrefix/!{firehose:random-string}/ myPrefix/046b6c7f-0b/ 両方のプレフィックスタイプで使用できます。

形式の文字列の先頭にこれを配置すると、ランダム化されたプレフィックスを取得できます。これは、Amazon S3 で非常に高いスループットを実現するために必要になることがあります。​

partitionKeyFromLambda および partitionKeyFromQuery 名前空間

動的パーティショニングでは、S3 バケットプレフィックスで次の式形式を使用する必要があります: !{namespace:value}。ここで、名前空間は partitionKeyFromQuery または partitionKeyFromLambda、またはその両方です。インライン解析を使用してソースデータのパーティショニングキーを作成している場合は、次の形式で指定された式で構成される S3 バケットプレフィクス値を指定する必要があります: "partitionKeyFromQuery:keyID"。を使用している場合 AWS ソースデータのパーティショニングキーを作成する Lambda 関数では、次の形式で指定された式で構成される S3 バケットプレフィックス値を指定する必要があります: "partitionKeyFromLambda:keyID"。詳細については、「Amazon Firehose ストリームの作成」の「送信先に Amazon S3 を選択する」を参照してください。 https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html

セマンティックルール

Prefix および ErrorOutputPrefix 式には、以下のルールが制限されます。

  • timestamp 名前空間では、一重引用符で囲まれていないすべての文字が評価されます。言い換えると、値フィールドで一重引用符によりエスケープされたすべての文字列が文字どおりに解釈されます。

  • タイムスタンプ名前空間式を含まないプレフィックスを指定すると、Firehose は Prefix フィールドの値!{timestamp:yyyy/MM/dd/HH/}に式を追加します。

  • シーケンス !{ は、!{namespace:value} 式にのみ現れます。

  • Prefix に式が含まれていない場合、ErrorOutputPrefix は null にのみすることができます。この場合、Prefix<specified-prefix>yyyy/MM/DDD/HH/ と評価され、ErrorOutputPrefix<specified-prefix><error-output-type>YYYY/MM/DDD/HH/ と評価されます。DDD は日を表します。

  • ErrorOutputPrefix の式を指定した場合、!{firehose:error-output-type} のインスタンスを少なくとも 1 つ含める必要があります。​

  • Prefix!{firehose:error-output-type} を含めることはできません。​

  • PrefixErrorOutputPrefix のどちらも、評価後に 512 文字を超えることはできません。

  • 送信先が Amazon Redshift の場合、Prefix に式を含めることはできず、ErrorOutputPrefix は null にする必要があります。

  • 送信先が Amazon OpenSearch Service または Splunk で、 が指定されていない場合、Firehose ErrorOutputPrefixは失敗したレコードに Prefixフィールドを使用します。

  • 送信先が Amazon S3 の場合、Amazon S3 送信先設定の Prefix および ErrorOutputPrefix は、それぞれ成功したレコードと失敗したレコードに使用されます。を使用する場合 AWS CLI または ではAPI、 ExtendedS3DestinationConfigurationを使用して、独自の Prefixと で Amazon S3 バックアップ設定を指定できますErrorOutputPrefix

  • を使用する場合 AWS Management Console と は送信先を Amazon S3 に設定し、Firehose は送信先設定ErrorOutputPrefixPrefixと をそれぞれ成功レコードと失敗レコードに使用します。式を使用してプレフィックスを指定する場合は、 を含むエラープレフィックスを指定する必要があります!{firehose:error-output-type}

  • ExtendedS3DestinationConfiguration で を使用する場合 AWS CLI、API、または AWS CloudFormationを指定した場合S3BackupConfiguration、Firehose はデフォルトの を提供しませんErrorOutputPrefix

  • ErrorOutputPrefix 式の作成時に partitionKeyFromLambdaおよび partitionKeyFromQuery名前空間を使用することはできません。

プレフィックスの例

PrefixErrorOutputPrefix の例
入力 評価済みプレフィックス (2018 年 8 月 27 日午前 10 UTC時 30 分)

Prefix: 未指定

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

Prefix: 2018/08/27/10

ErrorOutputPrefix: myFirehoseFailures/processing-failed/

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

ErrorOutputPrefix: 未指定

無効な入力: Prefix に式が含まれている場合、ErrorOutputPrefix を null にすることはできません。

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: 未指定

Prefix: myFirehosePrefix/2018/08/27/

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