Geral

P: O que é o Amazon Kinesis Data Streams?

O Amazon Kinesis Data Streams permite construir aplicações personalizadas que processam ou analisam dados de streaming para necessidades específicas. É possível adicionar continuamente vários tipos de dados como clickstreams, registros de aplicações e mídia social a um fluxo de dados do Amazon Kinesis de centenas de milhares de fontes. Em segundos, os dados estarão disponíveis para suas aplicações para leitura e processamento por meio do fluxo.

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

O Amazon Kinesis Data Streams gerencia a infraestrutura, as redes, a configuração e o armazenamento necessários para transmitir seus dados no nível da taxa de transferência de dados. Você não precisa se preocupar com provisionamento, implantação, manutenção constante de hardware, software ou outros serviços dos seus fluxos de dados. Além disso, o Amazon Kinesis Data Streams replica dados de forma síncrona entre três zonas de disponibilidade, proporcionando maior durabilidade e resiliência de dados. Por padrão, o Kinesis Data Streams escala a capacidade automaticamente, liberando você da capacidade de provisionamento e gestão. É possível escolher o modo provisionado, se você preferir provisionar e gerenciar a taxa de transferência por sua conta.

P: O que posso fazer com o Amazon Kinesis Data Streams?

O Amazon Kinesis Data Streams é útil para transferir rapidamente os dados dos produtores de dados e processá-los continuamente, seja transformando-os antes de emiti-los para um armazenamento de dados, executar métricas e análises em tempo real, ou derivar fluxos de dados mais complexos para processamento posterior.

Veja os seguintes cenários típicos de uso do Amazon Kinesis Data Streams:

Consumo acelerado de logs e feeds de dados: em vez de esperar reunir dados em batch, você pode fazer com que os produtores de dados enviem dados para um fluxo de dados do Amazon Kinesis assim que são produzidos, evitando a perda de dados em caso de falhas do produtor. Por exemplo, logs do sistema e da aplicação podem ser adicionados continuamente a um fluxo de dados do Amazon Kinesis e disponibilizados para processamento em segundos.

Métricas e relatórios em tempo real: é possível extrair métricas e gerar relatórios a partir de dados do fluxo de dados do Amazon Kinesis em tempo real. Por exemplo, sua aplicação do Amazon Kinesis pode trabalhar com métricas e gerar relatórios para registros do sistema e da aplicação assim que a transmissão de dados chega, em vez de esperar receber lotes de dados.

Análise de dados em tempo real: com o Amazon Kinesis Data Streams, você pode executar análises de dados em transmissão em tempo real. Por exemplo, você pode adicionar clickstreams a um fluxo de dados do Amazon Kinesis e fazer com que sua aplicação do Amazon Kinesis execute análises em tempo real, permitindo obter insights sobre os dados em uma escala de minutos, em vez de horas ou dias.

Coletar dados de logs e eventos: colete dados de logs e eventos de fontes como servidores, desktops e dispositivos móveis. Você pode construir aplicações usando o Amazon Lambda ou Amazon Kinesis Data Analytics para processar dados, gerar métricas, alimentar painéis ao vivo e emitir dados agregados continuamente para armazenamentos como o Amazon Simple Storage Service (S3).

Execute aplicações acionadas por eventos:Emparelhe rapidamente com o AWS Lambda para responder ou se ajustar a ocorrências imediatas dentro das aplicações acionadas por eventos em seu ambiente, em qualquer escala

P: Como posso utilizar o Amazon Kinesis Data Streams?

Depois de se cadastrar na AWS, você pode iniciar usando o Kinesis Data Streams criando um fluxo de dados Kinesis através do Console de Gerenciamento da AWS ou da operação CreateStream. Configure seus produtores de dados para adicionar dados continuamente ao seu fluxo de dados. Opcionalmente, você pode enviar dados de recursos existentes em serviços da AWS como o Amazon DynamoDB, Amazon Aurora, Amazon CloudWatch e AWS IoT Core. Você pode então usar o AWS Lambda, Amazon Kinesis Data Analytics, ou AWS Glue Streaming para processar rapidamente os dados armazenados no Kinesis Data Streams. Você também pode construir aplicações personalizadas são executadas no Amazon Elastic Compute Cloud (EC2), Amazon Elastic Container Service (ECS) e Amazon Elastic Kubernetes Service (EKS) usando ou Amazon Kinesis API ou Amazon Kinesis Client Library (KCL).

Principais conceitos

P: O que é um fragmento, produtor e consumidor no Kinesis Data Streams?

Um fragmento é uma sequência de registro de dados em um fluxo. Isso serve como uma base de unidade de taxa de transferência do fluxo de dados do Kinesis. Um fragmento suporta 1 MB/segundo e 1.000 registros por segundo para gravação, e 2 MB/segundo para leitura. Os limites do fragmento garantem uma performance previsível, facilitando o projeto e a operação de um fluxo de trabalho de dados altamente confiável. Um produtor coloca registros de dados em fragmentos e um consumidor obtém registros de dados de fragmentos. Os consumidores usam fragmentos para processamento paralelo de dados e para consumir dados na ordem exata em que são armazenados. Se os dados gravados e lidos excederem os limites de fragmentos, as aplicações do produtor e do consumidor receberão aceleradores, que podem ser tratados através de novas tentativas.

P: O que é um registro?

Um registro é a unidade de dados armazenada em um stream de dados do Amazon Kinesis. Um registro é composto por um número de sequência, uma chave de partição e um blob de dados. O blob de dados consiste nos dados de interesse que o seu produtor de dados adiciona a um stream de dados. O tamanho máximo de um blob de dados (a carga útil de dados antes da codificação Base64) é de 1 megabyte (MB).

P: O que é uma chave de partição?

A chave de partição é usada para segregar e rotear registros para diferentes fragmentos de um fluxo de dados. Uma chave de partição é especificada por seu produtor de dados ao adicionar dados a um fluxo de dados do Amazon Kinesis. Por exemplo, supondo que você tenha um fluxo de dados com dois fragmentos (fragmento 1 e fragmento 2). Você pode configurar seu produtor de dados para usar duas chaves de partição (chave A e chave B) para que todos os registros com chave A sejam colocados no fragmento 1 e todos os registros com chave B sejam colocados no fragmento 2.

