

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Noções básicas de prefixos personalizados para objetos do Amazon S3
<a name="s3-prefixes"></a>

Os objetos entregues ao Amazon S3 seguem o [formato do nome](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-namekey) <prefixo avaliado><sufixo>. É possível especificar seu prefixo personalizado que inclui expressões que são avaliadas no runtime. O prefixo personalizado que você especificar substituirá o prefixo padrão `yyyy/MM/dd/HH`.

É possível usar expressões nos seguintes formatos no seu prefixo personalizado: `!{namespace:{{value}}}`, em que `namespace` pode ser um dos que se seguem, como explicado nas próximas seções.
+  `firehose` 
+ `timestamp`
+ `partitionKeyFromQuery`
+ `partitionKeyFromLambda`

Se um prefixo terminar com uma barra, ele aparecerá como uma pasta no bucket do Amazon S3. Para obter mais informações, consulte [Formato de nome de objeto do Amazon S3](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-name) no *Amazon Data FirehoseDeveloper Guide*.

## Namespace do `timestamp`
<a name="timestamp-namespace"></a>

[Os valores válidos para esse namespace são cadeias de caracteres Java válidas. DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) Como um exemplo, no ano 2018, a expressão `!{timestamp:yyyy}` é avaliada para `2018`. 

Ao avaliar carimbos de data/hora, o Firehose usa o carimbo de data/hora aproximado da chegada do registro mais antigo contido no objeto do Amazon S3 que está sendo gravado. 

Por padrão, o carimbo de data/hora está em UTC. Mas é possível especificar o fuso horário de sua preferência. Por exemplo, você pode configurar o fuso horário na Console de gerenciamento da AWS ou Asia/Tokyo na configuração de parâmetros da API ([CustomTimeZone](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ExtendedS3DestinationConfiguration.html)) se quiser usar o horário padrão do Japão em vez do UTC. Para ver a lista de fusos horários com suporte, consulte [Formato de nome de objeto do Amazon S3](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-name).

Se você usar o namespace `timestamp` mais de uma vez na mesma expressão do prefixo, cada instância será avaliada no mesmo momento.

## Namespace do `firehose`
<a name="firehose-namespace"></a>

Há dois valores que podem ser usados com esse namespace: `error-output-type` e `random-string`. A tabela a seguir explica como usá-los.


**Os valores do namespace `firehose`.**  

| Conversão | Description | Exemplo de entrada | Exemplo de saída de  | Observações | 
| --- | --- | --- | --- | --- | 
| error-output-type | É avaliado como uma das seguintes sequências de caracteres, dependendo da configuração do stream do Firehose e do motivo da falha: {processing-failed, AmazonOpenSearchService -failed, splunk-failed,,}. format-conversion-failed http-endpoint-failedSe você usá-lo mais de uma vez na mesma expressão, cada instância será avaliada para a mesma string de erro. | myPrefix/result=\!{firehose:error-output-type}/\!{timestamp:yyyy/MM/dd} | myPrefix/result=processing-failed/2018/08/03 | O error-output-type valor só pode ser usado no ErrorOutputPrefix campo. | 
| random-string | Avalia para uma string aleatória de 11 caracteres. Se você usá-lo mais de uma vez na mesma expressão, cada instância será avaliada para uma nova string aleatória. | myPrefix/\!{firehose:random-string}/ | myPrefix/046b6c7f-0b/ | É possível usá-lo com os dois tipos de prefixo.Pode ser colocado no início da string de formato para obter um prefixo aleatório, o que, às vezes, é necessário para atingir uma throughput extremamente alto com o Amazon S3. | 

## Namespaces `partitionKeyFromLambda` e `partitionKeyFromQuery`
<a name="dynamic-partitioning-namespaces"></a>

