Cloud & IT Cert Prep · Lektion

Kinesis Streams, Firehose och realtidsanalys

Läs in strömmande data med Kinesis Data Streams, leverera dem till S3 eller Redshift med Firehose och analysera dem i realtid med Managed Service for Apache Flink.

Lektion 4 av 413 steg

Kinesis Streams, Firehose och realtidsanalys är en gratis lektion i Cloud & IT Cert Prep på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cloud & IT Cert Prep, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.

Översikt över Kinesis-familjen

Amazon Kinesis är en familj av tjänster för insamling, bearbetning och analys av dataströmmar i realtid. De tre centrala tjänsterna är: Kinesis Data Streams (bearbetning med låg fördröjning och full anpassningsmöjlighet), Kinesis Data Firehose (fullt hanterad leverans till S3/Redshift/OpenSearch) samt Managed Service for Apache Flink (tidigare Kinesis Data Analytics) för realtids-SQL och Flink-bearbetning. Varje tjänst riktar sig mot en annan del av strömningsprocessen.

Arkitektur för Kinesis Data Streams

En Kinesis Data Stream är en beständig, ordnad logg som är uppdelad i shards. Varje shard tillhandahåller en skrivkapacitet på 1 MB/s och en läskapacitet på 2 MB/s. Dataregister sparas i 24 timmar som standard (kan utökas till 7 dagar eller 365 dagar). Producenter skriver register till en ström; konsumenter — Lambda, KCL-applikationer, Firehose eller Flink — läser från en eller flera shards parallellt. Register kan inte ändras efter att de har skrivits.

# Create a Kinesis Data Stream with 4 shards
aws kinesis create-stream \
  --stream-name clickstream \
  --shard-count 4

# Put a record into the stream
aws kinesis put-record \
  --stream-name clickstream \
  --partition-key 'user-123' \
  --data 'eyJldmVudCI6ICJjbGljayJ9'

Shards, kapacitet och skalning

Antalet shards avgör strömmens totala kapacitet. Du kan dela en shard för att fördubbla kapaciteten eller slå samman två shards för att minska kostnaden. Använd Enhanced Fan-Out för att ge varje registrerad konsument en egen läskapacitet på 2 MB/s, oberoende av andra konsumenter. Då undviker du läsbegränsningar när flera applikationer använder samma ström. Övervaka GetRecords.IteratorAgeMilliseconds för att upptäcka fördröjningar hos konsumenter.

# Split shard to increase throughput
aws kinesis split-shard \
  --stream-name clickstream \
  --shard-to-split shardId-000000000001 \
  --new-starting-hash-key 170141183460469231731687303715884105728

# Register an enhanced fan-out consumer
aws kinesis register-stream-consumer \
  --stream-arn arn:aws:kinesis:us-east-1:123456789012:stream/clickstream \
  --consumer-name analytics-app

Kinesis Data Firehose: hanterad leverans

Kinesis Data Firehose är en fullt hanterad tjänst som samlar in, transformerar och levererar dataströmmar till destinationer som S3, Amazon Redshift, Amazon OpenSearch Service, Splunk och HTTP-slutpunkter. Det finns inga shards att hantera — Firehose skalar automatiskt. Du konfigurerar en buffertstorlek (1–128 MB) och ett buffertintervall (60–900 sekunder); Firehose levererar när någon av gränserna nås först.

# Create a Firehose delivery stream to S3
aws firehose create-delivery-stream \
  --delivery-stream-name clickstream-to-s3 \
  --s3-destination-configuration '{
    "RoleARN": "arn:aws:iam::123456789012:role/FirehoseRole",
    "BucketARN": "arn:aws:s3:::my-data-lake-123",
    "Prefix": "landing/clickstream/year=!{timestamp:yyyy}/month=!{timestamp:MM}/",
    "BufferingHints": {"SizeInMBs": 64, "IntervalInSeconds": 300},
    "CompressionFormat": "GZIP"
  }'

Datatransformering i Firehose med Lambda

