Domande frequenti su Amazon Kinesis Data Streams

Domande generali

Flusso di dati Amazon Kinesis consente di creare applicazioni personalizzate per elaborare o analizzare lo streaming dei dati per esigenze specialistiche. Puoi aggiungere a un flusso di dati Kinesis diversi tipi di dati provenienti da centinaia di migliaia di origini, ad esempio clickstream, registri di applicazioni e social media. In pochi secondi, i dati potranno essere letti ed elaborati dalle applicazioni.

Il flusso di dati Kinesis gestisce infrastruttura, archiviazione, rete e configurazione necessari per trasmettere i dati al livello della velocità di trasmissione effettiva. Non è necessario occuparsi personalmente di provisioning, implementazione, manutenzione di hardware o software oppure di altri servizi relativi ai flussi di dati. Inoltre, Kinesis Data Streams replica in modo sincrono i dati su tre zone di disponibilità, garantendo così disponibilità e durabilità dei dati elevate. Di default, Kinesis Data Streams dimensiona automaticamente la capacità, liberandoti dal provisioning e dalla gestione della capacità. Puoi scegliere la modalità di assegnazione se vuoi assegnare e gestire la velocità di trasmissione effettiva autonomamente.

Il flusso di dati Kinesis è ideale per trasferire rapidamente dati dai loro produttori e poi elaborarli in modo continuo, sia che si tratti di trasformarli prima di trasmetterli a un archivio dati, di eseguire analisi e parametri in tempo reale o ricavare flussi di dati più complessi per ulteriori elaborazioni.

Di seguito sono elencati alcuni scenari comuni per utilizzare Amazon Kinesis Data Streams:

  • Alimentazione di feed di dati e registri accelerata: invece di attendere la creazione di batch dei dati, i produttori possono inoltrare i dati in un flusso di dati Kinesis appena i dati vengono prodotti, così da prevenire perdite di dati in caso di errori dei produttori. Ad esempio è possibile aggiungere in modo continuo a un flusso di dati registri di applicazioni e di sistema, rendendoli disponibili in pochi secondi.
  • Report e parametri in tempo reale: è possibile estrarre parametri e generare report dai dati di un flusso di dati Kinesis in tempo reale. Ad esempio, l'applicazione Amazon Kinesis può elaborare parametri e report per i registri dell'applicazione e di sistema mentre i dati sono in entrata, invece di attendere batch di dati.
  • Analisi in tempo reale: con i flussi di dati Amazon Kinesis, è possibile eseguire analisi dei dati in streaming in tempo reale. Ad esempio, è possibile aggiungere clickstream al flusso di dati Kinesis e configurare l'applicazione Kinesis in modo che li analizzi in tempo reale, consentendo di ottenere informazioni dettagliate in pochi minuti invece che in diverse ore o giorni.
  • Raccolta di dati di registri ed eventi: raccogli dati relativi a eventi e registri da varie origini, ad esempio server, desktop e dispositivi mobili. Creando quindi applicazioni con Amazon Lambda o il servizio gestito da Amazon per Apache Flink, sarà possibile elaborare in modo continuo questi dati, generare parametri, alimentare pannelli di controllo in tempo reale e inviare dati aggregati per la memorizzazione, ad esempio in Amazon Simple Storage Service (Amazon S3).
  • Applicazioni alimentate dagli eventi: si accoppia rapidamente con AWS Lambda per rispondere o adattarsi alle occorrenze istantanee all'interno delle applicazioni basate su eventi del tuo ambiente, su qualsiasi scala.

Dopo essersi registrati con AWS, puoi iniziare a utilizzare un flusso di dati Kinesis creando un flusso dei dati Kinesis tramite la Console di gestione AWS o l'operazione CreateStream. Poi configura i produttori di dati in modo per aggiungere continuamente dati al tuo flusso di dati. Hai la possibilità di inviare i dati provenienti da risorse esistenti nei servizi AWS come Amazon DynamoDB, Amazon Aurora, Amazon CloudWatch e AWS IoT Core. Puoi quindi utilizzare AWS Lambda, il servizio gestito da Amazon per Apache Flink o AWS Glue Streaming per elaborare velocemente i dati archiviati nel flusso di dati Kinesis. Puoi anche costruire applicazioni personalizzate che si eseguono su Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS) e Amazon Elastic Kubernetes Service (Amazon EKS) utilizzando l’API Amazon Kinesis o Amazon Kinesis Client Library (KCL).

Concetti chiave

Una partizione ha una sequenza di registri di dati in una trasmissione. È un'unità di misura della velocità effettiva di un flusso di dati Kinesis. Una partizione supporta 1MB/secondo e 1.000 registri al secondo per le scritture e 2MB/secondo per le letture. I limiti delle partizioni garantiscono prestazioni prevedibili, facilitando la progettazione e l'esecuzione di un flusso di lavoro di streaming dei dati estremamente affidabile. Un produttore inserisce i registri dei dati nelle partizioni e un consumatore ottiene i registri dei dati dalle partizioni. I consumatori usano le partizioni per l'elaborazione parallela dei dati e per il consumo dei dati nell'ordine esatto in cui sono archiviati. Se le scritture e le letture superano i limiti della partizione, le applicazioni del produttore e del consumatore riceveranno limitazioni, che possono essere gestite tramite nuovi tentativi.

Il record è l'unità di dati memorizzati in un flusso di dati di Amazon Kinesis. Un record è composto da un numero di sequenza, una chiave di partizione e un blob di dati. Un blob di dati rappresenta i dati di interesse che il produttore di dati aggiunge un flusso. Le dimensioni massime di un blob di dati (il payload di dati prima della codifica con in Base64) è di 1 megabyte (MB).

