

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

# Amazon S3 オブジェクトのカスタムプレフィックスを理解する
<a name="s3-prefixes"></a>

Amazon S3 に配信されるオブジェクトは、<evaluated prefix><suffix> の[名前形式](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-namekey)に従います。実行時に評価される式を含むカスタムプレフィックスを指定できます。指定するカスタムプレフィックスは、`yyyy/MM/dd/HH` のデフォルトのプレフィックスを上書きします。

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

プレフィックスの最後がスラッシュの場合は、Amazon S3 バケット内のフォルダとして表示されます。詳細については、「*Amazon Data Firehose デベロッパーガイド*」の「[Amazon S3 オブジェクト名の形式](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-name)」を参照してください。

## `timestamp` 名前空間
<a name="timestamp-namespace"></a>

この名前空間の有効な値は、有効な [Java DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) 文字列である文字列です。例としては、2018 年には、式 `!{timestamp:yyyy}` は `2018` として評価されます。​ 

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

デフォルトでは、タイムスタンプは UTC です。ただし、希望するタイムゾーンを指定できます。たとえば、UTC の代わりに日本標準時を使用する場合は、 AWS マネジメントコンソール または API パラメータ設定 ([CustomTimeZone](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ExtendedS3DestinationConfiguration.html)) でタイムゾーンをアジア/東京に設定できます。サポートされているタイムゾーンのリストを確認するには、「[Amazon S3 Object Name Format](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-name)」を参照してください。

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

## `firehose` 名前空間
<a name="firehose-namespace"></a>

この名前空間では、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` 名前空間
<a name="dynamic-partitioning-namespaces"></a>

[動的パーティショニング](dynamic-partitioning.md)では、S3 バケットプレフィックスで次の式形式を使用する必要があります: `!{namespace:value}`。ここで、名前空間は `partitionKeyFromQuery` または `partitionKeyFromLambda`、またはその両方です。インライン解析を使用してソースデータのパーティショニングキーを作成している場合は、次の形式で指定された式で構成される S3 バケットプレフィクス値を指定する必要があります: `"partitionKeyFromQuery:keyID"`。 AWS Lambda 関数を使用してソースデータのパーティショニングキーを作成している場合は、次の形式で指定された式で構成される S3 バケットプレフィックス値を指定する必要があります。`"partitionKeyFromLambda:keyID"`。詳細については、「[Creating an Amazon Firehose stream](basic-create.md#basic-create.title)」の「Choose Amazon S3 for Your Destination」を参照してください。

## セマンティックルール
<a name="prefix-rules"></a>

`Prefix` および `ErrorOutputPrefix` 式には、以下のルールが制限されます。
+ `timestamp` 名前空間では、一重引用符で囲まれていないすべての文字が評価されます。言い換えると、値フィールドで一重引用符によりエスケープされたすべての文字列が文字どおりに解釈されます。
+ タイムスタンプ名前空間式が含まれないプレフィックスを指定した場合、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}` を含めることはできません。​
+ `Prefix` と `ErrorOutputPrefix` のどちらも、評価後に 512 文字を超えることはできません。
+ 送信先が Amazon Redshift の場合、`Prefix` に式を含めることはできず、`ErrorOutputPrefix` は null にする必要があります。
+ 宛先が Amazon OpenSearch Service または Splunk であり、`ErrorOutputPrefix` が指定されていない場合、Firehose は失敗したレコードに `Prefix` フィールドを使用します。
+ 送信先が Amazon S3 の場合、Amazon S3 送信先設定の `Prefix` および `ErrorOutputPrefix` は、それぞれ成功したレコードと失敗したレコードに使用されます。 AWS CLI または API を使用する場合は、`ExtendedS3DestinationConfiguration` を使用して Amazon S3 *バックアップ*設定をそれ自身の `Prefix` と `ErrorOutputPrefix` を用いて指定できます。
+ を使用して送信先を Amazon S3 に設定する AWS マネジメントコンソール と、Firehose は送信先設定`ErrorOutputPrefix`で `Prefix`と をそれぞれ成功レコードと失敗レコードに使用します。式を使用してプレフィックスを指定する場合は、`!{firehose:error-output-type}` を含むエラープレフィックスを指定する必要があります。
+ `ExtendedS3DestinationConfiguration` を AWS CLI、 API、または で CloudFormation使用する場合`S3BackupConfiguration`、Firehose はデフォルトの を提供しません`ErrorOutputPrefix`。
+ ErrorOutputPrefix 式を作成するときに、`partitionKeyFromLambda` および `partitionKeyFromQuery` 名前空間を使用することはできません。

## プレフィックスの例
<a name="s3-prefix-examples"></a>


**`Prefix` と `ErrorOutputPrefix` の例**  

| Input | 評価されるプレフィックス (2018 年 8 月 27 日の午前 10:30 UTC) | 
| --- | --- | 
| `Prefix`: 未指定<br />`ErrorOutputPrefix`: `myFirehoseFailures/!{firehose:error-output-type}/` | `Prefix`: `2018/08/27/10`<br />`ErrorOutputPrefix`: `myFirehoseFailures/processing-failed/` | 
| `Prefix`: `!{timestamp:yyyy/MM/dd}`<br />`ErrorOutputPrefix`: 未指定 | 無効な入力: Prefix に式が含まれている場合、ErrorOutputPrefix を null にすることはできません。 | 
| `Prefix`: `myFirehose/DeliveredYear=!{timestamp:yyyy}/anyMonth/rand=!{firehose:random-string}`<br />`ErrorOutputPrefix`: `myFirehoseFailures/!{firehose:error-output-type}/!{timestamp:yyyy}/anyMonth/!{timestamp:dd}` | `Prefix`: `myFirehose/DeliveredYear=2018/anyMonth/rand=5abf82daaa5`<br />`ErrorOutputPrefix`: `myFirehoseFailures/processing-failed/2018/anyMonth/10` | 
| `Prefix`: `myPrefix/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/`<br />`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/`<br />`ErrorOutputPrefix`: `myErrorPrefix/year=2018/month=07/day=06/hour=23/processing-failed` | 
| `Prefix`: `myFirehosePrefix/`<br />`ErrorOutputPrefix`: 未指定 | `Prefix`: `myFirehosePrefix/2018/08/27/`<br />`ErrorOutputPrefix`: `myFirehosePrefix/processing-failed/2018/08/27/` | 