P: O que é o Amazon Kinesis Firehose?

O Amazon Kinesis Firehose é o modo mais fácil de carregar dados de streaming na AWS. Ele pode capturar, transformar e carregar dados de streaming para o Amazon S3, o Amazon Redshift e o Amazon Elasticsearch Service, possibilitando análises em tempo quase real com as ferramentas de inteligência de negócios e painéis que você já usa hoje. É um serviço totalmente gerenciado que escala automaticamente para atender à produtividade dos seus dados e exige uma administração contínua. Ele pode separar em lotes, compactar e criptografar os dados antes de carregá-los, o que minimiza o volume de armazenamento usado no destino e aumenta a segurança.

 

P: O que o Amazon Kinesis Firehose pode gerenciar por mim?

O Amazon Kinesis Firehose gerencia toda infraestrutura, configuração e redes, e todo armazenamento subjacentes necessários para capturar e carregar seus dados no Amazon S3Amazon Redshift ou Amazon Elasticsearch Service. Você não precisa se preocupar com provisionamento, implantação, manutenção contínua do hardware, software nem escrever qualquer outro aplicativo para gerenciar este processo. O Firehose também escala de modo flexível sem exigir nenhuma intervenção ou sobrecarga de desenvolvedor associada. Além disso, o Amazon Kinesis Firehose replica de modo síncrono dados em três instalações em uma região AWS, proporcionando alta disponibilidade e durabilidade para os dados conforme eles forem sendo transportados para os seus destinos.

P: Como posso utilizar o Amazon Kinesis Firehose?

Após o seu cadastro na Amazon Web Services, você pode começar a usar o Amazon Kinesis Firehose seguindo estas etapas:

  • Crie um stream de distribuição do Amazon Kinesis Firehose no Console do Firehose ou por meio da operação CreateDeliveryStream.Opcionalmente, você pode configurar uma função do AWS Lambda em seu stream de entrega para preparar e transformar os dados brutos antes de carregar os dados.
  • Configure seus produtores de dados para que eles enviem dados continuamente para seu stream de distribuição usando o Amazon Kinesis Agent ou a Firehose API.
  • O Firehose carrega automática e continuamente seus dados para os destinos que você especificar.

P: O que é uma origem?

Uma origem é o local de geração e captura contínuas dos seus dados de streaming. Por exemplo, uma origem pode ser um servidor de registro em log executando em instâncias do Amazon EC2, um aplicativo executado em dispositivos móveis, um sensor em um dispositivo de IoT ou um stream do Kinesis. 

P: Quais são os limites do Amazon Kinesis Firehose?

A taxa de transferência de um stream do Amazon Kinesis Firehose é projetada para escalar sem limites. No entanto, há certos limites que você deve lembrar ao usar o Firehose.

  • O tamanho máximo de um registro enviado para o Firehose, antes da codificação base64, é de 1000 KB.
  • As operações de API CreateDeliveryStream(), DeleteDeliveryStream(), DescribeDeliveryStream(),ListDeliveryStreams() e UpdateDestination() podem fornecer até 5 transações por segundo.
  • Cada stream de distribuição armazena registros de dados durante até 24 horas, no caso de um destino de distribuição estar indisponível.
  • A operação PutRecordBatch() pode armazenar até 500 registros por chamada ou 4 MB por chamada, sendo aplicável a menor opção.
  • O tamanho do buffer varia entre 1 MB e 128 MB. O tamanho do limite é aplicado ao buffer antes da compactação.
  • O intervalo do buffer varia entre 60 segundos e 900 segundos.

Como padrão, cada conta pode ter até 20 streams de distribuição por região da AWS. Cada stream de distribuição pode consumir até 2.000 transações/segundo, 5.000 registros/segundo e 5 MB/segundo. Estes dois limites podem ser facilmente aumentados com o envio de um formulário de aumento de limite de serviço.

 

 

 

P: O que é um stream de distribuição?

Um stream de distribuição é a entidade subjacente do Amazon Kinesis Firehose. Você usa o Firehose criando um stream de distribuição e, em seguida, enviando dados para ele.

P: O que é um registro?

Um registro são os dados de interesse que o seu produtor de dados envia a um stream de distribuição. O tamanho máximo de um registro (antes da codificação base64) é de 1000 KB.

P: O que é um destino?

Um destino é o armazenamento de dados onde os seus dados serão distribuídos. No momento, o Amazon Kinesis Firehose é compatível com o Amazon S3, o Amazon Redshift e o Amazon Elasticsearch Service como destinos.

 

 

 