Una chiave di partizione viene usata per isolare e instradare i registri di dati nelle diverse partizioni di un flusso di dati. La chiave di partizione viene specificata dal produttore di dati al momento dell'aggiunta di dati nel flusso di dati Kinesis. Ad esempio, poniamo di avere un flusso di dati con due partizioni (partizione 1 e partizione 2). È possibile configurare il produttore di dati con due chiavi di partizione (chiave A e chiave B), in modo che tutti i record con la chiave A vengono aggiunti alla partizione 1 e quelli con la chiave B vengono aggiunti alla partizione 2.

Il numero di sequenza è un identificatore univoco dei registri. Il numero di sequenza viene assegnato da Amazon Kinesis quando un produttore di dati richiama le operazioni PutRecord o PutRecords per aggiungere dati in un flusso di dati di Amazon Kinesis. I numeri di sequenza per la stessa chiave di partizione in genere diventano più grandi con il passare del tempo; più lungo è l'intervallo di tempo tra le richieste PutRecord o PutRecords, più elevati diventano i numeri di sequenza.

La modalità di capacità di Kinesis Data Streams determina il modo in cui la capacità viene gestita e come viene addebitato l'utilizzo di un flusso dei dati. Puoi scegliere fra la modalità provisioning oppure on demand. Nella modalità provisioning devi specificare il numero di partizioni per il flusso dei dati. La capacità totale di un flusso dei dati è la somma delle capacità delle sue partizioni. Puoi aumentare o diminuire il numero di partizioni in un flusso dei dati secondo necessità, e pagherai per il numero di partizioni in base a una tariffa oraria. Nella modalità on demand AWS gestisce le partizioni per fornire la velocità effettiva necessaria. Paghi solo per la velocità effettiva utilizzata, e Kinesis Data Streams accoglie automaticamente le necessità di velocità effettiva del tuo carico di lavoro in caso di aumento o diminuzione. Tutte le API di scrittura e lettura di Kinesis Data Streams, insieme alle caratteristiche opzionali come Extended Retention e Enhanced Fan-Out, sono supportate in entrambe le modalità di capacità.

La modalità on demand è più indicata per i carichi di lavoro con pattern di traffico imprevedibili e altamente variabili. Dovresti usare questa modalità se preferisci che sia AWS a gestire la capacità al tuo posto o preferisci pagare in base all'utilizzo della velocità effettiva. La modalità provisioning è più indicata per il traffico prevedibile, dove i requisiti di capacità sono facile da prevedere. Dovresti considerare la possibilità di utilizzare la modalità assegnato se desideri avere un controllo minuzioso sulla modalità di distribuzione dei dati sulle partizioni. La modalità provisioning è indicata anche se vuoi assegnare ulteriori partizioni in modo che l'applicazione che le consuma possa avere più velocità effettiva di lettura per accelerare l'elaborazione complessiva.

Sì. Puoi passare dalla modalità on demand alla modalità provisioning due volte al giorno. Il conteggio della partizione dei tuoi flussi dei dati rimane lo stesso quando passi dalla modalità provisioning alla modalità on demand e viceversa. Con il passaggio dalla modalità capacità provisioning alla modalità on demand, il tuo flusso dei dati mantiene il medesimo conteggio della partizione che aveva prima della transizione. Ma da quel momento in poi, Kinesis Data Streams monitorerà il traffico dei tuoi dati e dimensionerà il conteggio della partizione di questo flusso dei dati on demand verso l'alto o verso il basso, a seconda dell'aumento e della diminuzione del traffico.

Aggiunta di dati al flusso di dati Kinesis

È possibile aggiungere dati a un flusso di dati di Amazon Kinesis con le operazioni PutRecord e PutRecords, Amazon Kinesis Producer Library (KPL) oppure Amazon Kinesis Agent.

L'operazione PutRecord consente un solo registro di dati all'interno di una chiamata API, mentre l'operazione PutRecords consente più registri di dati all'interno di una chiamata API. Per ulteriori informazioni, consulta PutRecord e PutRecords.

KPL è una libreria configurabile e semplice da utilizzare che semplifica l'invio di dati in un flusso di dati Amazon Kinesis. KPL offre un'interfaccia semplice, affidabile e asincrona che consente di raggiungere velocità di trasmissione effettive elevate con una quantità limitata di risorse client.

Amazon Kinesis Agent è un'applicazione Java predefinita che offre un modo semplice per raccogliere e inviare dati in un flusso di dati di Amazon Kinesis. È possibile installare l'agente su ambienti server basati su Linux quali server Web, server di registri e server di database. L'agente monitora determinati file e invia in modo continuo dati nel flusso di dati. Per ulteriori informazioni, consulta Scrivere con gli agenti.

I parametri necessari per una chiamata PutRecord o PutRecords sono il blob di dati, la chiave di partizione e il nome del flusso di dati. Le dimensioni del blob di dati (prima della codifica Base64) e della chiave di partizione influenzano negativamente la velocità effettiva del flusso di dati di Amazon Kinesis, determinato dal numero di partizioni nel flusso di dati.

Lettura ed elaborazione dei dati provenienti dal flusso di dati Kinesis

Un consumatore è un'applicazione che elabora tutti i dati da un flusso dei dati Kinesis. Puoi scegliere tra le tipologie di consumatore fan-out condiviso e fan-out avanzato per leggere i dati da un flusso dei dati Kinesis. I consumatori di fan-out condiviso condividono tutti 2MB/secondo di partizione di lettura effettiva e limiti di cinque transazioni al secondo e richiedono l'utilizzo dell'API GetRecords. Un consumatore di fan-out avanzato ottiene 2 MB/secondo di velocità effettiva di lettura, consentendo a più utenti di leggere i dati dallo stesso flusso in parallelo, senza contendersi la velocità effettiva con altri consumatori. Devi utilizzare l'API SubscribeToShard con i consumatori di fan-out avanzato. Ti consigliamo di utilizzare il fan-out avanzato con i consumatori se vuoi aggiungere più di un consumatore al tuo flusso dei dati.