Para o [particionamento dinâmico](dynamic-partitioning.md), você deve usar o seguinte formato de expressão no prefixo de bucket do S3: `!{namespace:value}`, em que o namespace pode ser `partitionKeyFromQuery`, `partitionKeyFromLambda` ou ambos. Se estiver usando análise em linha para criar as chaves de particionamento para os dados da fonte, você deverá especificar um valor de prefixo de bucket do S3 consistindo em expressões especificadas no seguinte formato: `"partitionKeyFromQuery:keyID"`. Se estiver usando função do AWS Lambda para criar as chaves de particionamento para os dados da fonte, você deverá especificar um valor de prefixo de bucket de S3 que consista em expressões especificadas no seguinte formato: `"partitionKeyFromLambda:keyID"`. Para obter mais informações, consulte "Escolha o Amazon S3 como destino" em [Criação de um fluxo do Firehose](basic-create.md#basic-create.title).

## Regras semânticas
<a name="prefix-rules"></a>

As regras a seguir se aplicam às expressões `Prefix` e `ErrorOutputPrefix`.
+ Para o namespace `timestamp`, qualquer caractere que não estiver em aspas simples é avaliado. Em outras palavras, qualquer string recuada com aspas simples no campo do valor é considerada literalmente.
+ Se você especificar um prefixo que não contenha uma expressão de namespace de carimbo de data/hora, o Firehose acrescentará a expressão `!{timestamp:yyyy/MM/dd/HH/}` ao valor no campo `Prefix`.
+ A sequência `!{` pode aparecer somente em expressões `!{namespace:{{value}}}`.
+ `ErrorOutputPrefix` poderá ser nulo somente se `Prefix` não tiver expressões; Neste caso, `Prefix` é avaliado como `<specified-prefix>yyyy/MM/DDD/HH/`, e `ErrorOutputPrefix` é avaliado como `<specified-prefix><error-output-type>yyyy/MM/DDD/HH/`. `DDD` representa o dia do ano.
+ Se você especificar uma expressão para `ErrorOutputPrefix`, deverá incluir pelo menos uma instância de `!{firehose:error-output-type}`.
+ `Prefix` não pode conter `!{firehose:error-output-type}`.
+ `Prefix` e `ErrorOutputPrefix` não podem ter mais de 512 caracteres após serem avaliados.
+ Se o destino for o Amazon Redshift, o `Prefix` não deverá conter expressões e o `ErrorOutputPrefix` deverá ser nulo.
+ Quando o destino é Amazon OpenSearch Service ou Splunk e não `ErrorOutputPrefix` é especificado, o Firehose usa `Prefix` o campo para registros com falha. 
+ Quando o destino é o Amazon S3, o `Prefix` e o `ErrorOutputPrefix` na configuração de destino do Amazon S3 são usados para registros com êxito e registros com falha, respectivamente. Se você usar a AWS CLI ou a API, poderá usar a `ExtendedS3DestinationConfiguration` para especificar uma configuração de *backup* do Amazon S3 com seu próprio `Prefix` e `ErrorOutputPrefix`.
+ Quando você usa Console de gerenciamento da AWS e define o destino como Amazon S3, o Firehose usa `Prefix` e `ErrorOutputPrefix` na configuração de destino para registros bem-sucedidos e registros com falha, respectivamente. Se você especificar um prefixo usando expressões, deverá especificar o prefixo do erro, incluindo `!{firehose:error-output-type}`.
+ Quando você usa `ExtendedS3DestinationConfiguration` com o AWS CLI, a API ou CloudFormation, se você especificar um`S3BackupConfiguration`, o Firehose não fornece um padrão. `ErrorOutputPrefix`
+ Você não pode usar `partitionKeyFromLambda` `partitionKeyFromQuery` namespaces ao criar ErrorOutputPrefix expressões.

## Prefixos de exemplo
<a name="s3-prefix-examples"></a>


**Exemplos de `Prefix` e `ErrorOutputPrefix`**  

| Input | Prefixo avaliado (às 10:30 AM UTC em 27 de agosto de 2018) | 
| --- | --- | 
| `Prefix`: não especificado<br />`ErrorOutputPrefix`: `myFirehoseFailures/!{firehose:error-output-type}/` | `Prefix`: `2018/08/27/10`<br />`ErrorOutputPrefix`: `myFirehoseFailures/processing-failed/` | 
| `Prefix`: `!{timestamp:yyyy/MM/dd}`<br />`ErrorOutputPrefix`: não especificado | Entrada inválida: ErrorOutputPrefix não poderá ser nulo quando o prefixo tiver expressões | 
| `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`: não especificado | `Prefix`: `myFirehosePrefix/2018/08/27/`<br />`ErrorOutputPrefix`: `myFirehosePrefix/processing-failed/2018/08/27/` | 