P: Como faço para criar um stream de distribuição?

Você pode criar um stream de distribuição do Amazon Kinesis Firehose no Console do Firehose ou por meio da operação CreateDeliveryStream. Para obter mais informações, consulte Como criar um stream de distribuição.

P: Que formato de compactação eu posso usar?

O Amazon Kinesis Firehose permite a compactação dos seus dados antes de entregá-los ao Amazon S3. No momento, o serviço é compatível com os formatos de compactação GZIP, ZIP e SNAPPY. Se os dados já estiverem carregados no Amazon Redshift, somente o GZIP será compatível.

P: Como a compactação funciona durante o uso do recurso de assinatura do CloudWatch Logs?

É possível usar o recurso de assinatura do CloudWatch Logs para fazer o streaming de dados do CloudWatch Logs para o Kinesis Firehose. Todos os logs de evento do CloudWatch Logs já estão compactados no formato gzip, portanto recomendamos desabilitar a configuração de compactação do Firehose para evitar a compactação dupla. Para obter mais informações sobre o recurso de assinatura do CloudWatch Logs, consulte Subscription Filters with Amazon Kinesis Firehose no Guia do usuário do Amazon CloudWatch Logs.  

P: Que tipo de criptografia eu posso usar?

O Amazon Kinesis Firehose permite que você criptografe dados após eles serem distribuídos no seu bucket do Amazon S3. Ao criar o seu stream de distribuição, você pode optar por criptografar dados com uma chave do AWS Key Management Service (KMS) que seja de sua propriedade. Para obter mais informações sobre o KMS, consulte o AWS Key Management Service.

P: O que é a transformação de dados com o Lambda?

O Firehose pode invocar uma função do AWS Lambda para transformar os dados de entrada antes de entregá-los aos destinos. Você pode configurar uma nova função do Lambda usando um dos blueprints do Lambda fornecidos ou escolher uma função do Lambda existente.

P: O que é o backup do registro de origem?

Se você usar a transformação de dados com o Lambda, poderá ativar o backup do registro de origem e o Amazon Kinesis Firehose entregará os dados de entrada não transformados para um bucket S3 separado. Você pode especificar um prefixo extra a ser adicionado na rente do prefixo de tempo UTC “YYYY/MM/DD/HH” gerado pelo Firehose.

P: O que é o registro em log de erros?

Se você ativar a transformação de dados com o Lambda, o Firehose poderá registrar em log qualquer invocação e erro de entrega de dados do Lambda para o Amazon CloudWatch Logs, para que você possa exibir os logs de erro específicos se a invocação ou entrega de dados do Lambda falhar. Para obter mais informações, consulte Como monitorar usando o Amazon CloudWatch Logs.

P: O que significa tamanho do buffer e intervalo do buffer?

O Amazon Kinesis Firehose armazena em buffer dados de streaming recebidos de um determinado tamanho ou por um período específico antes de distribuí-los aos seus destinos. Você pode configurar o tamanho do buffer e o seu intervalo enquanto cria o stream de distribuição. O tamanho do buffer é medido em MBs e varia de 1 MB a 128 MB para o destino do Amazon S3, e de 1 MB a 100 MB para o destino do Amazon Elasticsearch Service. O intervalo do buffer é calculado em segundos e varia entre 60 segundos e 900 segundos. Observe que em circunstâncias em que a entrega de dados ao destino fica atrás da gravação de dados no stream de entrega, o Firehose aumenta o tamanho do buffer dinamicamente para que consiga acompanhar e garantir que todos esses dados sejam entregues ao destino.

P: Como o tamanho do buffer é aplicado se eu optar por compactar meus dados?

O tamanho do buffer e aplicado antes da compactação. Como resultado, se você escolher compactar seus dados, o tamanho dos objetos no seu bucket do Amazon S3 poderá ser menor do que o tamanho do buffer especificado.

P: O que é a função IAM que deve ser especificada durante a criação do stream de distribuição?

O Amazon Kinesis Firehose assume a função do IAM que você especificar para acessar recursos, como o bucket do Amazon S3 e o domínio do Amazon Elasticsearch. Para obter mais informações, consulte Como controlar o acesso com o Amazon Kinesis Firehose, no guia do desenvolvedor do Amazon Kinesis Firehose.

P: Qual privilégio é exigido para o usuário do Amazon Redshift que deve ser especificado durante a criação de um stream de distribuição?