Puoi utilizzare servizi gestiti come AWS Lambda, il servizio gestito da Amazon per Apache Flink o AWS Glue per elaborare i dati archiviati nel flusso di dati Kinesis. Questi servizi gestiti si occupano del provisioning e della gestione dell'infrastruttura sottostante, così potrai concentrarti sulla scrittura della tua logica di business. Puoi anche inviare dati archiviati nei flussi di dati Kinesis ad Amazon S3, Amazon OpenSearch Service, Amazon Redshift ed endpoint HTTP personalizzati, usando l'integrazione predefinita con Kinesis Data Firehose. Puoi anche costruire applicazioni personalizzate usando Amazon Kinesis Client Library, una libreria predefinita, oppure l'API di Amazon Kinesis Data Streams.

KCL per Java, Python, Ruby, Node.js e .NET è una libreria preconfigurata che semplifica la creazione di applicazioni Amazon Kinesis per la lettura e l'elaborazione di dati provenienti da un flusso di dati di Amazon Kinesis.

KCL gestisce problemi complessi quali l'adattamento alle variazioni di volume del flusso di dati, il bilanciamento del carico dei dati in streaming, la coordinazione di servizi distribuiti e l'elaborazione di dati con tolleranza ai guasti. KCL consente di concentrare l'attenzione sulla logica di business durante la creazione di applicazioni. Consulta la documentazione sui flussi di dati Kinesis qui per ulteriori dettagli su KCL.

L'API SubscribeToShard è un'API di streaming che spinge i dati dalle partizioni ai consumatori attraverso una connessione persistente senza un ciclo di richiesta dal client. L'API SubscribeToShard utilizza il protocollo HTTP/2 per distribuire dati a consumatori registrati quando i dati arrivano alla partizione, normalmente in 70 millisecondi, offrendo così una distribuzione del 65% più veloce rispetto all'API GetRecords. I consumatori potranno così approfittare di consegne più veloci anche con più consumatori registrati in lettura dalla stessa partizione.

Il fan-out avanzato è una caratteristica opzionale per i consumatori di Kinesis Data Streams che fornisce pipe della velocità effettiva logiche da 2 MB al secondo tra consumatori e partizioni. Questo ti permette ai clienti di dimensionare il numero di consumatori leggendo da un flusso di dati in parallelo, mantenendo al contempo prestazioni elevate.

È bene utilizzare il fan-out avanzato se si hanno, o ci si aspetta di avere, più consumatori che richiamano i dati da un flusso in parallelo, o almeno un consumatore che necessità l'API SubscribeToShard per fornire velocità di distribuzione dei dati sub-200 millisecondi tra produttori e consumatori.

I consumatori utilizzano il fan-out avanzato richiamando i dati con l'API SubscribeToShard. Il nome del consumatore registrato viene utilizzato nell'API SubscribeToShard, in questo modo il consumatore potrà sfruttare il vantaggio del fan-out avanzato assegnatogli.

Sì. Si, è possibile permettere a più consumatori di utilizzare il fan-out avanzato e ad alcuni no utilizzando il fan-out avanzato nello stesso momento. L'utilizzo del fan-out avanzato non ha effetto sui limiti di partizioni per l'utilizzo tradizionale di GetRecords.

Sì. Si, per utilizzare SubscribeToShard è necessario registrare i propri consumatori, la registrazione attiva il fan-out avanzato. Il consumatore utilizzerà per impostazione predefinita il fan-out avanzato, automaticamente quando i dati vengono recuperati tramite SubscribeToShard.

Modalità on demand

Un nuovo flusso dei dati creato in modalità on demand ha una quota di 4MB/secondo e 4.000 registri al secondo per scrittura. Di default, questi flussi aumentano automaticamente a 200 MB/secondo e di 200.000 registri al secondo per scrittura.

Un flusso dei dati in modalità on demand accoglie fino al doppio del suo picco precedente della velocità effettiva di scrittura riscontrato negli ultimi 30 giorni. Mentre la velocità effettiva di scrittura del tuo flusso dei dati raggiunge un nuovo picco, Kinesis Data Streams dimensiona la capacità del flusso automaticamente. Per esempio, se il tuo flusso dei dati ha una velocità effettiva di scrittura che varia fra 10 MB/secondo e 40 MB/secondo, Kinesis Data Streams ti garantirà di potere raddoppiare il picco della velocità effettiva di 80MB/secondo. Di conseguenza, se lo stesso flusso dei dati sostiene un nuovo picco della velocità effettiva pari a 50 MB/secondo, Data Streams garantirà che ci sia abbastanza capacità per importare 100 MB/secondo della velocità effettiva di scrittura. Tuttavia, vedrai le eccezioni "ProvisionedThroughputExceeded" se il tuo traffico cresce più del doppio rispetto al picco precedente in una finestra di 15 minuti. Devi ritentare con queste richieste.

La capacità di lettura aggregata della modalità on demand aumenta proporzionalmente alla velocità effettiva di scrittura per garantire che le applicazioni del consumatore abbiano sempre una velocità effettiva di lettura per elaborare i dati in entrata in tempo reale. Otterrai almeno il doppio della velocità effettiva di scrittura per leggere i dati usando l'API GetRecords. Ti consigliamo di utilizzare un consumatore con l'API GetRecord in modo che abbia abbastanza spazio per l'aggiornamento quando l'applicazione dovrà ripristinarsi dall'inattività. Per aggiungere più di un'applicazione, dovrai utilizzare il fan-out avanzato, che supporta l'aggiunta fino a 20 consumatori a un flusso dei dati tramite l'API SubscribeToShard, ognuna con una velocità effettiva dedicata.

