Amazon S3 オブジェクトのカスタムプレフィックス - Amazon Kinesis Data Firehose

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

Amazon S3 オブジェクトのカスタムプレフィックス

送信先が Amazon S3、Amazon Elasticsearch Service、または Splunk の場合、Kinesis Data Firehose からのデータの配信に使用される Amazon S3 オブジェクトキーを設定できます。​ これを行うには、配信時に Kinesis Data Firehose が評価する式を指定します。最終的なオブジェクト キーの形式は <evaluated prefix><suffix>。接尾語は の形式です。 <delivery stream name>-<delivery stream version>-<year>-<month>-<day>-<hour>-<minute>-<second>-<uuid><file extension>。 サフィックス フィールドは変更できません。

カスタム接頭語では、次のフォームの式を使用できます。!{namespace:value}、ここで namespace 次のいずれかになります。 firehose または timestamp」を参照してください。

プレフィックスの最後がスラッシュの場合は、Amazon S3 バケット内のフォルダとして表示されます。詳細については、以下を参照してください。 Amazon S3 オブジェクト名の形式Amazon Kinesis Data Firehose開発者ガイド.

timestamp​ 名前空間

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

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

タイムスタンプは常に UTC です。

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

firehose​ 名前空間

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

firehose 名前空間の値
変換 説明: 入力例 出力例。 メモ:
error-output-type デリバリストリームの設定と失敗の理由に応じて、次の文字列のいずれかを評価します。{processing-failed、elasticsearch-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 で非常に高いスループットを実現するために必要になることがあります。​

セマンティックルール

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

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

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

  • シーケンス !{ は、!{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 Elasticsearch Service または Splunk であり、ErrorOutputPrefix が指定されていない場合、Kinesis Data Firehose は失敗したレコードに Prefix フィールドを使用します。

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

  • AWS マネジメントコンソール を使用して、送信先を Amazon S3 に設定すると、Kinesis Data Firehose は送信先設定で、Prefix および ErrorOutputPrefix を、成功したレコードと失敗したレコードにそれぞれ使用します。プレフィックスを指定してもエラープレフィックスがない場合、Kinesis Data Firehose はエラープレフィックスを自動的に !{firehose:error-output-type}/ に設定します。

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

プレフィックスの例

Prefix および ErrorOutputPrefix
入力 評価されるプレフィックス (2018 年 8 月 27 日の午前 10:30 UTC)

Prefix: : 未指定

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

Prefix: 2018/08/27/10

ErrorOutputPrefix: myFirehoseFailures/processing-failed/

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

ErrorOutputPrefix: : 未指定

無効な入力: 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/