Firehose kan anropa en Lambda-funktion för varje batch av register före leveransen, så att data kan transformeras, berikas eller filtreras under överföringen. Vanliga användningsområden är att konvertera JSON till Parquet (via Glue-schemat), maskera PII-fält eller ta bort händelser med lågt värde. Register där transformeringen misslyckas kan valfritt skickas till ett separat S3-felprefix för ombearbetning, så att inga data går förlorade.

# Lambda transform function signature for Firehose
def lambda_handler(event, context):
    output = []
    for record in event['records']:
        import base64, json
        payload = json.loads(base64.b64decode(record['data']))
        # Drop events with no user_id
        if not payload.get('user_id'):
            output.append({'recordId': record['recordId'], 'result': 'Dropped', 'data': record['data']})
        else:
            output.append({'recordId': record['recordId'], 'result': 'Ok', 'data': record['data']})
    return {'records': output}

Managed Service for Apache Flink

Amazon Managed Service for Apache Flink (tidigare Kinesis Data Analytics) kör Apache Flink-applikationer på fullt hanterad infrastruktur. Använd tjänsten för tillståndsbaserad realtidsanalys: aggregeringar över glidande fönster, avvikelsedetektering, mönstermatchning i händelsesekvenser och join-operationer mellan strömmande data och referenstabeller. Du skriver Flink-kod i Java, Python eller Scala, medan Flink hanterar kontrollpunkter och tillstånd med exakt en gång.

# Flink SQL-style tumbling window (conceptual)
# Count page views per URL every 5 minutes
CREATE TABLE clickstream (
  url STRING,
  event_time TIMESTAMP(3),
  WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
) WITH ('connector' = 'kinesis', 'stream' = 'clickstream', ...);

SELECT
  url,
  COUNT(*) AS views,
  TUMBLE_START(event_time, INTERVAL '5' MINUTE) AS window_start
FROM clickstream
GROUP BY url, TUMBLE(event_time, INTERVAL '5' MINUTE);

Välj mellan Streams och Firehose

Inför SAA-C03-provet behöver du känna till urvalskriterierna. Använd Kinesis Data Streams när du behöver svarstid under en sekund, flera samtidiga konsumenter eller anpassad bearbetningslogik med full kontroll över lagring och återuppspelning. Använd Firehose när du bara behöver leverera dataströmmar på ett tillförlitligt sätt till S3, Redshift eller OpenSearch, med minimal kod, valfri transformering under överföringen och automatisk skalning, men med högre fördröjning (minst 60 sekunder).

Kinesis eller SQS: det klassiska provvalet

En vanlig SAA-C03-fråga ber dig välja mellan Kinesis och SQS. Viktiga skillnader: Kinesis bevarar meddelandeordningen inom en shard, stöder flera konsumenter som läser samma data samtidigt och sparar register för återuppspelning. SQS tar bort meddelanden efter att de har konsumerats (ingen återuppspelning), FIFO-läget garanterar strikt ordning och tjänsten passar bättre för frikoppling av mikrotjänster. Om scenariot nämner realtidsanalys eller återuppspelning väljer du Kinesis.

Kinesis-producenter: SDK och KPL

Kinesis Producer Library (KPL) är en klient med hög kapacitet för skrivning till Kinesis Data Streams från applikationer. KPL aggregerar automatiskt flera små register i ett enda API-anrop (upp till 1 MB) och hanterar nya försök med exponentiell backoff. Detta minskar kostnaden per PUT-anrop avsevärt och ökar kapaciteten per shard. Använd KPL för producenter med stora datamängder, till exempel webbplatsers klickströmmar, IoT-sensorer eller loggpipelines.

# Basic KPL usage (Java pseudocode, no backticks)
KinesisProducer producer = new KinesisProducer();
byte[] data = 'hello world'.getBytes();
ByteBuffer buf = ByteBuffer.wrap(data);
// addUserRecord handles aggregation and retry internally
ListenableFuture future = producer.addUserRecord('clickstream', 'partitionKey', buf);
Futures.addCallback(future, new FutureCallback() { ... });

Mönstret Firehose till Redshift