Modalità provisioning

la velocità effettiva di un flusso di dati di Amazon Kinesis si ridimensiona senza alcun limite utilizzando un numero variabile di partizioni all'interno di un flusso.

Puoi aumentare la capacità di un flusso di dati Kinesis in modalità provisioning dividendo le partizioni esistenti tramite l'API SplitShard. Puoi ridurre la capacità unendo due partizioni tramite l'API MergeShard. In alternativa, puoi usare l'API UpdateShardCount per aumentare (o diminuire) la capacità di trasmissione a una partizione specifica.

La velocità effettiva di un flusso di dati Kinesis è determinato dal numero di partizioni nel flusso di dati. Segui le istruzioni indicate in basso per calcolare il numero iniziale di partizioni con cui configurare il flusso di dati in modalità provisioning. che è possibile regolare dinamicamente il numero di partizioni all'interno di un flusso di dati tramite il ripartizionamento.

Calcola le dimensioni medie dei record scritti nel flusso di dati kilobyte (KB), arrotondate per eccesso a incrementi di 1 KB (average_data_size_in_KB)

Effettua una stima del numero di record al secondo scritti nel flusso di dati. (number_of_records_per_second)

Scegli quante applicazioni Amazon Kinesis acquisiscono in modo simultaneo e indipendente dati dal flusso. (number_of_consumers)

Calcola la larghezza di banda in scrittura in entrata in KB (incoming_write_bandwidth_in_KB) moltiplicando average_data_size_in_KB per number_of_records_per_seconds.

Calcola la larghezza di banda in lettura in uscita in KB (outgoing_read_bandwidth_in_KB) moltiplicando la incoming_write_bandwidth_in_KB per il number_of_consumers.

In seguito puoi calcolare il numero iniziale di partizioni (number_of_shards) di cui ha bisogno il tuo flusso di dati utilizzando la seguente formula: number_of_shards = max (incoming_write_bandwidth_in_KB/1000, outgoing_read_bandwidth_in_KB/2000)

La velocità effettiva di un flusso di dati di Amazon Kinesis può ridimensionarsi senza alcun limite. La quota di partizione predefinita è 500 partizioni per flusso per le seguenti regioni AWS: Stati Uniti orientali (Virginia settentrionale), Stati Uniti occidentali (Oregon) ed Europa (Irlanda). Per tutte le altre regioni, la quota di partizione predefinita è di 200 partizioni per flusso. Puoi richiedere l'incremento della quota di partizione con la console AWS Service Quotas.

Nella modalità provisioning, i limiti di capacità di un flusso di dati di Amazon Kinesis sono definiti dal numero di partizioni nel flusso di dati. Questi limiti possono essere superati in base una velocità effettiva dei dati o numero di registri PUT. Quando i limiti di capacità vengono superati, le chiamate di immissione dati verranno rifiutate con un'eccezione ProvisionedThroughputExceeded. Se la causa è un aumento temporaneo della velocità di input dei dati del flusso, le richieste verranno completate in seguito ai nuovi tentativi del produttore di dati. Se la causa è un aumento prolungato della velocità di input dei dati del flusso, occorrerà aumentare il numero di partizioni nel flusso di dati per garantire capacità sufficiente per il completamento delle chiamate di immissione dati. In entrambi i casi, i parametri di Amazon CloudWatch consentono di monitorare il variare della velocità di input dei dati del flusso e la comparsa di eccezioni ProvisionedThroughputExceeded.

Nella modalità provisioning, i limiti di capacità di un flusso di dati di Amazon Kinesis sono definiti dal numero di partizioni nel flusso di dati. Questi limiti possono essere superati in base una velocità effettiva dei dati o chiamate di lettura dei dati. Quando i limiti di capacità vengono superati, le chiamate di lettura dati verranno rifiutate con un'eccezione ProvisionedThroughputExceeded. Se la causa è un aumento temporaneo della velocità di output dei dati del flusso di dati, le richieste verranno completate in seguito ai nuovi tentativi dell'applicazione Amazon Kinesis. Se la causa è un aumento prolungato della velocità di output dei dati del flusso, occorrerà aumentare il numero di partizioni nel flusso di dati per garantire capacità sufficiente per il completamento delle chiamate di lettura dei dati. In entrambi i casi, i parametri di Amazon CloudWatch consentono di monitorare il variare della velocità di output dei dati del flusso e la comparsa di eccezioni ProvisionedThroughputExceeded.

Conservazione dei dati estesa e a lungo termine

Il periodo di conservazione predefinito di 24 ore copre scenari in cui i ritardi intermittenti nell'elaborazione costringono a un recupero rispetto ai dati in tempo reale. Una conservazione di sette giorni ti consente di rielaborare i dati fino a un massimo di sette giorni per risolvere potenziali perdite di dati a valle. La conservazione dei dati a lungo termine per più di sette giorni e fino a 365 giorni ti consente di rielaborare i dati precedenti per i casi d'uso come il back-testing di algoritmi, le compilazioni gli archivi dei dati e la verifica.

Sì. Puoi utilizzare le stesse API getShardIterator, GetRecords e SubscribeToShard per leggere i dati conservati per più di sette giorni. Gli utenti possono spostare l'iteratore nella posizione desiderata nel flusso, recuperare la mappa delle partizioni (sia aperta che chiusa) e leggere i record.

