Amazon DVA-C02: Messaging, Streaming & Event-driven architecturen (SNS, SQS, Kinesis, EventBridge, Step Functions) — Studiegids

Onderdeel van de AWS Developer Associate DVA-C02 — Studiegids. Oefen met geverifieerde antwoorden in het Amazon-examencentrum, of doe getimede oefentests op ExamRoll.io.

De juiste messaging- en streaming-primitive kiezen

De keuze tussen SNS, SQS (standard vs FIFO), Kinesis, EventBridge en Step Functions begint bij het communicatiepatroon: pub/sub, point-to-point, geordende streaming, event bus-routing of workflow-orkestratie. SNS is een fan-out pub/sub-publisher; gebruik Publish (SDK-call: Publish/PublishBatch) en abonneer SQS-endpoints, Lambda, HTTP/S of mobiele endpoints. SQS is een duurzame point-to-point buffer met ReceiveMessage/DeleteMessage-semantiek; maak queues aan met CreateQueue en attributen zoals VisibilityTimeout, ReceiveMessageWaitTimeSeconds (long polling), MessageRetentionPeriod en redrive policies die naar een DLQ verwijzen. FIFO-queues vereisen FifoQueue=true en gebruiken MessageGroupId plus MessageDeduplicationId (of ContentBasedDeduplication) voor ordening en deduplicatie. Kinesis Data Streams is geordende, op shards gebaseerde streaming; producers roepen PutRecord/PutRecords aan en consumers gebruiken GetShardIterator (TRIM_HORIZON, LATEST, AT_SEQUENCE_NUMBER) en vervolgens GetRecords. Kinesis Firehose beheert de aflevering naar S3/Redshift/OpenSearch en biedt BufferingHints (SizeInMBs, IntervalInSeconds) en Lambda-transformaties. EventBridge routeert events met PutEvents en op regels gebaseerde filtering, en ondersteunt een schema registry en cross-account buses. Step Functions orkestreert complexe flows; StartExecution (Standard) of StartSyncExecution voor synchrone Express-patronen, met Task-integraties zoals arn:aws:states:::lambda:invoke. Overweeg deze afwegingen wanneer throughput, ordening, aflevergaranties, retentie en orkestratiebehoeften met elkaar in conflict zijn.

SQS- en SNS-patronen, deduplicatie en schalen van consumers

Wanneer je duurzame ontkoppeling nodig hebt, is SQS de aangewezen keuze; implementeer SendMessage/SendMessageBatch voor producers en gebruik ReceiveMessage met WaitTimeSeconds om long polling in te schakelen en het aantal lege ontvangsten te verminderen. Voor strikte ordening en deduplicatie, maak een FIFO-queue aan met CreateQueue (FifoQueue=true) en stel een MessageGroupId in voor geordende partities; gebruik MessageDeduplicationId of schakel ContentBasedDeduplication in zodat identieke payloads binnen het deduplicatievenster worden onderdrukt. Standard queues kunnen duplicaten afleveren — maak consumers daarom idempotent via conditionele schrijfacties naar de database (DynamoDB PutItem met ConditionExpression attribute_not_exists(pk)) of via unique constraints en upserts binnen transacties in RDS. Configureer redrive policies om falende berichten na maxReceiveCount naar een DLQ te routeren; monitor ApproximateNumberOfMessages en ApproximateNumberOfMessagesNotVisible via GetQueueAttributes. Lambda-integraties gebruiken CreateEventSourceMapping voor SQS: stel BatchSize en MaximumBatchingWindowInSeconds in, en schakel FunctionResponseTypes = [“ReportBatchItemFailures”] in om semantiek voor gedeeltelijke batch-responses te gebruiken en herverwerking van succesvolle records te voorkomen. Let op de semantiek van FIFO Lambda: de ordening van message groups dwingt single-threaded verwerking per MessageGroupId af, wat de concurrency per groep beperkt; schaal op door te partitioneren in veel group ID’s of door parallelle consumers te gebruiken met SNS naar meerdere queues. Houd ook rekening met de visibility timeout: stel ChangeMessageVisibility in wanneer de verwerking langer duurt, anders riskeer je dubbele verwerking.

Kinesis Data Streams en Firehose: ordening, retentie en omgaan met back-pressure

Kinesis Data Streams bieden ordening per shard en duurzame retentie voor streaming use cases. Producers roepen PutRecord of PutRecords (batch) aan met een PartitionKey die naar een shard mapt; consumers roepen GetShardIterator en GetRecords aan en slaan vervolgens de offsets op (checkpointing) met behulp van de KCL (Kinesis Client Library) of een custom DynamoDB-tabel voor checkpoints. De standaardretentie is 24 uur (aanpasbaar naar langere periodes via de stream-configuratie, en met ’extended retention’-features waar beschikbaar); plan het aantal shards met UpdateShardCount om aan te sluiten bij de write throughput en de parallelliteit van de readers. Het schalen van consumers is beperkt: een enkele Lambda event source mapping koppelt één shard aan één Lambda concurrency. Verhoog dus het aantal shards om de consumer concurrency te verhogen, of schakel enhanced fan-out in om elke consumer zijn eigen 2 MB/sec pipe en onafhankelijke schaling te geven via de SubscribeToShard API (consumer-registratie). Gebruik PutRecords voor efficiënte batching; back-pressure ontstaat wanneer consumers achterlopen (monitor GetRecords.IteratorAgeMilliseconds). Om pieken op te vangen, buffer je op Kinesis of plaats je er een SQS-queue voor, gebruik je producer-retries met exponential backoff en pas je stream-level encryptie toe met KMS voor PII. Kinesis Data Firehose vereenvoudigt de aflevering: configureer BufferingHints (SizeInMBs, IntervalInSeconds), CompressionFormat en een Lambda-datatransformatie. Firehose handelt retries/backoff naar bestemmingen af en kan mislukte records wegschrijven naar een back-up S3-bucket. Een veelvoorkomende valkuil is het onderprovisioneren van shards: consumers krijgen geen data (starvation) en de latency piekt; meet en schaal proactief.