O usuário do Amazon Redshift deve ter o privilégio INSERT do Redshift para copiar dados do bucket do Amazon S3 para o cluster do Redshift.

P: O que devo fazer, caso o meu cluster do Amazon Redshift esteja em uma VPC?

Se o seu cluster do Amazon Redshift estiver em uma VPC, você deverá conceder ao Amazon Kinesis Firehose acesso ao seu cluster do Redshift desbloqueando endereços IP do Firehose na sua VPC. No momento, o Firehose usa um bloco CIDR para cada região AWS disponível: 52.70.63.192/27 para Leste dos EUA (Norte da Virgínia), 52.89.255.224/27 para Oeste dos EUA (Oregon) e 52.19.239.192/27 para UE (Irlanda). Para obter informações sobre como desbloquear IPs para a sua VPC, consulte Conceda acesso ao Firehose para um destino do Amazon Redshift, no guia do desenvolvedor do Amazon Kinesis Firehose.

P: Porque é preciso disponibilizar um bucket do Amazon S3 ao escolher o Amazon Redshift como um destino?

Para o destino Amazon Redshift, o Amazon Kinesis Firehose primeiro distribui dados para o bucket do Amazon S3 e depois emite o comando COPY do Redshift para carregar dados do bucket do S3 no cluster do Redshift.

P: O que é a rotação de índice para o destino do Amazon Elasticsearch Service?

O Amazon Kinesis Firehose pode rotacionar seu índice do Amazon Elasticsearch Service com base em uma duração. Você pode configurar essa duração enquanto cria seu stream de entrega. Para obter mais informações, consulte Rotação de índice para o destino do Amazon ES, no guia do desenvolvedor do Amazon Kinesis Firehose.

P: Porque é preciso disponibilizar um bucket do Amazon S3 ao escolher o Amazon Elasticsearch Service como um destino?

Ao carregar dados no Amazon Elasticsearch Service, o Amazon Kinesis Firehose pode fazer o backup de todos os dados ou somente dos dados que não foram entregues. Para utilizar esse recurso e evitar qualquer perda de dados, é necessário disponibilizar um bucket do Amazon S3 para backup.

P: Eu posso alterar as configurações do meu stream de distribuição após a sua criação?
Você pode alterar a configuração do seu stream de distribuição a qualquer momento após a sua criação. Você pode fazer isso usando o Console do Firehose ou a operação UpdateDestination. O stream de distribuição permanece no estado ATIVO enquanto as configurações são atualizadas, e você pode continuar enviando dados para o stream de distribuição. Normalmente, as configurações atualizadas entram em vigor em alguns minutos.

P: Como faço para preparar e transformar dados brutos no Amazon Kinesis Firehose?

O Amazon Kinesis Firehose permite usar uma função do AWS Lambda para preparar e transformar dados brutos de entrada em seu stream de entrega antes de carregá-los para os destinos. Você pode configurar uma função do AWS Lambda para transformação de dados quando cria um novo stream de entrega ou quando edita um stream de entrega existente.

P: Como faço para retornar os dados preparados e transformados da minha função do AWS Lambda para o Amazon Kinesis Firehose?

Todos os registros transformados do Lambda devem ser retornados para o Firehose com os três parâmetros a seguir; caso contrário, o Firehose rejeitará os registros e os tratará como falha na transformação de dados.

  • recordId: o Firehose envia um recordId juntamente com cada registro para o Lambda durante a invocação. Cada registro transformado deve ser retornado com o mesmo recordId. Qualquer incompatibilidade entre o recordId original e o recordId retornado será tratada como falha na transformação de dados. 
  • result: o status do resultado de transformação de cada registro. Os seguintes valores são permitidos para este parâmetro: "Ok" se o registro for transformado com êxito conforme o esperado. “Dropped” se a lógica de processamento descartar o registro intencionalmente conforme o esperado. “ProcessingFailed” se o registro não puder ser transformado conforme o esperado. O Firehose trata os registros retornados com os status “Ok” e “Dropped” como registros processados com êxito, e os registros com o status “ProcessingFailed” como registros com falha no processamento quando ele gera as métricas SucceedProcessing.Records e SucceedProcessing.Bytes. 
  • data: a carga de dados transformados após a codificação based64. 

P: Quais blueprints do Lambda estão disponíveis para preparação e transformação de dados?