Sì. Esistono dei miglioramenti delle API per le API ListShards, GetRecords e SubscribeToShard. Puoi utilizzare la nuova opzione di filtro con il parametro TimeStamp disponibile nell'API ListShards per recuperare in modo efficiente la mappa delle partizioni e migliorare le prestazioni di lettura dei dati obsoleti. Il filtro TimeStamp di ListShards consente alle applicazioni di individuare ed enumerare le partizioni a partire dal momento in cui desideri rielaborare i dati ed eliminare l'esigenza di iniziare all'orizzonte trim. GetRecords e SubscribeToShards hanno un nuovo campo, ChildShards che ti consente di individuare rapidamente tutte le partizioni secondarie quando un applicazione termina la lettura dei dati da una partizione chiusa anziché dover attraversare di nuovo la mappa delle partizioni. L'individuazione rapida delle partizioni fa un uso efficiente delle risorse di calcolo dell'applicazione in uso per flussi di qualsiasi dimensione, a prescindere dal periodo di conservazione dei dati.

Puoi utilizzare questi miglioramenti API se hai in programma di conservare i dati più a lungo e di dimensionare regolarmente la capacità del tuo flusso. Le operazioni di dimensionamento del flusso chiudono le partizioni esistenti e aprono nuove partizioni secondarie. I dati in tutte le ripartizioni aperte e chiuse vengono conservati fino alla fine del periodo di conservazione. Pertanto il numero totale di partizioni aumenta in progressione lineare con un periodo di conservazione più lungo e più operazioni di dimensionamento. Questo incremento nella mappa delle partizioni ti richiede l'uso di ListShards con il filtro TimeStamp e del campo ChildShards nelle API GetRecords e SubscribeToShard per un'individuazione efficiente di partizioni per il recupero dati. Per poter disporre di queste funzionalità, dovrai aggiornare KCL alla versione più recente (1.x per utenti standard e 2.x per utenti fan-out avanzato).

Sì. I client del flusso di dati Kinesis possono utilizzare il registro degli schemi di AWS Glue (una funzionalità serverless di AWS Glue) tramite KPL e KCL oppure tramite le API del registro degli schemi di AWS Glue nell'SDK Java di AWS. Il registro degli schemi è disponibile senza costi aggiuntivi. 

Consulta la documentazione per l'utente del registro di Schema per le nozioni di base e ulteriori informazioni.

Gestione di flussi di dati Kinesis

Esistono due modi per modificare la velocità effettiva di un flusso di dati. Puoi usare l'API UpdateShardCount o la Console di gestione AWS per ridimensionare il numero di partizioni in un flusso di dati, oppure modificare la velocità effettiva di un flusso di dati di Amazon Kinesis cambiando il numero di partizioni nel flusso (operazione chiamata ripartizionamento).

Le richieste di ridimensionamento risorse impiegano in genere alcuni minuti. Le richieste di maggiori dimensioni richiedono una quantità di tempo leggermente maggiore.

Sì. È possibile continuare ad aggiungere e leggere dati dal flusso di dati Kinesis anche quando è in uso l'API UpdateShardCount o è in corso il ripartizione per modificarne la velocità effettiva oppure quando Kinesis Data Streams lo effettua automaticamente in modalità on demand.

La console di gestione del flusso di dati Amazon Kinesis visualizza parametri operativi e prestazionali chiave, ad esempio la velocità di trasmissione effettiva di dati in entrata e in uscita dei flussi di dati Kinesis. Il flusso di dati Kinesis si integra con Amazon CloudWatch per raccogliere, visionare e analizzare parametri di CloudWatch per i tuoi flussi di dati e per le partizioni all'interno di tali flussi. Per ulteriori informazioni sui parametri del flusso di dati Kinesis, consulta Monitoraggio del flusso di dati Amazon Kinesis con Amazon CloudWatch.

Nota che tutti i parametri a livello di flusso sono gratuiti. Tutti i parametri attivati a livello di partizione sono invece addebitati alla tariffazione di Amazon CloudWatch.

Il flusso di dati Kinesis si integra con AWS Identity and Access Management (IAM), un servizio che consente di controllare gli accessi degli utenti alle risorse e ai servizi AWS. Ad esempio, è possibile creare una policy che consente solo a un utente o a un gruppo di utenti specifico di aggiungere dati in un flusso di dati. Inoltre, è possibile allegare una policy basata sulle risorse al flusso di dati o all'utente registrato per controllare l'accesso a livello di risorsa. Per ulteriori informazioni sulla gestione e il controllo degli accessi al flusso di dati, consulta Controllo degli accessi alle risorse del flusso di dati Amazon Kinesis tramite IAM.

Per condividere l'accesso con un altro account, puoi utilizzare la policy basata sull'assunzione del ruolo o sulle risorse di IAM. Per condividere l'accesso con una funzione AWS Lambda su più account, collega una policy basata sulle risorse al tuo flusso di dati o all'utente per concedere l'accesso al ruolo di esecuzione della funzione Lambda. Scopri di più su Utilizzo di AWS Lambda con Amazon Kinesis.

Kinesis Data Streams si integra con Amazon CloudTrail, un servizio che registra le chiamate API di AWS sull'account e ne inoltra i file di registri. Per ulteriori informazioni sulla registrazione delle chiamate API e per ottenere un elenco delle operazioni API di Amazon Kinesis, consulta Registrazione delle chiamate API di Amazon Kinesis utilizzando Amazon CloudTrail.

Kinesis Data Streams consente di contrassegnare con dei tag i flussi di dati Kinesis per facilitare la gestione dei costi e delle risorse. Un tag è un'etichetta personalizzata in forma di coppia chiave-valore che semplifica l'organizzazione delle risorse AWS. Ad esempio, puoi applicare un tag ai flussi di dati per i centri di costo in modo da suddividerli in categorie e monitorare i costi del flusso di dati Kinesis in base ai centri di costo. Per ulteriori informazioni sul tagging del flusso di dati Amazon Kinesis, consulta Tagging del flusso di dati Amazon Kinesis.

Sicurezza

