Entenda os prefixos personalizados para objetos do Amazon S3 - Amazon Data Firehose

A entrega de streams do Amazon Data Firehose para tabelas Apache Iceberg no Amazon S3 está em versão prévia e está sujeita a alterações.

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á.

Entenda os prefixos personalizados para objetos do Amazon S3

<evaluated prefix><suffix>Os objetos entregues ao Amazon S3 seguem o formato do nome de. Você pode especificar seu prefixo personalizado que inclui expressões que são avaliadas em tempo de execução. O prefixo personalizado que você especificar substituirá o prefixo padrão de. 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 no Amazon Data FirehoseDeveloper Guide.

Namespace do timestamp

Os valores válidos para esse namespace são cadeias de caracteres Java válidas. DateTimeFormatter Como um exemplo, no ano 2018, a expressão !{timestamp:yyyy} é avaliada para 2018.

Ao avaliar os timestamps, o Firehose usa o timestamp de chegada aproximado do registro mais antigo contido no objeto Amazon S3 que está sendo gravado.

Por padrão, o timestamp está ativado. UTC Mas você pode especificar o fuso horário de sua preferência. Por exemplo, você pode configurar o fuso horário para Ásia/Tóquio no AWS Management Console ou na configuração de API parâmetros (CustomTimeZone) se você quiser usar o horário padrão do Japão em vez deUTC. Para ver a lista de fusos horários compatíveis, consulte Formato de nome de objeto do Amazon S3.

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

Há dois valores que você pode usar com esse namespace: error-output-type e random-string. A tabela a seguir explica como usá-los.

Os valores do namespace firehose.
Conversão Descrição Exemplo de entrada Exemplo de saída 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-failed

Se 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

Para o particionamento dinâmico, 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 você estiver usando um AWS Função Lambda para criar chaves de particionamento para seus dados de origem, você deve especificar um valor de prefixo de bucket do S3 que consiste em expressões especificadas no seguinte formato:. "partitionKeyFromLambda:keyID" Para obter mais informações, consulte “Escolha o Amazon S3 para seu destino” em Criar um stream do Amazon Firehose.

Regras semânticas

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 anexará a expressão ao valor no !{timestamp:yyyy/MM/dd/HH/} 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 bem-sucedidos e registros com falha, respectivamente. Se você usar o AWS CLI ou oAPI, você pode usar ExtendedS3DestinationConfiguration para especificar uma configuração de backup do Amazon S3 com sua própria e. Prefix ErrorOutputPrefix

  • Quando você usa o AWS Management Console e defina 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, oAPI, ou AWS CloudFormation, se você especificar umS3BackupConfiguration, o Firehose não fornecerá um padrão. ErrorOutputPrefix

  • Você não pode usar partitionKeyFromLambda partitionKeyFromQuery namespaces ao criar ErrorOutputPrefix expressões.

Prefixos de exemplo

Exemplos de Prefix e ErrorOutputPrefix
Entrada Prefixo avaliado (às 10h30 do dia 27 UTC de agosto de 2018)

Prefix: não especificado

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

Prefix: 2018/08/27/10

ErrorOutputPrefix: myFirehoseFailures/processing-failed/

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

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}

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: não especificado

Prefix: myFirehosePrefix/2018/08/27/

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