P: O que é um número de sequência?

Um número de sequência é um identificador exclusivo para cada registro. O número de sequência é atribuído pelo Amazon Kinesis quando um produtor de dados chama as operações PutRecord ou PutRecords para adicionar dados a um fluxo de dados do Amazon Kinesis. Os números de sequência para a mesma chave de partição geralmente aumentam com o tempo; quanto maior for o período de tempo entre as solicitações do PutRecord ou PutRecords, maiores serão os números de sequência.

P: O que é o modo de capacidade?

O modo de capacidade do Kinesis Data Streams determina como a capacidade é gerenciada e como o uso é cobrado por um fluxo de dados. Você pode escolher entre os modos provisionado e sob demanda. No modo provisionado, você especifica o número de fragmentos para o fluxo de dados. A capacidade total de um fluxo de dados é a soma das capacidades de seus fragmentos. Você pode aumentar ou diminuir o número de fragmentos em um fluxo de dados conforme necessário, e você paga pelo número de fragmentos a uma taxa por hora. No modo sob demanda, a AWS gerencia os fragmentos para fornecer uma taxa de transferência necessária. Você paga apenas pela taxa de transferência real utilizada, e o Kinesis Data Streams acomoda automaticamente sua workload à medida que elas sobem ou descem. O Kinesis Data Streams grava e lê APIs, juntamente com recursos opcionais como retenção estendida e distribuição avançada, são suportados em ambos os modos de capacidade.

P: Como escolho entre o modo sob demanda e provisionado?

O modo sob demanda é mais adequado para workloads com padrões de tráfego imprevisíveis e altamente variáveis. Você deve usar este modo se preferir a AWS para gerenciar a capacidade em seu nome ou prefere pagar por taxa de transferência. O modo provisionado é mais adequado para tráfego previsível, onde os requisitos de capacidade são fáceis de prever. Você deve considerar o uso do modo provisionado se quiser ter um controle detalhado sobre como os dados são distribuídos pelos fragmentos. O modo provisionado também é adequado se você quiser fornecer fragmentos adicionais para que a aplicação consumidora possa ter mais taxa de transferência de leitura para acelerar o processamento geral.

P: É possível alternar sobre o modo sob demanda e provisionado?

Sim. É possível alternar entre o modo sob demanda e provisionado duas vezes por dia. A contagem de fragmentos de seu fluxo de dados permanece a mesma quando você muda do modo provisionado para o modo sob demanda e vice-versa. Com a mudança do modo de provisionado para o modo de capacidade sob demanda, seu fluxo de dados retém qualquer fragmento que tinha antes da transição. Mas a partir deste ponto, o Kinesis Data Streams monitora seu tráfego de dados e escala a contagem de fragmentos deste fluxo de dados sob demanda para cima ou para baixo, dependendo do aumento ou diminuição do tráfego.

Adicionar dados ao Kinesis Data Streams

P: Como adiciono dados ao meu fluxo de dados do Amazon Kinesis?

Você pode adicionar dados a um fluxo de dados do Kinesis por meio de operações PutRecord e PutRecords, Amazon Kinesis Producer Library (KPL) ou do Amazon Kinesis Agent.

P: Qual é a diferença entre PutRecord e PutRecords?

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

P: O que é o Amazon Kinesis Producer Library (KPL)?

A Amazon Kinesis Producer Library (KPL) é uma biblioteca fácil de usar e altamente configurável que o ajuda a colocar dados em um fluxo de dados do Amazon Kinesis. A KPL apresenta uma interface simples, assíncrona e confiável que habilita alcançar rapidamente uma alta taxa de transferência para o produtor com um mínimo de recursos de clientes.

P: O que é o Amazon Kinesis Agent?

O Amazon Kinesis Agent é uma aplicação Java pré-definida que oferece uma maneira fácil de coletar e enviar dados para o fluxo de dados do Amazon Kinesis. Você pode instalar o atendente em ambientes de servidor baseados em Linux, como servidores Web, servidores de log e servidores de banco de dados. O agente monitora determinados arquivos e envia continuamente dados para o stream de dados. Para obter mais informações, consulte Gravar com atendentes.

P: Que dados são considerados para a taxa de transferência de dados de um fluxo de dados do Amazon Kinesis durante uma chamada de PutRecord ou PutRecords?

O blob de dados, a chave de partição e o nome do fluxo de dados são parâmetros obrigatórios de uma chamada de PutRecord ou PutRecords. O tamanho do seu blob de dados (antes da codificação Base64) e da chave de partição serão considerados na taxa de transferência de dados do seu fluxo de dados do Amazon Kinesis, que é determinado pelo número de fragmentos no fluxo de dados.

Ler e processar dados do Kinesis Data Streams

P: O que é um consumidor, e quais são os diferentes tipos de consumidores oferecidos pela Amazon Kinesis Data Streams?

Um consumidor é uma aplicação que processa todos os dados de um fluxo de dados Kinesis. Você pode escolher entre tipos de consumidores com distribuição compartilhada e distribuição avançada para ler dados de um fluxo de dados Kinesis. Todos os consumidores que compartilham a distribuição partilham um fragmento de 2 MB/segundo de taxa de transferência de leitura e cinco limites de transações por segundo e exigem o uso da API GetRecords. Um consumidor com distribuição avançada recebe sua própria atribuição de 2 MB/segundo de taxa de transferência de leitura, permitindo que vários consumidores leiam os dados do mesmo fluxo em paralelo, sem contestar a taxa de transferência de leitura com outros consumidores. É necessário usar a API SubscribeToShard com os consumidores com distribuição avançada. Recomendamos o uso de consumidores com distribuição avançada se você quiser adicionar mais de um consumidor ao seu fluxo de dados.

P: Como posso processar os dados capturados e armazenados no Amazon Kinesis Data Streams?