Amazon Kinesis è un servizio protetto di default. Solo i proprietari dell'account e del flusso di dati possono accedere alle risorse Kinesis create. Kinesis è provvisto di funzionalità di autenticazione per controllare l'accesso ai dati. È possibile utilizzare le policy di IAM per fornire in modo selettivo le autorizzazioni a utenti o gruppi di utenti. Inoltre, è possibile impiegare il protocollo HTTPS per inoltrare e ricevere dati da Kinesis tramite endpoint SSL. Se occorrono ulteriori livelli di sicurezza, è possibile impiegare la crittografia lato server e utilizzare le chiavi del Servizio di gestione delle chiavi AWS (AWS KMS) per crittografare i dati contenuti nei flussi di dati. AWS KMS permette di utilizzare le chiavi KMS generate per la crittografia oppure di importare le proprie chiavi KMS su AWS KMS. Infine, è possibile utilizzare librerie di crittografia personalizzate lato client prima di caricare i dati in Kinesis.

Sì. È possibile accedere privatamente alle API di Kinesis Data Streams da Amazon VPC creando degli endpoint VPC. Grazie agli endpoint VPC, il routing tra il cloud privato virtuale e Kinesis Data Streams viene gestito dalla rete AWS senza chiamare in causa gateway Internet, gateway NAT o connessioni VPN. La generazione più recente di endpoint VPC utilizzata dal flusso di dati Kinesis è basata su AWS PrivateLink, una tecnologia che permette connessioni private tra servizi AWS con interfacce di rete elastiche (ENI) e IP privati nei VPC. Per ulteriori informazioni su PrivateLink, consulta la relativa documentazione.

Crittografia

Sì, e sono disponibili due opzioni. È possibile impiegare una crittografia lato server, una caratteristica completamente gestita che permette di crittografare e decrittografare i dati mentre vengono inoltrati o estratti dal flusso di dati. In alternativa è possibile scrivere i dati crittografati in un flusso di dati applicando la crittografia lato client.

Potresti scegliere la crittografia lato server rispetto alla crittografia lato client per uno dei seguenti motivi:

  • Applicare la crittografia lato client è più difficile.
  • Desiderano un secondo livello di sicurezza oltre alla crittografia lato client.
  • Gli schemi di gestione delle chiavi lato client sono complessi da implementare.

La crittografia lato server per Kinesis Data Streams crittografa automaticamente i dati utilizzando una chiave specifica di AWS KMS prima che vengano scritti nel livello di storage del flusso di dati, decrittografandoli quando vengono ripristinati. La crittografia impedisce la scrittura e la lettura di payload e di chiave di partizione finché l'utente che desidera eseguire una di queste operazioni non ottiene un'autorizzazione a utilizzare la chiave selezionata per la crittografia del flusso di dati. Di conseguenza, la crittografia lato server può semplificare la soddisfazione dei requisiti di conformità e di sicurezza interni.

Con la crittografia lato server, le applicazioni lato client (produttori e consumatori) non necessitano di alcuna impostazione di crittografia né devono gestire chiavi KMS oppure operazioni di crittografia; i dati sono crittografati sia quando sono inattivi sia quando sono in transito, grazie al servizio Kinesis Data Streams. Tutte le chiavi KMS utilizzate dalla caratteristica di crittografia lato server sono fornite da AWS KMS. AWS KMS semplifica l'utilizzo di chiavi KMS gestite da AWS per Kinesis (un metodo che permette di applicare la crittografia con un semplice clic), chiavi AWS KMS personali oppure chiavi KMS importate per la crittografia.

Sì, c'è una guida introduttiva disponibile nella documentazione del utente.

È possibile. Dipende dalla chiave utilizzata per la crittografia e dalle autorizzazioni che governano l'accesso alla chiave.

  • Se usi la chiave KMS gestita da AWS (alias chiave = aws/kinesis) le applicazioni non saranno influenzate dall'attivazione o dalla disattivazione della crittografia.
  • Se invece usi una chiave KMS differente, ad esempio una chiave personalizzata di AWS KMS oppure una importata nello stesso servizio, e se produttore e consumatore di un flusso di dati non ottengono le autorizzazioni a impiegare la chiave KMS usata per la crittografia, le richieste PUT e GET non andranno a buon fine. Prima di poter utilizzare la crittografia lato server, è necessario configurare le policy per le chiavi AWS KMS in modo che siano consentite crittografia e decrittografia dei messaggi. Per esempi e approfondimenti sulle autorizzazioni di AWS KMS, consulta la sezione AWS KMS API Permissions: Actions and Resources Reference nel documento AWS Key Management Service Developer Guide oppure le linee guida sulle autorizzazioni nella documentazione per l'utente sulla crittografia lato server Kinesis Data Streams.

Sì; tuttavia, se utilizzi una chiave KMS gestita da AWS per Kinesis e non superi il costo previsto dell'utilizzo dell'API della KMS del Piano gratuito di AWS, potrai utilizzare la crittografia lato server senza alcun costo. Di seguito sono descritti i costi delle risorse:

Chiavi:

La chiave KMS gestita da AWS per Kinesis (alias = "aws/kinesis") è gratuita.
Le chiavi di KMS gestite dall'utente sono soggette ai costi di KMS. Ulteriori informazioni.

Utilizzo dell'API KMS:

I costi di utilizzo dell'API si applicano per ogni chiave KMS, incluse quelle personalizzate. Kinesis Data Streams richiama KMS ogni cinque minuti circa, quando è impostata la rotazione della chiave dati. In un mese di 30 giorni, il costo totale delle chiamate API KMS avviate da un flusso di dati Kinesis è di qualche dollaro. Questi costi ovviamente aumentano di pari passo con il numero di credenziali utente utilizzate per produttore o consumatore di dati, perché ogni singola credenziale utente richiede una chiamata API univoca ad AWS KMS. Quando utilizzi ruoli IAM per l'autenticazione, ogni chiamata assume-role-call darà vita a credenziali utente univoche; potrebbe essere utile memorizzare nella cache tali credenziali per risparmiare sui costi di KMS.