EventBridge en Step Functions voor routering en orkestratie

EventBridge blinkt uit in schemagestuurde event-routering en integraties over accounts en met event-partners heen, door

undefined

te gebruiken om events te injecteren en

undefined

/

undefined

om te routeren naar SQS, Lambda, Kinesis, Step Functions of HTTP-eindpunten. EventBridge gebruikt event-patronen voor filtering en ondersteunt archivering en replay om de staat opnieuw op te bouwen. Gebruik dead-letter queues voor rules (Target met

undefined

of

undefined

) en wees je ervan bewust dat EventBridge retries met exponentiële backoff biedt, gevolgd door een DLQ bij een fout. Kies voor orkestratie Step Functions: Standard state machines voor langlopende, duurzame workflows met een uitvoeringsgeschiedenis en ingebouwde retries/Catch, en Express voor kortstondige workflows met hoge doorvoersnelheid, lagere kosten en best-effort uitvoering. Gebruik Task-integraties met service-integraties (

undefined

of

undefined

) en callback-patronen met “waitForTaskToken” om asynchrone externe goedkeuringen te implementeren. Implementeer retries en Catch met exponentiële backoff en gebruik

undefined

voor langdurige taken. Gebruik de Map state om grote collecties te parallelliseren, maar let op concurrency en downstream throttles. Een veelvoorkomende valkuil is het kiezen van Express voor workflows die een exact-once, duurzame geschiedenis vereisen — kies Standard voor auditeerbaarheid. Zorg ook voor idempotentie in taken die door Step Functions worden aangeroepen door een idempotentie-token mee te geven en de doelservices uniciteit te laten afdwingen op het moment van schrijven.

Praktijkprobleem: Gebruiksscenario

Scenario: StreamlyGames beheert een wereldwijde gaming-backend in een AWS-omgeving met meerdere accounts. Spelers uploaden gameplay-clips van 10 MB naar S3; een verwerkingspipeline moet video’s transcoderen, ML-analyses uitvoeren en de resultaten wegschrijven naar Aurora Serverless met een geordende, gededupliceerde verwerking en schaalbare consumers.

Uitdaging: Zorg ervoor dat elk geüpload bestand een exact-once verwerking triggert in de juiste volgorde per speler, verwerk pieken zonder events te verliezen en schaal consumers voor ML-inferentie terwijl dubbele schrijfacties naar de database worden voorkomen.

Aanbevolen Aanpak:

  1. Maak een S3 event-notificatie aan om object-created events te publiceren naar een EventBridge custom bus (

undefined

) en ook naar een SQS FIFO-wachtrij (

undefined

met

undefined

) met

undefined

als

undefined

en een

undefined

gebaseerd op de S3 ETag. 2. Configureer een Lambda-consumer met een SQS event source mapping (

undefined

) met

undefined

,

undefined

, en stel

undefined

in op een waarde hoger dan de maximale verwerkingstijd; gebruik

undefined

bij het aanroepen van ML-API’s van derden. 3. Lambda voert idempotente schrijfacties naar de database uit naar Aurora met een deterministische idempotentiesleutel (

undefined

of een unique constraint) en checkpoint de voortgang; gebruik voor langdurige ML-aanroepen asynchrone Step Functions met task-tokens (

undefined

) of Step Functions Express voor hoge doorvoersnelheid. 4. Om de inferentie te schalen, schrijf tussentijdse events naar Kinesis Data Streams per shard per regio voor consumers met hoge doorvoersnelheid en schakel enhanced fan-out consumers (

undefined

) in voor toegewijde ML-worker-vloten; monitor

undefined

en

undefined

om te schalen.

Redenering: Gebruik SQS FIFO om de volgorde per speler en deduplicatie bij inname te garanderen, idempotente schrijfacties naar de database om exact-once semantiek af te dwingen, en Kinesis plus enhanced fan-out of Step Functions om piekbelaste ML-verwerking met hoge doorvoersnelheid aan te kunnen, terwijl de consumers ontkoppeld en schaalbaar blijven.


Databases · Alle domeinen

Oefen deze vragen → · Getimede oefening op ExamRoll.io →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Slaag voor je examen →

Blader door Amazon →

Related guides

Alles-in-één toegang

Eén abonnement. Elk examen.

Elk plan ontgrendelt onbeperkt zoeken naar antwoorden, oefentests, AI-uitleg en de volledige bronnenbibliotheek — in meer dan 20 talen.

Maandelijks
24.87
Just €0.83/day
Alles inbegrepen:
  • Onbeperkt zoeken naar antwoorden
  • Onbeperkte oefentests
  • AI-gestuurde uitleg
  • Volledige bronnenbibliotheek
  • 20+ talen
  • Wekelijkse contentupdates
  • Beloningen & verwijzingen
  • Prioriteitsondersteuning
Start gratis proefperiode

Geen creditcard vereist*

Beste waarde
12 maanden
179.87
Just €0.49/daySave 40%
Alles inbegrepen:
  • Onbeperkt zoeken naar antwoorden
  • Onbeperkte oefentests
  • AI-gestuurde uitleg
  • Volledige bronnenbibliotheek
  • 20+ talen
  • Wekelijkse contentupdates
  • Beloningen & verwijzingen
  • Prioriteitsondersteuning
Start gratis proefperiode

Geen creditcard vereist*

✓ Gratis plan inbegrepen · ✓ Annuleer op elk moment · ✓ Alle plannen ontgrendelen het volledige product