Amazon SOA-C02: Serverless en Applicatie-integratie — Studiegids
Onderdeel van de AWS SysOps Administrator Associate SOA-C02 — Studiegids. Oefen met geverifieerde antwoorden in het Amazon-examencentrum, of doe getimede oefentests op ExamRoll.io.
Serverless en applicatie-integratie omvat het uitvoeren van event-driven applicaties zonder servers te beheren en het betrouwbaar verbinden van services. Het operationele belang ligt in het beheren van schaal, latency, faalscenario’s en least-privilege toegang, terwijl de kosten voorspelbaar blijven. Dit domein richt zich op het gedrag van Lambda (cold starts, concurrency), betrouwbare levering van events (EventBridge, SNS, SQS), beveiligingsmaatregelen (execution roles en permissies), en observability voor asynchrone flows.
Operationele aspecten en concurrency van AWS Lambda
De prestaties en beschikbaarheid van Lambda zijn afhankelijk van cold starts, concurrency-limieten en throttling-controles. Cold starts treden op wanneer Lambda een nieuwe execution environment moet initialiseren; verminder de impact door provisioned concurrency te gebruiken (
undefined
) voor latency-kritieke paden, en geef de voorkeur aan lichtere runtimes of minder initialisatiewerk. Reserveer en beperk concurrency met reserved concurrency (
undefined
) om downstream services te beschermen en quota per functie af te dwingen; monitor de CloudWatch-metrics ConcurrentExecutions en Throttles.
Retry- en invocation-modellen verschillen per modus: synchrone aanroepen (API Gateway, directe Invoke) retourneren fouten onmiddellijk; asynchrone aanroepen (EventBridge, SNS, S3 async notifications) gebruiken het asynchrone retry-beleid van Lambda (twee retries met backoff) en kunnen DLQ’s of destinations gebruiken. Voor event source mappings (SQS, Kinesis, DynamoDB streams) probeert de poller van Lambda het opnieuw totdat het bericht verloopt of het redrive-beleid van de event source een dead-letter activeert. Configureer timeout en geheugen conservatief (
undefined
) en stel de SQS visibility timeout in op > function timeout (aanbevolen: visibility >= function timeout * 2) om dubbele verwerking te verminderen.
Event-driven architecturen met EventBridge
EventBridge biedt een beheerde event bus met flexibele routing, een schema registry, cross-account levering en retry/DLQ-instellingen. Gebruik custom event buses voor domeinscheiding en partner event buses voor SaaS-integraties; maak rules aan met patterns (
undefined
) en koppel targets met een dead-letter- en retry-configuratie (de targets JSON ondersteunt DeadLetterConfig en RetryPolicy). Gebruik de schema registry om de structuur van events te ontdekken en af te dwingen; registreer schema’s wanneer producers goed gedefinieerd zijn, en gebruik Code Bindings om waar nuttig getypeerde modellen te genereren.
Kies EventBridge wanneer je het volgende nodig hebt:
- Complexe routing en filtering met rijke event patterns of cross-account/event-bus-isolatie
- Native ondersteuning voor meerdere targets (Lambda, Step Functions, Kinesis, SQS, SNS)
- Schema discovery en governance over teams heen
Kies direct voor SNS/SQS wanneer je eenvoudigere fan-out of gegarandeerde queue-semantiek nodig hebt:
- SNS voor fan-out naar veel subscribers en push-semantiek
- SQS voor duurzame, pull-based verwerking met visibility timeout en redrive-beleid
Messaging met SNS en SQS (DLQ’s, visibility timeout)
SNS is een pub/sub push-service; SQS is een duurzame queue met pull-semantiek. Voor zeer betrouwbare verwerking, geef de voorkeur aan SNS -> SQS -> Lambda-patronen om de opname (ingestion) los te koppelen van de verwerking en controle te krijgen over retries en visibility. Configureer het SQS redrive-beleid (
undefined
) om berichten naar een DLQ te verplaatsen na maxReceiveCount, en zorg ervoor dat de visibility timeout lang genoeg is om voortijdige herlevering te voorkomen (aanbevolen: visibility >= function timeout * 2). Voor FIFO-behoeften, gebruik SQS FIFO of SNS FIFO met message group ID’s om de volgorde te bewaren en deduplication ID’s om duplicaten te voorkomen.
Opties voor de afhandeling van dead-letters en waar ze te gebruiken:
- Asynchrone Lambda-aanroepen: configureer DeadLetterConfig of Destinations (AsyncEventInvokeConfig) om mislukte aanroepen naar SQS/SNS te sturen of een andere Lambda aan te roepen.
- SQS: configureer een redrive-beleid naar een SQS DLQ voor ‘poison messages’ en stel een geschikte maxReceiveCount in.
- EventBridge: stel DeadLetterConfig en RetryPolicy in op rule targets om onbestelbare events op te vangen.
Idempotentie is essentieel: implementeer idempotente handlers met behulp van conditionele schrijfacties in DynamoDB (PutItem met ConditionExpression attribute_not_exists(pk)), idempotency-tokens die met een TTL worden opgeslagen, of SQS FIFO-deduplicatie voor exactly-once semantiek.
Functiepermissies, rollen en least privilege
Pas het principe van least privilege toe op Lambda execution roles en resource-beleid van functies. Begin met AWSLambdaBasicExecutionRole voor CloudWatch Logs, en ken vervolgens expliciete resource-ARN’s toe voor services (bijv. dynamodb:PutItem op arn:aws:dynamodb:region:acct:table/MyTable). Vermijd wildcards zoals Resource: “*” wanneer specifieke ARN’s mogelijk zijn. Gebruik managed of custom policies die gespecificeerd zijn per actie en resource, en voeg conditions (aws:SourceAccount, aws:SourceArn) toe bij het toevoegen van invoke-permissies voor services:
- Voeg invoke-permissie toe voor EventBridge:
undefined
- Voor SNS: gebruik de source-arn-conditie om te beperken welk topic de functie kan aanroepen
Beslissingscriteria:
- Gebruik resource-based policies van de functie om service-aanroepen toe te staan (EventBridge, SNS, CloudWatch Events)
- Gebruik een IAM execution role voor runtime-permissies (DynamoDB, S3, Secrets Manager)
- Geef de voorkeur aan permissies op resource-niveau en conditionele beperkingen om de ‘blast radius’ te verkleinen
Observeerbaarheid en troubleshooting voor serverless
Observeerbaarheid moet metrics, logs, traces en de status van asynchrone levering omvatten. Belangrijke CloudWatch-metrics: Invocations, Duration, Errors, Throttles, ConcurrentExecutions, IteratorAge (voor stream- en SQS-triggers). Voor inzicht in asynchrone fouten, monitor de “AsyncEventInvoke”-metrics en stel CloudWatch Alarms in op DeadLetterErrors en Throttles. Activeer X-Ray tracing (aws lambda update-function-configuration –function-name MyFn –tracing-config Mode=Active) om end-to-end traces over services heen te krijgen en cold-starts, downstream latencies en exceptions te visualiseren.
Gebruik gestructureerde JSON-logs en CloudWatch Logs Insights-query’s om snel foutpatronen te vinden; instrumenteer idempotency-controles en leg correlation ID’s vast in de logs. Voor distributed tracing, propageer trace ID’s expliciet in event payloads voor EventBridge/SNS-flows als de automatische context verloren gaat. Voor SQS event-source mappings, monitor ApproximateAgeOfOldestMessage en stel alarmen in als deze waarde groeit, wat duidt op tegendruk (backpressure) of throttling. Vang de Lambda Throttles-metric af en alarmeer hierop, en volg de afwegingen tussen het gebruik en de kosten van provisioned concurrency.
Veelvoorkomende valkuilen en beslissingscriteria
- Geen DLQ’s configureren of alleen vertrouwen op standaard retries: configureer DLQ’s of Destinations voor asynchrone Lambda’s en SQS redrive voor queues om ‘poison messages’ op te vangen voor handmatige inspectie.
- Onjuiste visibility timeout op SQS die leidt tot dubbele verwerking: stel de visibility timeout in op >= function timeout * 2 en houd rekening met retries en downstream-aanroepen om duplicaten te voorkomen.
- Te ruime Lambda execution roles: vermijd Resource: “*” en voeg service/source-condities (aws:SourceArn, aws:SourceAccount) toe aan invocation- en resource-policies.
- Concurrency-limieten negeren wat throttling veroorzaakt: gebruik reserved concurrency om functies te limiteren, provisioned concurrency voor latency-gevoelige functies, en monitor ConcurrentExecutions/Throttles.
- Ontbrekende tracing over asynchrone grenzen heen: voeg correlation ID’s toe aan events en activeer X-Ray of propageer trace headers om flows te reconstrueren.
- SNS direct-naar-Lambda verkeerd gebruiken voor duurzaamheidsvereisten: geef de voorkeur aan SNS->SQS->Lambda wanneer je duurzame buffering, controle over zichtbaarheid en eenvoudiger DLQ-beheer nodig hebt.
Praktijkprobleem: Use-Case Scenario
AcmePayments ontvangt een hoog volume aan betalingsevents via EventBridge en ervaart periodiek Lambda-throttling en dubbele verwerking tijdens piekuren. Ze hebben betrouwbare verwerking nodig, geen dataverlies en een begrensde downstream-belasting op DynamoDB.
- Maak een EventBridge custom bus en een rule aan die overeenkomt met betalingsevents; voeg een SQS FIFO-queue toe als een duurzaam target met DeadLetterConfig en RetryPolicy in de target-configuratie.
- Configureer Lambda om de SQS-queue te pollen (event source mapping) met een batch size die is afgestemd op de downstream-capaciteit en een visibility timeout die is ingesteld op >= function timeout * 2.
- Reserveer concurrency voor de Lambda (aws lambda put-function-concurrency …) om pieken in schrijfacties naar DynamoDB te beperken; implementeer provisioned concurrency voor een kleine pool als lage latency vereist is.
- Implementeer idempotency met behulp van DynamoDB conditional writes, met de payment-id als key, en sla idempotency-records op met een TTL om ze op te ruimen.
- Activeer X-Ray tracing en gestructureerde logs met een correlation ID in het event om de verwerking te traceren; stel CloudWatch-alarmen in op ApproximateAgeOfOldestMessage, Throttles en DLQ-metrics.
Rationale: Het ontkoppelen van EventBridge naar SQS zorgt voor duurzame buffering en retry-semantiek; reserved concurrency beschermt de downstream DynamoDB tegen pieken, idempotency voorkomt duplicaten, en tracing/alarmen bieden operationeel inzicht in faalscenario’s.
← Databases en Caching · Alle domeinen · Kostenbeheer en Resource Tagging →
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 →