

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Comprendre les préfixes personnalisés pour les objets Amazon S3
<a name="s3-prefixes"></a>

Les objets livrés à Amazon S3 suivent le [format de nom](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-namekey) de <evaluated prefix><suffix>. Vous pouvez spécifier votre préfixe personnalisé qui inclut les expressions évaluées lors de l'exécution. Le préfixe personnalisé que vous spécifiez remplacera le préfixe par défaut de. `yyyy/MM/dd/HH`

Vous pouvez utiliser les expressions ayant le format suivant dans votre préfixe personnalisé : `!{namespace:{{value}}}`, où `namespace` peut être l'un des éléments suivants, comme expliqué dans les sections suivantes.
+  `firehose` 
+ `timestamp`
+ `partitionKeyFromQuery`
+ `partitionKeyFromLambda`

Si un préfixe se termine par une barre oblique, il apparaît comme dossier dans le compartiment Amazon S3. Pour plus d'informations, consultez le [format du nom d'objet Amazon S3](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-name) dans le *Amazon Data FirehoseDeveloper Guide*.

## Espace de noms `timestamp`
<a name="timestamp-namespace"></a>

Les valeurs valides pour cet espace de noms sont des DateTimeFormatter chaînes [Java](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) valides. Par exemple, au cours de l'année 2018, l'expression `!{timestamp:yyyy}` est évaluée sur `2018`. 

Lors de l'évaluation des horodatages, Firehose utilise l'horodatage d'arrivée approximatif du plus ancien enregistrement contenu dans l'objet Amazon S3 en cours d'écriture. 

Par défaut, l'horodatage est en UTC. Mais vous pouvez spécifier le fuseau horaire que vous préférez. Par exemple, vous pouvez configurer le fuseau horaire dans AWS Management Console ou Asia/Tokyo dans le réglage des paramètres de l'API ([CustomTimeZone](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ExtendedS3DestinationConfiguration.html)) si vous souhaitez utiliser l'heure normale du Japon au lieu de l'heure UTC. Pour consulter la liste des fuseaux horaires pris en charge, consultez [Amazon S3 Object Name Format](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-name).

Si vous utilisez l'espace de noms `timestamp` plusieurs fois dans la même expression de préfixe, chaque instance est évaluée sur le même instantané dans le temps.

## Espace de noms `firehose`
<a name="firehose-namespace"></a>

Il existe deux valeurs que vous pouvez utiliser avec cet espace de noms : `error-output-type` et `random-string`. Le tableau suivant explique comment les utiliser.


**Les valeurs de l'espace de noms `firehose`**  

| Conversion | Description | Exemple d'entrée | Exemple de sortie | Remarques | 
| --- | --- | --- | --- | --- | 
| error-output-type | Évalue l'une des chaînes suivantes, en fonction de la configuration de votre stream Firehose et de la raison de l'échec : {processing-failed, -failed, splunk-failed AmazonOpenSearchService,,}. format-conversion-failed http-endpoint-failedSi vous utilisez l'espace de noms plusieurs fois dans la même expression, chaque instance est évaluée sur la même chaîne d'erreur. | myPrefix/result=\!{firehose:error-output-type}/\!{timestamp:yyyy/MM/dd} | myPrefix/result=processing-failed/2018/08/03 | La error-output-type valeur ne peut être utilisée que dans le ErrorOutputPrefix champ. | 
| random-string | Évaluation sur une chaîne aléatoire de 11 caractères. Si vous utilisez l'espace de noms plusieurs fois dans la même expression, chaque instance est évaluée sur une nouvelle chaîne aléatoire. | myPrefix/\!{firehose:random-string}/ | myPrefix/046b6c7f-0b/ | Vous pouvez l'utiliser avec les deux types de préfixe.Vous pouvez le placer au début de la chaîne de format pour obtenir un préfixe aléatoire, ce qui est parfois nécessaire pour atteindre un débit extrêmement élevé avec Amazon S3. | 

## Espaces de noms `partitionKeyFromLambda` et `partitionKeyFromQuery`
<a name="dynamic-partitioning-namespaces"></a>