La crittografia lato server del flusso di dati Kinesis è disponibile nella Regione AWS GovCloud e in tutte le Regioni pubbliche tranne la Regione Cina (Pechino).

Per eseguire queste operazioni è necessario utilizzare la Console di gestione AWS o l’SDK AWS. Per ulteriori informazioni, consulta la Guida all'utilizzo della crittografia lato server del flusso di dati Kinesis.

Kinesis Data Streams usa l'algoritmo AES-GCM a 256 bit per la crittografia.

No, solo i nuovi dati scritti nel flusso di dati saranno crittografati (o lasciati senza crittografia) in caso di nuova applicazione della crittografia.

La crittografia lato server viene applicata al payload del messaggio e alla chiave di partizione, specificata dalle applicazioni producer del flusso di dati.

La crittografia lato server è una caratteristica specifica del flusso.

Sì, è possibile utilizzare la Console di gestione AWS o l’SDK AWS per scegliere una nuova chiave KMS da applicare a un flusso di dati specifico.

No. Il flusso di dati Kinesis non è attualmente disponibile nel piano gratuito AWS. Il piano gratuito di AWS è un programma che offre prove gratuite per una serie di servizi AWS. Per ulteriori dettagli sul Piano gratuito di AWS, consulta il Piano gratuito AWS.

Contratto sul livello di servizio (SLA)

Lo SLA del flusso di dati Kinesis garantisce una percentuale di tempo di attività mensile di almeno il 99,9% per il flusso di dati Kinesis.

Hai diritto a un credito di assistenza SLA per il flusso di dati Kinesis, secondo lo SLA del flusso di dati Kinesis, se più di una zona di disponibilità in cui stai eseguendo un'attività, all'interno della stessa regione ha una percentuale di tempo di attività mensile inferiore al 99,9% durante un qualsiasi ciclo di fatturazione mensile.

Per dettagli completi sui termini e le condizioni del contratto sul livello di servizio e per indicazioni sulla presentazione di una richiesta, consulta la pagina dei dettagli relativa allo SLA del flusso di dati Amazon Kinesis.

Prezzi e fatturazione

Il flusso di dati Kinesis consente il pagamento in base al consumo. Non sono previsti pagamenti anticipati o tariffe minime, paghi solo le risorse che usi. Il flusso di dati Kinesis ha due modalità di capacità, on demand e con provisioning, entrambe con opzioni di fatturazione specifiche.

Con la modalità capacità on demand non è necessario che specifichi in anticipo la velocità effettiva di lettura e scrittura che prevedi che la tua applicazione eseguirà. In questa modalità, il prezzo si basa sul volume di dati importati e recuperati oltre a una tariffa oraria calcolata su ogni flusso dei dati nel tuo account. Le caratteristiche opzionali richiedono tariffe aggiuntive: conservazione dei dati estesa (oltre le prime 24 ore ed entro i primi sette giorni), conservazione dei dati a lungo termine (oltre sette giorni e fino a un anno), e fan-out avanzato. Per ulteriori informazioni sui costi di Kinesis Data Streams, consulta la pagina dei prezzi di Amazon Kinesis Data Streams.

Con la modalità capacità provisioning, specifichi il numero di partizioni necessarie per la tua applicazione in base al tasso di scrittura e lettura richiesto. Una partizione è un'unità di capacità che prevede 1 MB/secondo di scrittura e 2 MB/secondo di lettura. Ogni partizione viene fatturata secondo una tariffa oraria. Inoltre pagherai per i registri scritti nel tuo flusso dei dati Kinesis. Ti vengono addebitati costi aggiuntivi quando utilizzi le caratteristiche opzionali come Extended retention e Enhanced Fan-Out.

I prezzi di Kinesis Data Streams in modalità provisioning si basano su due fattori base e tre fattori opzionali.

  • Il costo orario delle partizioni è determinato dal numero di partizioni all'interno di un flusso di dati di Amazon Kinesis.
  • Il costo delle unità di payload PUT è determinato dal numero di unità di payload da 25 KB aggiunte dai produttori di dati al flusso.

Facoltativo:

  • Il costo, opzionale, della retention estesa dei dati è determinata dal numero di shard per ora del flusso di dati. Quando viene abilitata la retention estesa dei dati, si paga la tariffa per la retention estesa per ogni shard nel flusso.
  • La conservazione dei dati a lungo termine è un costo opzionale con due fattori di costo: archiviazione di dati a lungo termine e recupero di dati a lungo termine. L'archiviazione di dati a lungo termine rispecchia il numero dei dati per GB/mese archiviati per il periodo superiore a sette giorni fino a 365 giorni. Il recupero di dati a lungo termine rispecchia il numero di GB di dati recuperati che sono stati archiviati per un periodo superiore a sette giorni.
  • Il fan-out avanzato è un costo opzionale con due dimensioni di costo: le ore consumatore-partizione e i recuperi dei dati. Le ore consumer/shard si riferiscono al numero di shard in un flusso moltiplicato per il numero di consumer che utilizzano il fan-out avanzato. I recuperi dei dati sono determinati dal numero di GB distribuiti ai consumatori mediante il fan-out avanzato.

Per ulteriori informazioni sui costi di Kinesis Data Streams, consulta la pagina dei prezzi di Amazon Kinesis Data Streams.