Você pode usar serviços gerenciados como AWS Lambda, Amazon Kinesis Data Analytics e AWS Glue para processar dados armazenados no Kinesis Data Streams. Estes serviços gerenciados cuidam do provisionamento e gerenciamento da infraestrutura subjacente para que você possa se concentrar em gravar sua lógica de negócios. Você também pode entregar dados armazenados no Kinesis Data Streams para o Amazon S3, Amazon OpenSearch Service, Amazon Redshift, e endpoints HTTP personalizados usando sua integração pré-construída com Kinesis Data Firehose. É possível também construir aplicações usando o Amazon Kinesis Client Library, uma biblioteca pré-construída, ou a API do Amazon Kinesis Data Streams.

P: O que é o Amazon Kinesis Client Library (KCL)?

O Amazon Kinesis Client Library (KCL) para Java, Python, Ruby, Node.js e .NET é uma biblioteca pré-construída, que ajuda a construir facilmente aplicações do Amazon Kinesis para leitura e processamento de dados em um fluxo de dados do Amazon Kinesis.

O KCL trata problemas complexos, como a adaptação a mudanças no volume do fluxo de dados, balanceamento de cargas de dados de transmissão, coordenação de serviços distribuídos e processamento de dados com tolerância a falhas. O KCL permite que você se concentre na lógica de negócios durante a criação de aplicações. Consulte a documentação da Kinesis Data Streams aqui para obter mais detalhes sobre o KCL.

P: O que é a API SubscribeToShard?

A API SubscribeToShard é uma API de transmissão de alta performance que envia dados de fragmentos para os consumidores em uma conexão persistente sem um ciclo de requisição do cliente. A API SubscribeToShard usa o protocolo HTTP/2 para entregar dados a consumidores registrados sempre que novos dados chegam no fragmento, geralmente num período de 70 milissegundos, oferecendo uma entrega aproximadamente 65% mais rápida do que a da API GetRecords. Os consumidores se beneficiarão de uma entrega mais rápida mesmo quando vários consumidores registrados estiverem lendo do mesmo fragmento.

P: O que é a distribuição avançada?

Distribuição avançada é um recurso opcional para os consumidores do Kinesis Data Streams que apresenta canais de taxa de transferência lógicos de 2 MB/segundo entre consumidores e fragmentos. Isso permite que os clientes escalem a quantidade de consumidores que fazem a leitura de um fluxo de dados paralelamente sem perder a alta performance.

P: Por que devo usar a distribuição avançada?

Use a distribuição avançada se você tem, ou espera ter, vários consumidores recuperando dados de um fluxo paralelamente, ou se tem pelo menos um consumidor que exige o uso da API SubscribeToShard para fornecer velocidades de entrega de dados abaixo de 200 milissegundos entre produtores e consumidores.

P: Como a distribuição avançada é utilizada pelo consumidor?

Os consumidores utilizam a distribuição avançada por meio da obtenção de dados com a API SubscribeToShard. O nome do consumidor registrado é utilizado dentro da API SubscribeToShard, o que leva à utilização do benefício de distribuição avançada proporcionado ao consumidor registrado.

P: Posso ter alguns consumidores usando a distribuição avançada e outros não?

Sim. É possível ter vários consumidores usando a distribuição avançada e outros não usando esse recurso ao mesmo tempo. O uso da distribuição avançada não afeta os limites dos fragmentos para o uso tradicional de GetRecords.

P: Preciso usar a distribuição avançada para poder usar a SubscribeToShard?

Sim. Para usar a SubscribeToShard, você precisa inscrever seus consumidores para que o registro ative a distribuição avançada. Por padrão, o consumidor utilizará a distribuição avançada automaticamente quando os dados forem recuperados pela SubscribeToShard.

Modo sob demanda

P: : Quais são as quotas de taxa de transferência padrão para escrever dados no fluxo de dados usando o modo sob demanda?

Um novo fluxo de dados criado no modo sob demanda tem uma cota de 4 MB/segundo e 4.000 registros por segundo para gravações. Por padrão, estes fluxos aumentam a escala na vertical automaticamente até 200 MB/segundo e 200.000 registros por segundo para gravações.

P: Como os fluxos de dados reduzem a escala na horizontal no modo sob demanda para lidar com o aumento da taxa de transferência de gravações?

Um fluxo de dados no modo sob demanda acomoda até duas vezes seu pico de taxa de transferência de gravação observado nos últimos 30 dias. À medida que a taxa de transferência de seu fluxo de dados atinge um novo pico, o Kinesis Data Streams escala a capacidade de fluxo automaticamente. Por exemplo, se o fluxo de dados tem uma taxa de transferência que varia de 10 MB/segundo a 40 MB/segundo, o Kinesis Data Streams garantirá que você possa facilmente alcançar o dobro da taxa de transferência de pico de 80 MB/segundo. Posteriormente, se o mesmo fluxo de dados sustentar um novo pico de produção de 50 MB/segundo, o Data Streams garantirá que haja capacidade suficiente para ingerir 100 MB/segundo de taxa de transferência de gravação. Entretanto, você verá exceções "ProvisionedThroughputExceeded" se seu tráfego crescer mais que o dobro do pico anterior dentro de um período de 15 minutos. Você precisa tentar novamente estes pedidos rápidos.

P: Quais são os limites de taxa de transferência para a leitura de dados de fluxos no modo sob demanda?

A capacidade de leitura agregada do modo sob demanda aumenta proporcionalmente a taxa de transferência de gravação para garantir que as aplicações consumidoras tenham sempre a taxa de transferência de leitura adequada para processar os dados recebidos em tempo real. Você obtém pelo menos o dobro da taxa de transferência de dados de gravação para ler dados usando a API GetRecords. Recomendamos usar um consumidor com a API GetRecord para que ele tenha espaço suficiente para recuperar, quando a aplicação precisar se recuperar do tempo de inatividade. Para adicionar mais de uma aplicação consumidora, você precisa usar uma distribuição avançada, que suporte adicionar até 20 consumidores a um fluxo de dados usando a API SubscribeToShard, tendo cada um deles uma taxa de transferência dedicado.

Modo provisionado