O Firehose oferece os seguintes blueprints do Lambda que você pode usar para criar sua função do Lambda para transformação de dados:

  • General Firehose Processing: este blueprint contém a transformação de dados e o modelo de status descrito acima. Use-o para qualquer lógica de transformação personalizada.
  • Apache Log to JSON: este blueprint analisa e converte as linhas de log do Apache em objetos JSON, com nomes de campo predefinidos do JSON.
  • Apache Log to CSV: este blueprint analisa e converte as linhas de log do Apache no formato CSV.
  • Syslog to JSON: este blueprint analisa e converte as linhas do Syslog em objetos JSON, com nomes de campo predefinidos do JSON.
  • Syslog to CSV: este blueprint analisa e converte as linhas do Syslog no formato CSV.

P: Posso manter uma cópia de todos os dados brutos no meu bucket S3?

Sim, o Firehose pode fazer backup de todos os registros não transformados para o seu bucket S3 simultaneamente enquanto entrega registros transformados para o destino. O backup do registro de origem pode ser ativado quando você cria ou atualiza seu stream de entrega.

P: Como incluo dados ao meu stream de distribuição do Amazon Kinesis Firehose?

Você pode incluir dados em um stream de distribuição do Amazon Kinesis Firehose com o Amazon Kinesis Agent ou as operações PutRecord e PutRecordBatch do Firehose. O Kinesis Firehose também é integrado a outras fontes de dados como Kinesis Streams, AWS IoT, Amazon CloudWatch Logs e Amazon CloudWatch Events.

P: O que é o Amazon Kinesis Agent?

O Amazon Kinesis Agent é uma aplicação Java predefinida que oferece uma maneira fácil de coletar e enviar dados para o seu stream de distribuição. Você pode instalar o agente em ambientes de servidor baseados no Linux, como servidores da web, servidores de log e servidores de banco de dados. O agente monitora determinados arquivos e envia dados continuamente para o seu stream de distribuição. Para obter mais informações, consulte Como escrever com agentes.

P: Com quais plataformas o Amazon Kinesis Agent é compatível?

No momento, o Amazon Kinesis Agent é compatível com Amazon Linux e Red Hat Enterprise Linux.

P: Onde posso obter o Amazon Kinesis Agent?

Você pode fazer o download e a instalação do Amazon Kinesis Agent usando o comando e o link a seguir:

No Amazon Linux: sudo yum install –y aws-kinesis-agent

No Red Hat Enterprise Linux: sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm                                                                      

Do GitHub: awlabs/amazon-kinesis-agent

P: Como posso utilizar o Amazon Kinesis Agent?

Após a instalação do Amazon Kinesis Agent nos seus servidores, você pode configurá-lo para monitorar determinados arquivos no disco e, então, enviar continuamente novos dados para o seu stream de distribuição. Para obter mais informações, consulte Como escrever com agentes.

P: Qual é a diferença entre as operações PutRecord e PutRecordBatch ?

Uma operação PutRecord permite um único registro de dados em uma chamada de API, e uma operação PutRecordBatch permite vários registros de dados em uma chamada de API. Para obter mais informações, consulte PutRecord e PutRecordBatch.

P: Que linguagens de programação ou plataformas posso usar para acessar a API do Amazon Kinesis Firehose?

A API do Amazon Kinesis Firehose está disponível em Amazon Web Services SDKs. Para ver uma lista das linguagens de programação ou plataformas para os Amazon Web Services SDKs, consulte Ferramentas da Amazon Web Services.

P: Como faço para adicionar dados de um stream do Kinesis a um stream de entrega do Firehose?

Quando você cria ou atualiza um stream de entrega por meio do console da AWS ou de APIs do Firehose, você pode configurar um stream do Kinesis como origem do stream de entrega. Uma vez configurado, o Firehose lerá automaticamente os dados do stream do Kinesis e os carregará para os destinos especificados.

P: Com que frequência o Kinesis Firehose lê dados de um stream do Kinesis?

O Kinesis Firehose chama o GetRecords() do Kinesis Streams uma vez por segundo para cada estilhaço do Kinesis.

P: De onde o Kinesis Firehose lê dados quando um stream do Kinesis é configurado como origem de um stream de entrega?

Quando configurado como origem de um stream de entrega, o Kinesis Firehose começa a ler dados da posição MAIS RECENTE do stream do Kinesis. Para obter mais informações sobre a posição do stream do Kinesis, consulte GetShardIterator na referência de APIs do serviço Kinesis Streams.

P: Posso configurar um stream do Kinesis como origem de vários streams de entrega do Firehose?