En vanlig arkitektur är att använda Firehose som en hanterad pipeline från Kinesis-strömmar eller direkta producenter till Amazon Redshift för datalagring och analys. Firehose skriver först data till en mellanliggande S3-stagingbucket och utfärdar sedan ett COPY-kommando för att läsa in data i Redshift. Detta är det mest effektiva sättet att massladda strömmande data i Redshift — direkta rad-för-rad-inlägg i Redshift skulle vara extremt långsamma på grund av kostnaden för varje enskild rad.

# Firehose Redshift destination (CLI snippet)
--redshift-destination-configuration '{
  "RoleARN": "arn:aws:iam::123456789012:role/FirehoseRole",
  "ClusterJDBCURL": "jdbc:redshift://cluster.xyz.us-east-1.redshift.amazonaws.com:5439/sales",
  "CopyCommand": {
    "DataTableName": "clickevents",
    "CopyOptions": "JSON 'auto'"
  },
  "Username": "firehose_user",
  "Password": "{{resolve:secretsmanager:redshift-pw}}",
  "S3Configuration": {
    "RoleARN": "...",
    "BucketARN": "arn:aws:s3:::firehose-staging"
  }
}'

Övervaka Kinesis med CloudWatch

Viktiga CloudWatch-mätvärden för Kinesis är: IncomingBytes och IncomingRecords för att mäta producenternas kapacitet, GetRecords.IteratorAgeMilliseconds för att mäta konsumenternas fördröjning (ett högt värde betyder att konsumenterna inte hinner med) samt WriteProvisionedThroughputExceeded för att upptäcka när producenter når shard-gränserna. Konfigurera CloudWatch-larm för iteratorålder och överskriden provisionerad kapacitet, så att automatisk skalning av shards utlöses via Application Auto Scaling.

# CloudWatch alarm on high consumer lag
aws cloudwatch put-metric-alarm \
  --alarm-name kinesis-high-lag \
  --metric-name GetRecords.IteratorAgeMilliseconds \
  --namespace AWS/Kinesis \
  --dimensions Name=StreamName,Value=clickstream \
  --statistic Maximum \
  --period 60 \
  --threshold 60000 \
  --comparison-operator GreaterThanThreshold \
  --evaluation-periods 3 \
  --alarm-actions arn:aws:sns:us-east-1:123456789012:ops-alerts

Snabbtest

Testa dina kunskaper om AWS Solutions Architect-koncepten (SAA-C03) från den här lektionen.

Sammanfattning av lektionen

I den här lektionen har du lärt dig att: Kinesis Data Streams tillhandahåller beständig, ordnad och shard-baserad strömning med stöd för flera konsumenter och återuppspelning, Kinesis Data Firehose erbjuder fullt hanterad leverans utan kod till S3, Redshift och OpenSearch samt att Managed Service for Apache Flink möjliggör tillståndsbaserad realtidsanalys av strömmar. Härnäst utforskar vi molnmigreringsstrategins 7 R.

Gratis att börja

Lär dig Cloud & IT Cert Prep med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
150
Lektioner
600

Vanliga frågor

Är lektionen ”Kinesis Streams, Firehose och realtidsanalys” gratis?

Ja – hela texten till ”Kinesis Streams, Firehose och realtidsanalys” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cloud & IT Cert Prep, kan Ni uppgradera till CoddyKit PRO. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.

Vad lär jag mig i ”Kinesis Streams, Firehose och realtidsanalys”?

Läs in strömmande data med Kinesis Data Streams, leverera dem till S3 eller Redshift med Firehose och analysera dem i realtid med Managed Service for Apache Flink. Ni övar på Cloud & IT Cert Prep med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cloud & IT Cert Prep?

Du behöver inga förkunskaper. Utbildningen i Cloud & IT Cert Prep på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Kinesis Streams, Firehose och realtidsanalys”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cloud & IT Cert Prep-lektionen?

Ja. Varje Cloud & IT Cert Prep-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Bygg en datasjö på S3
  2. AWS Glue: ETL och datakatalog
  3. Amazon Athena: Serverlös SQL på S3
  4. Kinesis Streams, Firehose och realtidsanalys
← Tillbaka till Cloud & IT Cert Prep