P: Quais são os limites do Amazon Kinesis Data Streams no modo provisionado?

A taxa de transferência de um fluxo de dados do Kinesis no modo provisionado é predefinida para escalar sem limites por meio do aumento do número de fragmentos em um fluxo de dados.

P: Como eu escalo a capacidade do Amazon Kinesis Data Streams no modo provisionado?

Você pode aumentar a escala na vertical da capacidade de um fluxo de dados Kinesis em modo provisionado, dividindo os fragmentos existentes usando a API SplitShard. Você pode reduzir a escala na vertical da capacidade mesclando dois fragmentos usando a API MergeShard. De forma alternativa, é possível usar a API UpdateShardCount para aumentar (ou diminuir) a escala a capacidade de um fluxo na vertical para uma contagem específica de fragmentos.

P: Como eu decido a taxa de transferência do meu fluxo de dados do Amazon Kinesis no modo provisionado?

A taxa de transferência de um fluxo de dados do Kinesis é determinado pelo número de fragmentos dentro do fluxo de dados. Siga as etapas abaixo para estimar o número inicial de fragmentos que o seu fluxo de dados precisa no modo provisionado. Observe que você pode ajustar de maneira dinâmica o número de fragmentos no seu fluxo de dados por meio da refragmentação.

Estime o tamanho médio do registro gravado no fluxo de dados em kilobytes (KB), arredondando para o 1 KB mais próximo (average_data_size_in_KB).

Estime o número de registros gravados no stream de dados por segundo. (number_of_records_per_second).

Decida o número de aplicações do Amazon Kinesis consumindo dados simultaneamente e independentemente do fluxo de dados (number_of_consumers).

Calcule a largura de banda da gravação de entrada em KB (incoming_write_bandwidth_in_KB), que é igual ao average_data_size_in_KB multiplicado pelo number_of_records_per_second.

Calcule a largura de banda de leitura de saída em KB (outgoing_read_bandwidth_in_KB), que é igual à incoming_write_bandwidth_in_KB multiplicada pelo number_of_consumers.

É possível calcular o número inicial de fragmentos (number_of_shards) necessário para seu fluxo de dados usando a seguinte fórmula: number_of_shards = max (incoming_write_bandwidth_in_KB/1000, outgoing_read_bandwidth_in_KB/2000)

P: Qual é a taxa de transferência máxima que posso solicitar para meu fluxo de dados do Amazon Kinesis no modo provisionado?

A taxa de transferência de um fluxo de dados do Kinesis é predefinida para escalar sem limites. A cota de fragmento padrão é de 500 fragmentos por stream para as seguintes regiões da AWS: Leste dos EUA (Norte da Virgínia), Oeste dos EUA (Oregon) e Europa (Irlanda). Para todas as outras regiões, a cota de fragmento padrão é de 200 fragmentos por fluxo. Você pode solicitar o aumento da cota de fragmentos usando console do AWS Service Quotas.

P: O que acontece se os limites de capacidade de um fluxo de dados do Amazon Kinesis forem excedidos enquanto o produtor de dados adiciona dados ao fluxo de dados?

No modo provisionado, os limites de capacidade de um fluxo de dados do Kinesis são definidos pelo número de fragmentos dentro do fluxo de dados. Os limites podem ser excedidos por taxa de transferência de dados ou número de registros PUT. Enquanto os limites de capacidade forem excedidos, os dados de put serão rejeitados com uma exceção ProvisionedThroughputExceeded. Se isso for devido a um aumento temporário na taxa de dados de entrada do fluxo de dados, uma nova tentativa do produtor de dados poderá levar ao atendimento das solicitações. Se isso for devido a um aumento constante na taxa de dados de entrada do fluxo de dados, você deve aumentar o número de fragmentos dentro do fluxo de dados para fornecer capacidade suficiente para que as chamadas de put de dados sejam sempre com êxito. Nos dois casos, as métricas do Amazon CloudWatch permitem que você saiba da mudança na taxa de dados de entrada do fluxo de dados e da ocorrência de exceções ProvisionedThroughputExceeded.

P: O que acontece se os limites de capacidade de um fluxo de dados do Amazon Kinesis são excedidos quando a aplicação do Amazon Kinesis lê dados do fluxo de dados no modo provisionado?

No modo provisionado, os limites de capacidade de um fluxo de dados do Kinesis são definidos pelo número de fragmentos dentro do fluxo de dados. Os limites podem ser excedidos pela taxa de transferência de dados ou pelo número de chamadas de leitura de dados. Enquanto os limites de capacidade forem excedidos, a chamada de leitura de dados será rejeitada com a exceção ProvisionedThroughputExceeded. Se isso ocorrer devido a um aumento temporário da taxa de dados de saída do fluxo de dados, uma nova tentativa da aplicação do Amazon Kinesis poderá levar à conclusão das solicitações. Se isso ocorrer devido a um aumento sustentado da taxa de dados de saída do fluxo de dados, você deve aumentar o número de fragmentos no seu fluxo de dados para disponibilizar capacidade suficiente para que as chamadas de leitura de dados sejam sempre com êxito. Em ambos os casos, as métricas do Amazon CloudWatch permitem obter informações sobre a mudança na taxa de dados de saída do fluxo de dados e sobre a ocorrência de exceções ProvisionedThroughputExceeded.

Retenção de dados prolongada e de longo período de vigência

P. Qual o período de retenção suportado pelo Kinesis Data Streams?

O período de retenção padrão de 24 horas abrange cenários em que atrasos intermitentes no processamento exigem atualização com dados em tempo real. Uma retenção de 7 dias permite reprocessar dados por até 7 dias para resolver possíveis perdas de dados posteriores. A retenção de dados de longo período de vigência superior a 7 dias até 365 dias permite que você reprocesse dados antigos para casos de uso, como teste de algoritmo, preenchimento de armazenamento de dados e auditoria.

P. Posso usar os APIs existentes do Kinesis Data Streams para ler dados com mais de sete dias?