Sim. No entanto, a chamada ao GetRecords() do Kinesis Firehose é considerada em relação ao limite geral do controle de utilização do estilhaço do Kinesis. Portanto, é necessário planejar o stream de entrega juntamente com outros aplicativos do Kinesis para garantir que esse limite geral não seja ultrapassado. Para obter mais informações, consulte Limites do Kinesis Streams no guia do desenvolvedor do Kinesis Streams.

P: Posso continuar a adicionar dados ao stream de entrega por meio das operações PutRecord e PutRecordBatch quando um stream do Kinesis é configurado como origem?

Não. Quando um stream do Kinesis é configurado como origem de um stream de entrega do Firehose, as operações PutRecord e PutRecordBatch do Firehose são desabilitadas. Em vez disso, adicione dados ao stream do Kinesis por meio das operações PutRecord e PutRecords do Kinesis Streams.

P: Como faço para adicionar dados a um stream de entrega do AWS IoT?

Para adicionar dados do AWS IoT ao stream de entrega, crie uma ação do AWS IoT que envia eventos ao stream de entrega. Para obter mais informações. Consulte Writing to Amazon Kinesis Firehose Using AWS IoT no guia do desenvolvedor do Kinesis Firehose. 

P: Como faço para adicionar dados do CloudWatch Logs a um stream de entrega?

Para adicionar dados do CloudWatch Logs a um stream de entrega do Firehose, crie um filtro de assinatura do CloudWatch Logs que envia eventos a um stream de entrega. Para obter mais informações, consulte Using CloudWatch Logs Subscription Filters no guia do usuário do Amazon CloudWatch.

P: Como faço para incluir dados do CloudWatch Events ao meu stream de distribuição do Amazon Kinesis Firehose?

Para adicionar dados do CloudWatch Events a um stream de entrega do Firehose, crie uma regra do CloudWatch Events com o stream de entrega como destino. Para obter mais informações, consulte Writing to Amazon Kinesis Firehose Using CloudWatch Events no guia do desenvolvedor do Kinesis Firehose.

 

P: Com que frequência o Amazon Kinesis Firehose distribui dados para o meu bucket do Amazon S3?

A frequência da entrega de dados para o Amazon S3 é determinada pelos valores de tamanho e intervalo do buffer do S3 que você configurou para o seu stream de entrega. O Amazon Kinesis Firehose bufferiza dados de entrada antes de entregá-los ao Amazon S3. Você pode configurar os valores para o tamanho do buffer (de 1 MB a 128 MB) ou o intervalo do buffer (de 60 a 900 segundos) do S3, e a condição que for atendida primeiro aciona a entrega de dados para o Amazon S3. Observe que em circunstâncias em que a entrega de dados ao destino é ultrapassada pela ingestão de dados no stream de entrega, o Amazon Kinesis Firehose aumenta o tamanho do buffer automaticamente para que consiga acompanhar e garantir que todos esses dados sejam entregues ao destino.

P: Com que frequência o Amazon Kinesis Firehose distribui dados para o meu cluster do Amazon Redshift?

Para o destino Amazon Redshift, o Amazon Kinesis Firehose primeiro distribui dados para o bucket do Amazon S3 e depois emite o comando COPY do Redshift para carregar dados do bucket do S3 no cluster do Redshift. A frequência das operações COPY de dados do Amazon S3 para o Amazon Redshift é determinada de acordo com a velocidade com a qual o cluster do Redshift consegue finalizar o comando COPY. Se ainda houver dados a copiar, o Firehose emite um novo comando COPY no momento em que o comando COPY anterior for finalizado com êxito pelo cluster do Redshift.

P: Com que frequência o Amazon Kinesis Firehose entrega dados para o meu domínio do Amazon Elasticsearch?

A frequência da entrega de dados para o Amazon Elasticsearch Service é determinada pelos valores de tamanho e intervalo do buffer do Elasticsearch que você configurou para o seu stream de entrega. O Firehose bufferiza dados de entrada antes de entregá-los ao Amazon Elasticsearch Service. Você pode configurar os valores para o tamanho do buffer (de 1 MB a 100 MB) ou o intervalo do buffer (de 60 a 900 segundos) do Elasticsearch, e a condição que for atendida primeiro aciona a entrega de dados para o Amazon Elasticsearch Service. Observe que em circunstâncias em que a entrega de dados ao destino é ultrapassada pela ingestão de dados no stream de entrega, o Amazon Kinesis Firehose aumenta o tamanho do buffer automaticamente para que consiga acompanhar e garantir que todos esses dados sejam entregues ao destino.