Il costo orario consumatore-partizione viene calcolato moltiplicando il numero dei consumatori registrati di un flusso con il numero delle partizioni presenti. Si, si paga solamente per la porzione ripartita proporzionalmente dell'ora in cui il consumatore è stato registrato per utilizzare il fan-out avanzato. Per esempio, se un'ora consumatore-partizione costa 0,015 USD, per un flusso di dati da 10 partizioni, questo consumatore che utilizza il fan-out avanzato sarebbe in grado di leggere da 10 partizioni e quindi incorrere in un addebito orario di 0,15 USD all'ora (1 consumatore x 10 partizioni x 0,015 USD per ogni ora consumatore-partizione). Se ci fossero due consumatori registrati per il fan-out avanzato simultaneamente, il costo orario totale consumatore-partizione sarebbe di 0,30 USD all'ora (2 consumatori x 10 partizioni x 0,015 USD).

Confronto con altri servizi AWS

Il flusso di dati Kinesis e Amazon MSK sono entrambe piattaforme di streaming di dati popolari che consentono di creare carichi di lavoro di streaming personalizzati che elaborano i dati per esigenze specifiche. Entrambi i servizi sono scalabili, sicuri e ad alta disponibilità. Entrambi possono essere utilizzati per eseguire casi d'uso in streaming come analisi web e log in tempo reale, personalizzazione delle esperienze dei clienti, architetture basate sugli eventi, analisi IoT e rilevamento delle frodi in tempo reale. Quando si sceglie tra i due, è importante considerare il caso d'uso e i requisiti specifici. Ecco alcuni fattori da considerare:

Familiarità

  •  Se non sei esperto delle tecnologie di streaming, usa il flusso di dati Kinesis.
  • Se disponi di applicazioni esistenti in esecuzione su Apache Kafka, usa MSK. MSK dispone di un programma di migrazione Kafka (KMP) esistente e di una guida alla migrazione per semplificare l'esperienza di migrazione.

Preferenza per l'open source

  • Se preferisci utilizzare tecnologie open source, ti consigliamo di utilizzare MSK. Sia MSK che MSK Connect sono completamente compatibili rispettivamente con Apache Kafka e Kafka Connect open source.

Il flusso di dati Kinesis consente l'elaborazione in tempo reale di flussi di big data. Consente l'ordinamento dei registri e offre la possibilità di leggere e/o replicare i registri nello stesso ordine in diverse applicazioni Amazon Kinesis. La Amazon Kinesis Client Library (KCL) distribuisce tutti i registri per una determinata chiave di partizione allo stesso processore, facilitando la creazione di più applicazioni in grado di leggere dallo stesso flusso di dati di Amazon Kinesis (ad esempio, per l'applicazione di conteggi, aggregazioni o filtri). Amazon Simple Queue Service (Amazon SQS) offre un servizio di accodamento in hosting affidabile e altamente scalabile per lo storage di messaggi durante il trasferimento tra più computer. Amazon SQS semplifica il trasferimento di dati tra componenti di applicazioni distribuite e consente di creare applicazioni in cui i messaggi sono elaborati separatamente (con semantica ack/fail a livello di messaggio), ad esempio flussi di lavoro automatizzati.

Consigliamo di usare il flusso di dati Kinesis quando i requisiti del caso d'uso sono simili ai seguenti:

  • Registri relativi al routingi verso lo stesso processore di registri (come in processi MapReduce in streaming). Ad esempio, conteggio e aggregazione sono più semplici quando tutti i record per una determinata chiave sono instradati allo stesso processore di record.
  • Ordinamento di record. Ad esempio, se desideri trasferire i dati di log dall'host dell'applicazione all'host di elaborazione o archiviazione conservando l'ordine delle istruzioni dei log.
  • Utilizzo dello stesso flusso in contemporanea da parte di più applicazioni. Ad esempio, un'applicazione aggiorna in tempo reale un pannello di controllo mentre un'altra archivia i dati in Amazon Redshift. Entrambi i dati devono poter acquisire i dati dallo stesso flusso in modo indipendente e simultaneo.
  • Utilizzo di record nello stesso ordine a distanza di alcune ore. Ad esempio, un'applicazione di verifica che viene eseguita alcune ore dopo un'applicazione di fatturazione. Poiché Kinesis Data Streams conserva fino a 365 giorni i dati, è possibile eseguire l'applicazione di verifica fino a 365 giorni dopo l'applicazione di fatturazione.

Consigliamo di usare Amazon SQS quando i requisiti sono simili ai seguenti:

  • Semantica di messaggi (ad esempio ack/fail a livello di messaggio) e timeout visibilità. Ad esempio, desideri monitorare il completamento di ciascun elemento di una coda di elementi di lavoro in modo indipendente. Lo stato ack/fail viene monitorato da Amazon SQS, così l'applicazione non dovrà mantenere checkpoint o cursori persistenti. Amazon SQS, inoltre, eliminerà i messaggi inviati e inoltrerà nuovamente quelli con errori successivamente a un timeout visibilità.
  • Proroga di singoli messaggi. Ad esempio, devi programmare processi individuali con un ritardo in una coda di processo. Con Amazon SQS, puoi prorogare singoli messaggi fino a 15 minuti.
  • Aumento dinamico di concorrenza/throughput in fase di lettura. Ad esempio, desideri aggiungere più lettori a una coda di lavoro finché non si risolve il backlog. Con Kinesis Data Streams, è possibile aumentare le risorse fino a un numero di partizioni necessario (tuttavia, nota che dovrai eseguire il provisioning un numero sufficiente di partizioni in anticipo).
  • Utilizzo della capacità di Amazon SQS di dimensionare in modo trasparente. Ad esempio, vengono memorizzate nel buffer le richieste e vengono caricate le modifiche in seguito a picchi di carico o alla progressiva crescita aziendale. Poiché ogni richiesta memorizzata nel buffer può essere elaborata in modo indipendente, Amazon SQS è in grado di ricalibrare le risorse in modo trasparente in modo da gestire il carico senza alcun intervento manuale.