Sim. Você pode usar as mesmas APIs getShardIterator, GetRecords e SubscribeToShard para ler dados retidos por mais de 7 dias. Os consumidores podem mover o iterador para o local desejado no fluxo, recuperar o mapa de fragmentos (incluindo aberto e fechado) e ler os registros.

P: Existem novas APIs para auxiliar na leitura de dados antigos?

Sim. Há aprimoramentos de APIs ListShards, GetRecords e SubscribeToShard. É possível usar a nova opção de filtragem com o parâmetro TimeStamp disponível na API ListShards para recuperar com eficiência o mapa de fragmentos e melhorar a performance da leitura de dados antigos. O filtro TimeStamp permite que as aplicações descubram e enumerem fragmentos a partir do momento em que você deseja reprocessar os dados e elimina a necessidade de iniciar no trim horizon. GetRecords e SubscribeToShards têm um novo campo, ChildShards, que permitirá que você descubra rapidamente os fragmentos secundários quando uma aplicação terminar de ler dados de um fragmento fechado, em vez de ter que percorrer o mapa de fragmentos novamente. A descoberta rápida de fragmentos faz uso eficiente do consumo de recursos de computação da aplicação para o fluxo de qualquer tamanho, independentemente do período de retenção de dados.

P: Quando eu uso aprimoramentos de API?

Você deve considerar esses aprimoramentos de API se planeja reter dados por mais tempo e escalar a capacidade de fluxo regularmente. As operações de escalabilidade de fluxo fecham os fragmentos existentes e abrem novos fragmentos secundários. Os dados em todos os fragmentos abertos e fechados são retidos até o final do período de retenção. Portanto, o número total de fragmentos aumenta linearmente com um período de retenção mais longo e várias operações de escalabilidade. Esse aumento no mapa de fragmentos requer o uso de ListShards com filtro TimeStamp e campo ChildShards em GetRecords e a API SubscribeToShard para descoberta eficiente de fragmentos visando a recuperação de dados. Você precisará fazer uma atualização no KCL para a versão mais recente (1.x para consumidores padrão e 2.x para consumidores de distribuição avançada) para esses recursos.

P: O Amazon Kinesis Data Streams oferece suporte para registro de esquema?

Sim. Os clientes do Amazon Kinesis Data Streams podem usar o AWS Glue Schema Registry, um recurso sem servidor do AWS Glue, seja por meio da Kinesis Producer Library (KPL) e Kinesis Client Libraries (KCL) ou por meio de APIs AWS Glue Schema Registry no AWS SDK para Java. O Schema Registry está disponível sem custo adicional. 

Visite a documentação do usuário do Schema Registry para saber mais e iniciar o uso.

Gerenciamento do Kinesis Data Streams

P: Como posso alterar a taxa de transferência do meu fluxo de dados do Amazon Kinesis?

Há duas maneiras de alterar a taxa de transferência do seu fluxo de dados. Você pode usar a API UpdateShardCount ou o Console de Gerenciamento da AWS para escalar o número de fragmentos em um fluxo de dados ou alterar a taxa de transferência de um fluxo de dados do Amazon Kinesis ajustando o número de fragmentos no fluxo de dados (refragmentação).

P: Quanto tempo leva para alterar a taxa de transferência do meu fluxo de dados do Amazon Kinesis usando a UpdateShardCount ou o Console de Gerenciamento da AWS?

Solicitações comuns de escalabilidade devem levar alguns minutos para serem concluídas. Solicitações maiores de escalabilidade devem levar mais tempo do que as menores.

P: O Amazon Kinesis Data Streams permanece disponível quando eu altero a taxa de transferência do meu fluxo de dados do Kinesis no modo provisionado ou quando a escalabilidade acontece automaticamente no modo sob demanda?

Sim. É possível continuar adicionando e lendo dados de seu fluxo de dados Kinesis enquanto usa UpdateShardCount ou faz a refragmentação para alterar a taxa de transferência do fluxo de dados ou quando o Kinesis Data Streams o faz automaticamente no modo sob demanda.

P: Como posso monitorar as operações e a performance do fluxo de dados do Amazon Kinesis?

O Console de Gerenciamento do Amazon Kinesis Data Streams exibe as principais métricas operacionais e de performance, como taxa de transferência de recebimento e envio de dados dos seus fluxos de dados do Amazon Kinesis. O Kinesis Data Streams também se integra ao Amazon CloudWatch, permitindo coletar, ver e analisar métricas do CloudWatch para os seus fluxos de dados e fragmentos dentro desses fluxos. Para obter mais informações sobre as métricas do Amazon Kinesis Data Streams, consulte Monitoramento do Amazon Kinesis Data Streams com o Amazon CloudWatch.

Observe que todas as métricas de fluxo são gratuitas. Todas as métricas de fragmentos habilitadas são cobradas de acordo com a definição de preço do Amazon CloudWatch.

P: Como posso gerenciar e controlar o acesso ao meu fluxo de dados do Amazon Kinesis?

O Amazon Kinesis Data Streams se integra ao AWS Identity and Access Management (IAM), um serviço que habilita 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 fluxo de dados do Kinesis. Para obter mais informações sobre o gerenciamento e o controle de acesso ao seu fluxo de dados, consulte Controlar o acesso aos recursos do Amazon Kinesis Data Streams usando o IAM.

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

O Kinesis Data Streams se integra ao Amazon CloudTrail, um serviço que registra as chamadas de APIs da AWS para sua conta e disponibiliza arquivos de log para você. Para obter mais informações sobre o registro em log de chamada de API e uma lista das operações suportadas das APIs do Amazon Kinesis, consulte Registrar em log chamadas de API do Amazon Kinesis usando o Amazon CloudTrail.

P: Como posso gerenciar de modo eficaz meus fluxos de dados do Amazon Kinesis e seus custos associados?

O Amazon Kinesis Data Streams permite atribuir etiquetas a fluxos de dados do Kinesis a fim de facilitar o gerenciamento de recursos e custos. Uma etiqueta é um rótulo definido pelo usuário, especificado como um par chave-valor, que ajuda a organizar recursos da AWS. Por exemplo, você pode atribuir uma etiqueta aos seus fluxos de dados por centro de custo, permitindo a categorização e o rastreamento dos custos do Amazon Kinesis Data Streams com base no centro de custo. Para obter mais informações sobre marcação do Amazon Kinesis Data Streams, consulte Marcação do Amazon Kinesis Data Streams.