P: Como os dados são organizados no meu bucket do Amazon S3?

O Amazon Kinesis Firehose inclui um prefixo do horário UTC no formato YYYY/MM/DD/HH antes de colocar objetos no Amazon S3. O prefixo é convertido em uma estrutura de pasta do Amazon S3, na qual cada etiqueta separada por uma barra inclinada para a frente (/) torna-se uma subpasta. Você pode modificar a estrutura da pasta incluindo sua própria pasta de nível superior com uma barra inclinada para a frente (por exemplo, myApp/YYYY/MM/DD/HH) ou adicionando texto ao nome da pasta de nível superior YYYY (por exemplo, myApp YYYY/MM/DD/HH). Isso é realizado com a especificação de um prefixo do S3 durante a criação do seu stream de distribuição.

P: Qual é o padrão de nomeação dos objetos do Amazon S3 distribuídos pelo Amazon Kinesis Firehose?

O nome do objeto do Amazon S3 segue o padrão DeliveryStreamName-DeliveryStreamVersion-YYYY-MM-DD-HH-MM-SS-RandomString, em que DeliveryStreamVersion começa com 1 e adiciona mais 1 para cada alteração de configuração do stream de distribuição. Você pode alterar configurações de stream de distribuição (por exemplo, o nome do bucket do S3, dicas de buffering, compactação e criptografia) com o Console do Firehose ou por meio da operação UpdateDestination .

P: O que é a pasta de manifestos no meu bucket do Amazon S3?

Para o destino Amazon Redshift, o Amazon Kinesis Firehose gera arquivos de manifesto para carregar objetos do Amazon S3 no cluster do Redshift em lote. A pasta de manifestos armazena os arquivos de manifesto gerados pelo Firehose.

P: Qual é a aparência dos documentos do Elasticsearch que sofreram backup no meu bucket do Amazon S3?

Se o modo "todos os documentos" for usado, o Amazon Kinesis Firehose encadeará vários registros de entrada com base na configuração de bufferização do seu stream de entrega e, então, os entregará ao bucket do S3 como um objeto dele. Independentemente de qual modo de backup esteja configurado, os documentos com falha serão entregues ao bucket do S3 usando um determinado formato JSON, que disponibiliza informações adicionais, como código de erro e horário da tentativa de entrega. Para obter mais informações, consulte Backup do Amazon S3 para o destino do Amazon ES, no guia do desenvolvedor do Amazon Kinesis Firehose.  

P: Um único stream de distribuição pode distribuir dados para vários buckets do Amazon S3?

No momento, um único stream de distribuição só pode distribuir dados para um bucket do Amazon S3. Se você desejar que dados sejam distribuídos para vários buckets do S3, é possível criar vários streams de distribuição.

P: Um único stream de distribuição pode distribuir dados para vários clusters ou várias tabelas do Amazon Redshift?

No momento, um único stream de distribuição só pode distribuir dados para um único cluster e uma única tabela do Amazon Redshift. Se você desejar que dados sejam distribuídos para vários clusters ou várias tabelas do Redshift, é possível criar vários streams de distribuição.

P: Um único stream de entrega pode distribuir dados para vários domínios ou índices do Amazon Elasticsearch Service?

No momento, um único stream de entrega só pode distribuir dados para um domínio e um índice do Amazon Elasticsearch Service. Se você desejar que dados sejam entregues para vários domínios ou índices do Amazon Elasticsearch, é possível criar vários streams de entrega.

P: Porque ocorre congestionamento quando envio dados para o meu stream de distribuição do Amazon Kinesis Firehose?

Como padrão, cada stream de distribuição pode consumir até 2.000 transações/segundo, 5.000 registros/segundo e 5 MB/segundo. Você pode aumentar esse limite facilmente enviando um formulário de aumento de limite de serviço.

P: Por que vejo registros duplicados no bucket do Amazon S3, na tabela do Amazon Redshift ou no índice do Amazon Elasticsearch?

O Amazon Kinesis Firehose usa pelo menos uma vez semântica para a entrega de dados. Em alguns casos raros, como timeout de uma solicitação em uma tentativa de entrega de dados, uma nova tentativa de entrega pelo Firehose pode resultar em duplicidades se a solicitação anterior acabar sendo processada. 

P: O que acontece se a entrega de dados para o meu bucket do Amazon S3 falhar?