Pour le [partitionnement dynamique](dynamic-partitioning.md), vous devez utiliser le format d'expression suivant dans le préfixe de votre compartiment S3 : `!{namespace:value}`, où l'espace de noms peut être `partitionKeyFromQuery` ou `partitionKeyFromLambda`, ou les deux. Si vous utilisez l'analyse en ligne pour créer les clés de partitionnement de vos données sources, vous devez spécifier une valeur de préfixe de compartiment S3 qui consiste en des expressions spécifiées dans le format suivant : `"partitionKeyFromQuery:keyID"`. Si vous utilisez une fonction AWS Lambda pour créer les clés de partitionnement de vos données sources, vous devez spécifier une valeur de préfixe de compartiment S3 qui consiste en des expressions spécifiées dans le format suivant : `"partitionKeyFromLambda:keyID"`. Pour plus d'informations, consultez la section « Choisissez Amazon S3 pour votre destination » dans [Création d'un flux Amazon Firehose](basic-create.md#basic-create.title).

## Règles sémantiques
<a name="prefix-rules"></a>

Les règles suivantes s'appliquent aux expressions `Prefix` et `ErrorOutputPrefix`.
+ Pour l'espace de noms `timestamp`, n'importe quel caractère autre que des guillemets simples est évalué. En d'autres termes, n'importe quelle chaîne dans une séquence d'échappement avec des guillemets simples dans le champ value est prise littéralement.
+ Si vous spécifiez un préfixe qui ne contient pas d'expression d'espace de noms d'horodatage, Firehose ajoute l'expression `!{timestamp:yyyy/MM/dd/HH/}` à la valeur du champ. `Prefix`
+ La séquence `!{` peut uniquement apparaître dans les expressions `!{namespace:{{value}}}`.
+ `ErrorOutputPrefix` peut être null uniquement si `Prefix` ne contient pas d'expressions. Dans ce cas, `Prefix` correspond à `<specified-prefix>yyyy/MM/DDD/HH/` et `ErrorOutputPrefix` correspond à `<specified-prefix><error-output-type>yyyy/MM/DDD/HH/`. `DDD` représente le jour de l'année.
+ Si vous spécifiez une expression pour `ErrorOutputPrefix`, vous devez inclure au moins une instance de `!{firehose:error-output-type}`.
+ `Prefix` ne peut pas contenir `!{firehose:error-output-type}`.
+ Ni `Prefix` ni `ErrorOutputPrefix` ne peuvent être supérieurs à 512 caractères après leur évaluation.
+ Si la destination est Amazon Redshift, `Prefix` ne doit pas contenir d'expressions et `ErrorOutputPrefix` doit être null.
+ Lorsque la destination est Amazon OpenSearch Service ou Splunk, et qu'aucune n'`ErrorOutputPrefix`est spécifiée, Firehose utilise `Prefix` le champ pour les enregistrements ayant échoué. 
+ Lorsque la destination est Amazon S3, les préfixes `Prefix` et `ErrorOutputPrefix` dans la configuration de destination Amazon S3 sont utilisés pour les enregistrements ayant réussi et les enregistrements ayant échoué, respectivement. Si vous utilisez AWS CLI ou l'API, vous pouvez utiliser `ExtendedS3DestinationConfiguration` pour spécifier une configuration de *sauvegarde* Amazon S3 avec ses propres préfixes `Prefix` et `ErrorOutputPrefix`.
+ Lorsque vous utilisez le AWS Management Console et définissez la destination sur Amazon S3, Firehose utilise le `Prefix` et `ErrorOutputPrefix` dans la configuration de destination pour les enregistrements réussis et les enregistrements échoués, respectivement. Si vous spécifiez un préfixe à l'aide d'expressions, vous devez spécifier le préfixe d'erreur, y compris. `!{firehose:error-output-type}`
+ Lorsque vous utilisez `ExtendedS3DestinationConfiguration` l'API ou AWS CLI, si vous spécifiez une CloudFormation`S3BackupConfiguration`, Firehose ne fournit pas de valeur par défaut. `ErrorOutputPrefix`
+ Vous ne pouvez pas utiliser `partitionKeyFromLambda` d'`partitionKeyFromQuery`espaces de noms lorsque vous créez des ErrorOutputPrefix expressions.

## Exemples de préfixe
<a name="s3-prefix-examples"></a>


**Exemples de préfixes `Prefix` et `ErrorOutputPrefix`**  

| Input | Préfixe évalué (à 10:30 AM UTC le 27août2018) | 
| --- | --- | 
| `Prefix` : non spécifié<br />`ErrorOutputPrefix`: `myFirehoseFailures/!{firehose:error-output-type}/` | `Prefix`: `2018/08/27/10`<br />`ErrorOutputPrefix`: `myFirehoseFailures/processing-failed/` | 
| `Prefix`: `!{timestamp:yyyy/MM/dd}`<br />`ErrorOutputPrefix` : non spécifié | Saisie non valide : ErrorOutputPrefix ne peut pas être vide si le préfixe contient des expressions | 
| `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` : non spécifié | `Prefix`: `myFirehosePrefix/2018/08/27/`<br />`ErrorOutputPrefix`: `myFirehosePrefix/processing-failed/2018/08/27/` | 