Segurança

P: Qual é o nível de segurança dos meus dados durante o uso do Kinesis Data Streams?

Como padrão o Amazon Kinesis é seguro. Apenas os proprietários da conta e do fluxo de dados têm acesso aos recursos do Kinesis criados por eles. O Kinesis aceita a autenticação de usuário para controlar o acesso aos dados. Você pode usar as políticas do AWS IAM para conceder seletivamente permissões a usuários e grupos de usuários. Você pode inserir e extrair seus dados com segurança do Kinesis por meio de endpoints SSL usando o protocolo HTTPS. Se você precisar de segurança extra, use a criptografia no lado do servidor com as chaves do AWS Key Management Service (KMS), para criptografar dados armazenados no seu fluxo de dados. O AWS KMS permite usar as chaves do KMS geradas pela AWS para criptografia ou, se você preferir, é possível trazer sua própria chave do KMS para o AWS KMS. Por fim, você pode usar suas próprias bibliotecas de criptografia para criptografar dados do cliente antes de inserir os dados no Kinesis.

P: Posso acessar de modo privado as APIs do Kinesis Data Streams por meio da Amazon Virtual Private Cloud (VPC) sem usar IPs públicos?

Sim. Você pode acessar de modo privado as APIs do Kinesis Data Streams de uma Amazon VPC criando endpoints da VPC. Com os endpoints da VPC, o roteamento entre a VPC e o Kinesis Data Streams é processado pela rede da AWS sem a necessidade de um gateway da internet, um gateway NAT ou uma conexão VPN. A geração mais recente de endpoints da VPC usados pelo Kinesis Data Streams é desenvolvido na AWS PrivateLink, uma tecnologia que habilita a conectividade privada entre os serviços da AWS usando interfaces de rede elástica (ENIs) com IPs privados nas VPCs. Para saber mais sobre o PrivateLink, acesse a documentação do PrivateLink.

Criptografia

P: Posso criptografar os dados que insiro em um fluxo de dados do Kinesis?

Sim, e há duas opções para fazer isso. Você pode usar a criptografia no lado do servidor, que é um recurso totalmente gerenciado que criptografa e descriptografa automaticamente dados inseridos e extraídos de um fluxo de dados. Ou gravar dados criptografados em um fluxo de dados ao realizar a criptografia e a descriptografia do cliente.

P: Por que devo usar a criptografia no lado do servidor em vez da criptografia do lado do cliente?

Geralmente, os clientes escolhem a criptografia no lado do servidor em vez de a criptografia do lado do cliente por uma das seguintes razões:

  1. É difícil aplicar a criptografia do lado do cliente
  2. Eles desejam uma segunda camada de segurança além da criptografia do lado do cliente.
  3. É difícil implementar os esquemas de gerenciamento de chaves do cliente.

P: O que é a criptografia no lado do servidor?

A criptografia no lado do servidor do Kinesis Data Streams criptografa automaticamente dados usando uma chave do AWS KMS, especificada pelo usuário antes de eles serem gravados na camada de armazenamento do fluxo de dados, e descriptografa os dados depois que forem recuperados do armazenamento. A criptografia impossibilita gravações e torna o payload e a chave de partição ilegíveis, a menos que o usuário que está gravando ou lendo por meio do fluxo de dados tenha a permissão para usar a chave selecionada para a criptografia no fluxo de dados. Como resultado, a criptografia no lado do servidor torna fácil cumprir os requisitos internos de segurança e compatibilidade que regem os seus dados.

Com a criptografia no lado do servidor, os aplicativos do lado do cliente (produtores e consumidores) não precisam estar cientes da criptografia, não precisam gerenciar chaves KMS nem operações criptográficas. Além disso, os seus dados serão criptografados quando estiverem em repouso e em movimento no serviço Kinesis Data Streams. Todas as chaves KMS usadas pelo recurso de criptografia no lado do servidor são fornecidas pelo AWS KMS. O AWS KMS facilita o uso de uma chave do KMS para Kinesis gerenciada pela AWS (um método de criptografia "1-clique"), sua própria chave gerenciada pelo cliente do AWS KMS ou uma chave do KMS importada por você para fazer a criptografia.

P: Existe um Guia de conceitos básicos da criptografia no lado do servidor?

Sim e você pode encontrá-lo no guia de documentação do usuário.

P: A criptografia no lado do servidor interfere em como meus aplicativos interagem com o Kinesis Data Streams?

Possivelmente. Dependerá da chave usada para fazer a criptografia e das permissões que regem o acesso à chave.

  • Se você usar a chave do KMS para Kinesis gerenciada pela AWS (alias de chave = aws/kinesis), suas aplicações não sofrerão impacto pela habilitação nem pela desabilitação da criptografia usando essa chave.
  • Se você usar uma chave KMS diferente, como uma chave personalizada do AWS KMS ou uma que tenha sido importada para o serviço AWS KMS, e se os produtores e os consumidores de um stream de dados não tiverem permissão para utilizar a chave do KMS usada para criptografia, as suas solicitações PUT e GET consequentemente falharão. Antes de usar a criptografia no lado do servidor será necessário configurar as políticas de chave do AWS KMS para permitir a criptografia e a descriptografia das mensagens. Para obter exemplos e mais informações sobre as permissões do AWS KMS, consulte AWS KMS API Permissions: Actions and Resources Reference no Guia do desenvolvedor do AWS Key Management Service ou as instruções sobre permissões contidas na documentação do usuário da criptografia no lado do servidor do Kinesis Data Streams.

P: Existe algum custo adicional associado ao uso da criptografia no lado do servidor?

Sim. No entanto, se você estiver usando a chave do KMS para Kinesis gerenciada pela AWS e não tiver ultrapassado os custos de uso de APIs do KMS do nível gratuito da AWS, o uso da criptografia no lado do servidor não será cobrado. Veja a seguir a descrição dos custos por recurso:

Chaves:

A chave do KMS para Kinesis gerenciada pela AWS (alias = "aws/kinesis") é gratuita.
As chaves do KMS gerenciadas pelo cliente estão sujeitas aos custos de chave do KMS. Saiba mais.

Uso das APIs do KMS:

Os custos de uso de APIs se aplicam a cada chave do KMS, inclusive os personalizados. O Kinesis Data Streams chama o KMS aproximadamente a cada 5 minutos quando ocorre a mudança na chave de dados. Em um período de 30 dias, o custo total de chamadas de API ao KMS iniciadas por um fluxo de dados do Kinesis deve ser inferior a alguns dólares. Note que esse custo aumenta com o número de credenciais de usuários usados pelos produtores e consumidores de dados, pois cada credencial de usuário exige uma chamada de API única ao AWS KMS. Quando você usa uma função do IAM para autenticação, cada função de chamada assumida resultará em credenciais de usuário únicas. Pode ser necessário armazenar em cache as credenciais de usuário retornadas peala função de chamada assumida para reduzir os custos do KMS.

P: Quais regiões da AWS oferecem criptografia no lado do servidor para o Kinesis Data Streams?

A criptografia do lado do servidor do Kinesis Data Streams está disponível na região AWS GovCloud e em todas as regiões públicas, exceto na região China (Pequim).

P: Como posso iniciar, atualizar ou remover a criptografia no lado do servidor de um fluxo de dados?

Todas essas operações podem ser concluídas usando o Console de Gerenciamento da AWS ou o AWS SDK. Para saber mais, consulte o Guia de conceitos básicos da criptografia no lado do servidor do Kinesis Data Streams.

P: Qual algoritmo de criptografia é usado para a criptografia no lado do servidor?

O Kinesis Data Streams usa um algoritmo AES-GCM 256 para criptografia.

P: Se eu criptografar um fluxo de dados que já contenha dados gravados, estejam eles em texto sem formatação ou em texto cifrado, todos os dados no fluxo de dados serão criptografados ou descriptografados se a criptografia for atualizada?

Não. Apenas os novos dados gravados no fluxo de dados serão criptografados (ou permanecerão descriptografados) pela nova aplicação da criptografia.

P: O que a criptografia no lado do servidor do Kinesis Data Streams codifica?

A criptografia no lado do servidor codifica o payload da mensagem junto com a chave de partição, o que é especificado pelos aplicativos do produtor do stream de dados.

P: A criptografia no lado do servidor é um recurso específico de estilhaço ou um recurso específico de stream?

A criptografia no lado do servidor é um recurso específico de transmissão.

P: Posso alterar a chave do KMS usada para criptografar um fluxo de dados específico?

Sim. Ao usar o Console de Gerenciamento da AWS ou o AWS SDK, você pode escolher uma nova chave do KMS para aplicar a um fluxo de dados específico.

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

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

Acordo de Nível de Serviço

P: O que o acordo de nível de serviço (SLA) do Amazon Kinesis Data Streams garante?

O SLA do Amazon Kinesis Data Streams garante uma porcentagem de tempo de inatividade de pelo menos 99,9% para o Kinesis Data Streams.

P: Como saberei se me qualifico para um crédito de serviço do SLA?

Você estará qualificado para um crédito do SLA para o Amazon Kinesis Data Streams nos termos do Acordo de Nível de Serviço do Amazon Kinesis Data Streams se mais de uma zona de disponibilidade na qual você executar uma tarefa, na mesma região, tiver uma porcentagem de tempo de inatividade inferior a 99,9% durante qualquer ciclo de faturamento mensal.

Para obter detalhes completos sobre todos os termos e condições do SLA, bem como detalhes sobre como enviar uma declaração, consulte a página de detalhes do SLA do Amazon Kinesis Data Streams.

Preço e faturamento

P: Como funciona a definição de preço do Amazon Kinesis Data Streams?

O Amazon Kinesis Data Streams usa um preço simples com pagamento conforme o uso. Não há custos adiantados ou taxas mínimas. Você paga apenas pelos recursos utilizados. O Kinesis Data Streams tem dois modos de capacidade, sob demanda e provisionado, ambos com opções específicas de faturamento.

P: Como funciona a definição de preço do Amazon Kinesis Data Streams no modo sob demanda?

No modo de capacidade sob demanda, não é necessário especificar a taxa de transferência de leitura e gravação que você espera que a aplicação tenha. Neste modo, o preço se baseia no volume de dados ingeridos e recuperados, juntamente com uma cobrança por hora para cada fluxo de dados na conta. Há cobranças adicionais por recursos opcionais: retenção de dados estendida (mais que as 24 horas iniciais e dentro dos primeiros 7 dias), retenção de dados de longo período de vigência (mais que 7 dias e até 1 ano) e distribuição avançada. Para obter mais informações sobre os custos do Amazon Kinesis Data Streams, consulte Definição de preço do Amazon Kinesis Data Streams.

P: Como funciona a definição de preço do Amazon Kinesis Data Streams no modo provisionado?

No modo de capacidade provisionada, você especifica o número de fragmentos necessários para sua aplicação com base na taxa de solicitações de gravação e leitura. Um fragmento é uma unidade de capacidade que fornece uma taxa de transferência de 1 MB/segundo para gravações e 2 MB/segundo para leituras. Para cada fragmento, é cobrada uma taxa por hora. Você também paga por registros gravados em seu fluxo de dados Kinesis. Você inclui custos adicionais quando utiliza recursos opcionais, como retenção estendida e distribuição avançada.

As duas dimensões principais e três dimensões opcionais no modo de provisionamento do Kinesis Data Streams são as seguintes:

  • Custo por hora de fragmentos, determinado pelo número de fragmentos no seu fluxo de dados do Amazon Kinesis.
  • Custo da Unidade de Carga PUT, determinado pelo número de unidades de carga de 25 KB que seus produtores de dados adicionam ao seu stream de dados.