Se a entrega de dados para o seu bucket do Amazon S3 falhar, o Amazon Kinesis Firehose faz novas tentas de entregar os dados a cada 5 segundos durante um período máximo de 24 horas. Se o problema persistir além do período de retenção máximo de 24 horas, os dados serão descartados.

P: O que acontece se a entrega de dados para o meu cluster do Amazon Redshift falhar?

Se a entrega de dados para o seu cluster do Amazon Redshift falhar, o Amazon Kinesis Firehose tenta novamente a entrega de dados a cada cinco minutos durante um período máximo de 60 minutos. Após 60 minutos, o Amazon Kinesis Firehose ignora o lote atual de objetos do S3 que estão prontos para CÓPIA e segue adiante para o próximo lote. A informação sobre os objetos ignorados é passada para o seu bucket do S3 como um arquivo de manifesto na pasta de erros, que você pode usar para preencher manualmente. Para obter informações sobre como usar o comando COPY nos dados manualmente com os arquivos de manifesto, consulte Como usar um manifesto para especificar arquivos de dados.

P: O que acontece se a entrega de dados para o meu domínio do Amazon Elasticsearch falhar?

Para o destino do Amazon Elasticsearch Service, é possível especificar uma duração para novas tentativas entre 0 e 7.200 segundos durante a criação do stream de entrega. Se a entrega de dados para o seu domínio do Amazon ES falhar, o Amazon Kinesis Firehose tenta novamente a entrega de dados durante o período especificado. Após o período de novas tentativas, o Amazon Kinesis Firehose ignora o lote atual de dados e segue adiante para o novo lote. Detalhes sobre os documentos ignorados são entregues ao seu bucket do S3 na pasta elasticsearch_failed, que você pode usar para preenchimento manual.

P: O que acontecerá se houver uma falha na transformação de dados?

Há dois tipos de cenários de falha quando o Firehose tenta invocar a função do Lambda para a transformação de dados:

  • O primeiro tipo é quando a invocação da função falha por razões, como atingir o tempo limite da rede e atingir os limites de invocação do Lambda. Nesses cenários de falha, o Firehose repete a invocação três vezes por padrão e, em seguida, ignora esse lote específico de registros. Os registros ignorados são tratados como registros com falha no processamento. Você pode configurar o número de repetições de invocação entre 0 e 300 usando as APIs CreateDeliveryStream e UpdateDeliveryStream. Para esse tipo de falha, você também pode usar o recurso de registro em log de erros do Firehouse para emitir erros de invocação para o CloudWatch Logs. Para obter mais informações, consulte Como monitorar usando o Amazon CloudWatch Logs
  • O segundo tipo de cenário de falha ocorre quando o resultado de transformação de um registro é definido como “ProcessingFailed” quando retorna de sua função do Lambda. O Firehose trata esses registros como registros com falha no processamento. Para esse tipo de falha, você também pode usar o recurso de registro em log do Lambda para emitir logs de erro para o CloudWatch Logs. Para obter mais informações, consulte Como acessar o Amazon CloudWatch Logs for AWS Lambda.

Para ambos os tipos de cenários de falha, os registros com falha no processamento são entregues ao seu bucket S3 na pasta processing_failed.

P: Por que o tamanho de objetos do S3 entregues é maior que o tamanho do buffer que especifiquei na minha configuração de stream de entrega? 

O tamanho dos objetos do S3 entregues devem refletir o tamanho do buffer especificado na maior parte das vezes se a condição de tamanho de buffer for satisfeita antes da condição de intervalo do buffer. No entanto, quando a entrega de dados ao destino fica atrás da gravação de dados no stream de entrega, o Firehose aumenta o tamanho do buffer dinamicamente para que consiga acompanhar e garantir que todos esses dados sejam entregues ao destino. Nessas circunstâncias, o tamanho dos objetos do S# entregues podem ser maiores que o tamanho do buffer especificado.

P: O que é a pasta de erros no meu bucket do Amazon S3?

A pasta de erros armazena os arquivos de manifesto que contêm informações sobre objetos do S3 que não foram carregadas no seu cluster do Amazon Redshift. Você pode recarregar esses objetos manualmente usando o comando COPY do Redshift. Para obter informações sobre como usar o comando COPY nos dados manualmente com os arquivos de manifesto, consulte Como usar um manifesto para especificar arquivos de dados.

P: O que é a pasta elasticsearch_failed no meu bucket do Amazon S3?

A pasta elasticsearch_failed armazena os documentos cujo carregamento no seu domínio do Amazon Elasticsearch falhou. Você pode reindexar esses documentos manualmente para preenchimento.  

P: O que é a pasta processing_failed no meu bucket do Amazon S3?

A pasta processing_failed armazena os registros que tiveram falha na transformação em sua função do AWS Lambda. Você pode reprocessar esses registros manualmente.

P: Como posso monitorar as operações e o desempenho do stream de distribuição do Amazon Kinesis?

O Console do Firehose exibe métricas de desempenho essenciais, como o volume de dados recebido e o volume de dados distribuído. O Amazon Kinesis Firehose também se integra às métricas do Amazon CloudWatch, permitindo coletar, visualizar e analisar métricas para os seus streams de entrega. Para obter mais informações sobre as métricas do Amazon Kinesis Firehose, consulte Como monitorar usando as métricas do Amazon CloudWatch no guia do desenvolvedor do Amazon Kinesis Firehose.

P: Como posso monitorar as falhas de transformação e de entrega de dados do stream de entrega do Amazon Kinesis?

O Amazon Kinesis Firehose integra-se ao Amazon CloudWatch Logs para que você possa visualizar os logs de erro específicos, caso a transformação ou a entrega de dados falhe. Você pode habilitar o registro de erros durante a criação do seu stream de entrega. Para obter mais informações, consulte Como monitorar usando o Amazon CloudWatch Logs no guia do desenvolvedor do Amazon Kinesis Firehose.

P: Como posso gerenciar e controlar o acesso ao meu stream de distribuição do Amazon Kinesis Firehose?

O Amazon Kinesis Firehose se integra ao AWS Identity and Access Management, um serviço que permite controlar de forma segura o acesso de seus usuários aos serviços e recursos da AWS. Por exemplo, você pode criar uma política que permite que apenas um usuário ou grupo específico adicione dados ao seu stream de distribuição do Amazon Kinesis. Para obter mais informações sobre o gerenciamento e o controle de acesso ao seu stream, consulte Como controlar o acesso com o Amazon Kinesis Firehose.

P: Como posso gerar um registro das chamadas de API feitas para o meu stream de entrega do Amazon Kinesis Firehose para fins de análise de segurança e solução de problemas operacionais?

O Amazon Kinesis Firehose se integra ao Amazon CloudTrail, um serviço que registra as chamadas de APIs da AWS para sua conta e disponibiliza arquivos de registro para você. Para obter mais informações sobre o registro de chamadas de APIs e uma lista das operações compatíveis das APIs do Amazon Kinesis Firehose, consulte Como registrar chamadas de API do Amazon Kinesis Firehose usando o Amazon CloudTrail.

P: O Amazon Kinesis Firehose está disponível no nível gratuito da AWS?

Não. No momento, o Amazon Kinesis Firehose não está disponível no nível gratuito da AWS. O nível gratuito da AWS é um programa que oferece avaliação gratuita para um grupo de serviços da AWS. Para obter mais detalhes, consulte Nível gratuito da AWS.

P: Quanto custa o Amazon Kinesis Firehose?
O Amazon Kinesis Firehose usa uma definição de preço simples, no modelo de pagamento conforme o uso. Não há custos iniciais nem taxas mínimas, e você paga apenas pelos recursos que usa. A definição de preço do Amazon Kinesis Firehose baseia-se no volume de dados (GB) consumido pelo Firehose, com cada registro arredondado para cima para os 5 KB mais próximos. Para obter mais informações sobre os custos do Amazon Kinesis Firehose, consulte Definição de preço do Amazon Kinesis Firehose.

P: Quando eu uso a operação PutRecordBatch para enviar dados para o Amazon Kinesis Firehose, como o arredondamento de 5 KB é calculado?

O arredondamento de 5 KB é calculado no nível do registro e não no nível da operação de API. Por exemplo, se a sua chamada PutRecordBatch contiver dois registros de 1 KB, o volume de dados dessa chamada será medido como 10 KB. (5 KB por registro)

P: O custo do Amazon Kinesis Firehose inclui os custos do Amazon S3, do Amazon Redshift, do Amazon Elasticsearch Service e do AWS Lambda?

Não, você será cobrado separadamente pelas taxas associadas ao uso do Amazon S3, do Amazon Redshift, do Amazon Elasticsearch Service e do AWS Lambda, inclusive pelos custos de armazenamento e de solicitações. Para obter mais informações, consulte Definição de preço do Amazon S3Definição de preço do Amazon RedshiftDefinição de preço do Amazon Elasticsearch Service e Definição de preço do AWS Lambda.