Opcional:

  • A retenção de dados prolongada é um custo opcional determinado pelo número de horas de estilhaços geradas pelo seu stream de dados. Quando a retenção de dados prolongada estiver ativada, você pagará a taxa de retenção prolongada para cada estilhaço do stream.
  • A retenção de dados de longo período de vigência é um custo opcional com duas dimensões de custo: armazenamento de dados de longo período de vigência e recuperação de dados de longo período de vigência. O armazenamento de dados de longo período de vigência reflete o número de GB/meses de dados armazenados por um período superior a 7 dias e até 365 dias. A recuperação de dados de longo período de vigência reflete o número de GBs de dados recuperados que foram armazenados por mais de 7 dias.
  • A distribuição avançada é um custo opcional com duas dimensões de custo: horas de consumidor-fragmento e recuperações de dados. As horas de consumidor-estilhaço refletem a quantidade de estilhaços em um stream multiplicada pela quantidade de consumidores usando a distribuição aprimorada. As recuperações de dados são determinadas pela quantidade de GBs entregues aos consumidores usando a distribuição avançada.

Para obter mais informações sobre os custos do Amazon Kinesis Data Streams, consulte Definição de preço do Amazon Kinesis Data Streams.

P: Como é calculada uma hora de consumidor-fragmento para o uso da distribuição avançada no modo provisionado?

A hora consumidor-fragmento é calculada pela multiplicação do número de consumidores de fluxo registrados pelo número de fragmentos no fluxo. Você pagará somente pela porção pro rata da hora em que o consumidor estava registrado para usar a distribuição avançada. Por exemplo, se uma hora consumidor-fragmento custar USD 0,015 para um fluxo de dados de 10 fragmentos, esse consumidor poderá ler 10 fragmentos usando a distribuição avançada e, portanto, incluirá a cobrança de 0,15 USD por hora (1 consumidor * 10 fragmentos * 0,015 USD por hora consumidor-fragmento). Se houver dois consumidores registrados para a distribuição avançada simultaneamente, a cobrança total da hora consumidor-fragmento será 0,30 USD por hora (2 consumidores * 10 fragmentos * 0,015 USD).

Comparação com outros serviços da AWS

P: Como o Amazon Kinesis Data Streams se diferencia do Amazon SQS?

Os streams de dados do Amazon Kinesis permitem processamento de streaming de big data em tempo real. Ele oferece classificação de registros, bem como a capacidade de ler e/ou reproduzir registros na mesma ordem para várias aplicações do Amazon Kinesis. O Amazon Kinesis Client Library (KCL) fornece todos os registros de uma determinada chave de partição para o mesmo processador de registros, facilitando a construção de várias aplicações de leitura do mesmo fluxo de dados do Amazon Kinesis (por exemplo, para contar, agregar ou filtrar). O Amazon Simple Queue Service (SQS) oferece uma fila hospedada altamente escalável e confiável para o armazenamento de mensagens em trânsito entre computadores. O Amazon SQS permite mover dados facilmente entre componentes de aplicação distribuídos e ajuda a construir aplicações nos quais as mensagens são processadas de forma independente (com semântica de confirmação/falha no nível da mensagem), como fluxos de trabalho automatizados.

P: Quando devo usar o Amazon Kinesis Data Streams, e quando devo usar o Amazon SQS?

Recomendamos o Amazon Kinesis Data Streams para casos de uso com requisitos semelhantes a:

Roteamento de registros relacionados para o mesmo processador de registros (como na transmissão do MapReduce). Por exemplo, contagem e agregação são mais simples quando todos os registros para uma determinada chave são encaminhados para o mesmo processador de registro.

Classificação de registros. Por exemplo, você quer transferir dados de log do host da aplicação para o host de processamento/arquivamento enquanto mantém a ordem das declarações de log.

Capacidade de vários aplicativos consumirem o mesmo stream simultaneamente. Por exemplo, você tem uma aplicação que atualiza um painel em tempo real e outro que arquiva dados no Amazon Redshift. Você quer que as duas aplicações consumam dados do mesmo fluxo de forma simultânea e independente.

Capacidade de consumir registros na mesma ordem algumas horas depois. Por exemplo, você tem uma aplicação de faturamento e uma aplicação de auditoria que é executada algumas horas depois da aplicação de faturamento. O Kinesis Data Streams armazena dados por até 365 dias, você pode executar a aplicação de auditoria até 365 dias depois da aplicação de faturamento.

Recomendamos o Amazon SQS para casos de uso com requisitos semelhantes a:

Semântica de sistema de mensagens (como confirmação/falha em nível de mensagem) e tempo de espera de visibilidade. Por exemplo, você tem uma fila de itens de trabalho e quer monitorar a conclusão com êxito de cada item de forma independente. O Amazon SQS monitora a confirmação/falha, para que a aplicação não precise manter um ponto de verificação/cursor persistente. O Amazon SQS excluirá as mensagens de confirmação e enviará novamente mensagens de falha depois de um tempo limite de visibilidade configurado.

Atraso de mensagem individual. Por exemplo, você tem uma fila de trabalhos e precisa programar trabalhos individuais com um atraso. Com o Amazon SQS, você pode configurar mensagens individuais para atrasarem até 15 minutos.

Aumento dinâmico da simultaneidade/taxa de transferência em tempo de leitura. Por exemplo, você tem uma fila de trabalho e quer adicionar mais leitores até que o backlog seja eliminado. Com o Amazon Kinesis Data Streams, é possível aumentar a escala na vertical até um número suficiente de fragmentos (observe, no entanto, que você precisará provisionar fragmentos suficientes com antecedência).

Use a capacidade do Amazon SQS de escalar de forma transparente. Por exemplo, seu buffer solicita e a carga muda como resultado de picos de carga ocasionais ou do crescimento natural de suas atividades. Como cada solicitação armazenada em buffer pode ser processada independentemente, o Amazon SQS pode escalar de forma transparente para tratar a carga sem provisionar instruções de você.

Saiba mais sobre a definição de preço do Amazon Kinesis Data Streams

Acesse a página de definição de preço
Pronto para começar?
Cadastrar-se
Tem outras dúvidas?
Entre em contato conosco