Amazon DOP-C02: Containers en Serverless-operaties — Studiegids
Onderdeel van de AWS DevOps Engineer Professional DOP-C02 — Studiegids. Oefen met geverifieerde antwoorden in het Amazon-examencentrum, of doe getimede oefentests op ExamRoll.io.
Overzicht
Containers en serverless veranderen de manier waarop u applicaties op AWS beheert, schaalt en uitbrengt. Dit gedeelte verbindt de operationele basisprincipes van Amazon ECS, AWS Fargate, Amazon EKS, Amazon ECR, AWS Lambda en Amazon API Gateway, zodat u veilige implementaties kunt ontwerpen, image governance kunt afdwingen, concurrency kunt afstemmen en consistente keuzes kunt maken tussen op EC2 en Fargate gebaseerde capaciteit. Het richt zich op modellen voor taak- en pod-scheduling, statuscontroles en implementatiecontroles, traffic shifting, cross-account distributie van images en prestatiefuncties zoals API-caching en Lambda provisioned concurrency.
Amazon ECS en AWS Fargate
ECS-taakdefinities declareren een of meer containers en alle runtime-configuratie die de scheduler nodig heeft. Belangrijke elementen zijn onder meer CPU/geheugen-reserveringen en -limieten, portMappings, omgevingsvariabelen en secrets (vanuit AWS Secrets Manager of Systems Manager Parameter Store), Linux-parameters en ulimits, logConfiguration (awslogs, firelens, etc.), ephemeralStorage-grootte (voor Fargate, 20–200 GB) en volumes (inclusief EFS). Gebruik de ’task execution role’ voor het ophalen van images en voor log drivers; gebruik de ’task role’ voor AWS API-toegang vanuit de applicatie. De container healthCheck definieert command, interval, timeout, retries en startPeriod. In combinatie met dependsOn (condition=HEALTHY) dwingen statuscontroles de opstartvolgorde voor sidecars af.
ECS-services handhaven het gewenste aantal taken en registreren taken optioneel bij een ALB/NLB. De service deploymentConfiguration regelt rolling updates met minimumHealthyPercent en maximumPercent. De ‘deployment circuit breaker’ (enabled/rollback) kan mislukte uitrolacties automatisch terugdraaien wanneer taken niet door de statuscontroles komen. Service autoscaling integreert met Application Auto Scaling voor op CPU/geheugen gebaseerde target tracking of ALB RequestCountPerTarget. Service discovery (AWS Cloud Map) en ECS Service Connect vereenvoudigen service-naar-service verkeer.
Clustertypes en capaciteit:
- Het EC2-starttype voert taken uit op zelfbeheerde EC2-instances. Gebruik Auto Scaling groups, placement constraints/strategies en elke networkMode (bridge/host/awsvpc). Daemon-taken en gespecialiseerde AMI’s (bijv. Bottlerocket) worden ondersteund.
- Het Fargate-starttype is serverless compute voor containers. Het gebruikt alleen awsvpc-networking, waardoor elke taak zijn eigen ENI en security group krijgt. Geen daemon-taken; u bent afhankelijk van sidecars of service-native integraties (bijv. FireLens). Platformversies bepalen de beschikbaarheid van features (controleer de release notes voor ondersteuning van EFS, ephemeral storage en exec). Fargate Spot verlaagt de kosten voor onderbreekbare taken. Kies CPU/geheugen in ondersteunde paren (bijv. 0,25 vCPU/0,5–2 GB tot 16 vCPU/120 GB). Wanneer u in private subnets draait, voeg dan VPC-interface-eindpunten toe voor ECR (api en dkr), CloudWatch Logs en een S3-gateway-eindpunt om images op te halen en logs te versturen zonder NAT.
Fargate en EFS: definieer een EFS-volume in de taakdefinitie en mount met TLS; geef de voorkeur aan EFS access points voor ’least-privilege’ en identiteitshandhaving. Dit ondersteunt stateful behoeften zoals gedeelde configuraties, modelgewichten of tussenliggende bestanden zonder ze in de images in te bakken.
Container-statuscontroles, rolling updates en blue/green:
- Statuscontroles vinden plaats op meerdere lagen: container (op CMD-basis), ECS-taak (geaggregeerde containerstatussen) en load balancer target health (HTTP/TCP). Lijn de intervallen en drempelwaarden op elkaar af, zodat ECS ongezonde taken netjes kan vervangen voordat de ALB de targets deregistreert.
- Rolling updates zijn de standaard bij ECS. Stem minHealthy/maxPercent af om de ‘surge’ en capaciteitsveiligheid te beheersen.
- Blue/green maakt gebruik van CodeDeploy met ECS (deploymentController type
undefined
). CodeDeploy beheert twee target groups achter de ALB, verschuift testverkeer naar de ‘green’ set (AfterAllowTestTraffic), voert geautomatiseerde controles uit (bijvoorbeeld via Lambda) en verschuift vervolgens het productieverkeer. Koppel CloudWatch-alarmen om een rollback uit te voeren bij pieken in 5XX-fouten, latency of aangepaste metrieken. Dit patroon isoleert storingen en maakt snelle terugdraaiingen mogelijk met nagenoeg geen downtime.
Image governance met ECR:
- Scannen: schakel ‘scan-on-push’ in en gebruik Amazon Inspector ’enhanced scanning’ voor continue CVE-dekking en SBOM’s. Blokkeer implementaties op basis van de ernst van kwetsbaarheden met behulp van pipeline-controles.
- Levenscyclusbeleid laat oude image-tags vervallen op basis van aantal/leeftijd en tag-prefix. Combineer dit met ’tag immutability’ om onbedoeld overschrijven te blokkeren.
- Encryptie: gebruik door ECR beheerde encryptie of een door de klant beheerde KMS-sleutel met een passend sleutelbeleid.
- Cross-account: koppel ‘repository resource policies’ om pull/push-rechten te verlenen aan andere accounts of CI-rollen. Gebruik ECR-replicatieregels om images te kopiëren tussen regio’s/accounts voor lokaliteit en het verkleinen van de ‘blast radius’. PrivateLink (VPC-eindpunten) maakt het mogelijk om images op te halen zonder internet.
Amazon EKS Compute-modellen
EKS scheidt de beheerde control plane van je keuzes voor de data plane:
Managed node groups (MNG’s) provisioneren en beheren de levenscyclus van EC2 worker nodes. Ze integreren met launch templates voor de keuze van AMI (Amazon Linux 2, Bottlerocket), instance types en bootstrap-parameters. MNG’s voeren rolling updates uit met ‘surge capacity’ en geautomatiseerde cordon/drain voor minimale verstoring. Gebruik node taints/tolerations om specifieke workloads te sturen. Combineer met de Cluster Autoscaler (of Karpenter) om de node-capaciteit aan te passen op basis van ‘pending pods’.
Self-managed nodes geven volledige controle over de bootstrap en het OS, maar voegen operationele overhead toe; ze worden doorgaans gereserveerd voor speciale kernels of niche-hardware.
EKS on Fargate voert pods uit zonder nodes te beheren. Fargate-profielen mappen namespaces/labels naar Fargate. Elke pod krijgt zijn eigen ENI (awsvpc), wat netwerkisolatie vereenvoudigt. Beperkingen zijn onder meer geen DaemonSets, geen host networking/volumes en restricties op ‘privileged workloads’. Observability-agents (bijv. Fluent Bit) moeten als sidecars draaien of gebruikmaken van beheerde logverzameling. Dit model is ideaal voor piekbelastingen (‘spiky’), workloads met een kleine footprint, of multi-tenant workloads die profiteren van isolatie per pod en een ‘pay-per-pod’ kostenmodel.
Operationele add-ons:
- VPC CNI, CoreDNS en kube-proxy zijn beheerde add-ons; pin versies die compatibel zijn met de clusterversie en voer upgrades bewust uit.
- IAM Roles for Service Accounts (IRSA) dwingt ’least-privilege’ AWS-toegang per pod af en vervangt het delen van credentials via de node-rol.
- Load balancing via de AWS Load Balancer Controller ondersteunt ALB/NLB voor Services en Ingress; zorg voor correcte IAM- en security group-regels, vooral bij het combineren van MNG en Fargate.
- Persistente opslag via CSI-drivers (EBS voor block-storage per pod, EFS voor gedeelde POSIX). Voor Fargate is EFS de gebruikelijke optie voor gedeelde state.
AWS Lambda Operations en Concurrency
Packaging en configuratie:
- Deployment packages kunnen ZIP-archieven zijn (met language runtime) of container images tot 10 GB. ZIP is lichter voor kleine code; images zorgen voor uniforme tooling met container-gebaseerde builds.
- Layers bevatten gedeelde bibliotheken voor meerdere functies; houd ze minimaal en geversioneerd. Een functie kan maximaal vijf layers bevatten.
- Versies zijn onveranderlijke snapshots; aliassen zijn stabiele pointers naar versies en kunnen gewichten hebben voor ’traffic shifting’.
- Ephemeral storage is standaard 512 MB en kan worden verhoogd tot 10.240 MB voor builds, tijdelijke bestanden of ML inference-caches. Kies x86_64 of arm64 voor de afweging tussen kosten en prestaties. Gebruik omgevingsvariabelen (environment variables) voor configuratie en integreer met Secrets Manager of Parameter Store.
Traffic shifting en veiligheid:
- Gebruik CodeDeploy voor canary/linear shifts met geautomatiseerde rollback op basis van CloudWatch-alarmen (bijv. 5XX, latency of aangepaste app-metrics). Als alternatief kun je de gewichten van aliassen direct instellen voor eenvoudige A/B-routing.
- Gebruik gestructureerde logging naar CloudWatch Logs en maak metric filters om metrieken met dimensies voor operatie/versie/code af te leiden zonder de instrumentatie van metrieken te wijzigen. Schakel X-Ray in voor end-to-end latency tracing.
Concurrency-controles:
- Unreserved concurrency gebruikt de regionale pool van het account. Piekverkeer kan de capaciteit voor andere functies wegnemen.
- Reserved concurrency stelt een limiet in voor de maximale concurrency van een functie en garandeert capaciteit door deze uit de regionale pool te reserveren; dit biedt isolatie van ’noisy neighbors’.
- Provisioned concurrency houdt uitvoeringsomgevingen (execution environments) geïnitialiseerd voor een versie/alias, waardoor ‘cold starts’ vrijwel worden geëlimineerd en de latency wordt gestabiliseerd. Schaal provisioned concurrency met Application Auto Scaling op basis van tijdstip of metrieken.
- Throttling treedt op wanneer een functie haar concurrency-limiet bereikt; synchrone aanroepers krijgen 429-fouten, terwijl asynchrone aanroepen opnieuw worden geprobeerd met ’exponential backoff’ en na het geconfigureerde aantal pogingen naar een ‘dead-letter queue’ kunnen gaan. Voor poll-gebaseerde bronnen zoals SQS, verhoogt Lambda de concurrency met de wachtrijdiepte (‘queue depth’); zorg ervoor dat de gereserveerde/geprovisioneerde concurrency en de capaciteit van downstream systemen overeenkomen met het maximale aantal ‘inflight messages’ om te voorkomen dat de backlog groeit.
API Gateway-ontwerp en ECR Cross-Account Toegang
API Gateway REST API’s versus HTTP API’s:
- REST API’s bieden de meest uitgebreide functieset: request/response mapping (VTL), gebruiksplannen en API-sleutels, authorizers, WAF en caching op stage-niveau. Kies REST API’s wanneer je geavanceerde transformaties, API-sleutels met quota’s of volwassen ecosysteemintegraties nodig hebt.
- HTTP API’s hebben een lagere latency en lagere kosten met eenvoudigere routing naar Lambda en HTTP-backends (inclusief ALB/NLB/private integraties). Ze ondersteunen JWT-authorizers en IAM, maar missen veel REST-functies, waaronder caching op stage-niveau en VTL-transformaties. Kies HTTP API’s voor eenvoudige proxying met minimale overhead.
Stages en throttling:
- Stages koppelen een specifieke deployment aan een URL-pad. Configureer stage-variabelen, logging en throttling op de stage. Pas gebruiksplannen (REST) toe om throttles en quota’s per API-sleutel af te dwingen. Throttling-instellingen omvatten rate en burst; deze worden gecombineerd met limieten op accountniveau, dus zorg ervoor dat het totale verkeer de regionale quota’s niet overschrijdt. Schakel access logging in met gestructureerde JSON en integreer WAF om kwaadaardige verzoeken te inspecteren en te blokkeren.
Caching (alleen REST API’s):
- Cache op stage-niveau vermindert de belasting van de backend en de latency; stel TTL’s per methode in, schakel encryptie in en overweeg cache key-parameters/headers voor correctheid. Invalideer caches na deployments die de vorm of het gedrag van de response veranderen.
Private connectiviteit:
- Kies endpoint-type: edge-optimized (REST, wereldwijd via CloudFront), regional of private (VPC-endpoints). Private integraties met VPC Link maken verbinding met NLB/ALB-backends in VPC’s zonder publieke blootstelling.
ECR cross-account toegang:
- Gebruik resource policies voor de repository om pull/push-rechten te verlenen aan principals in andere accounts (CI/CD- of runtime-rollen). Als je een door de klant beheerde KMS-sleutel gebruikt, breid dan de key policy dienovereenkomstig uit. Voor distributie over meerdere accounts, definieer ECR-replicatieregels die gericht zijn op doelaccounts/regio’s en valideer de integriteit van de image met tag immutability en digest pinning in deployments.
Praktisch Probleemscenario
Spotify moderniseert een microservice-stack voor afspeellijsten om de variatie in latency tijdens piek-releases te verminderen en om hun image supply chain over meerdere AWS-accounts te versterken.
- Standaardiseer de build en governance van images
- Implementeer ECR-repositories met scan-on-push en Amazon Inspector enhanced scanning. Voeg tag immutability en lifecycle policies toe om de laatste N versies per branch te behouden en ‘drift’ op te schonen. Configureer cross-region/account-replicatie van het build-account naar de prod- en staging-accounts. Waarom: Inspector zorgt voor continue CVE-dekking, immutability voorkomt ’tag hijacking’ en replicatie lokaliseert pulls om de deployment-latency en blast radius te verminderen.
- Serveer stateless API’s op ECS met Fargate
- Definieer ECS task definitions met awslogs en FireLens voor gestructureerde logs en metrics. Schakel de container healthCheck in en stem de health checks van de ALB-target group hierop af. Mount een EFS-volume voor gedeelde, alleen-lezen configuratie via een access point. Draai services op Fargate met een capacity provider-strategie die Fargate en Fargate Spot combineert voor kostenefficiëntie. Waarom: Fargate elimineert het beheer van nodes en isoleert taken per ENI; EFS voorkomt het ‘inbakken’ van configuraties in images en ondersteunt atomische rollbacks van configuratie.
- Veilige deployments met blue/green en geautomatiseerde tests
- Schakel ECS-services over naar een CodeDeploy deployment controller. Configureer twee target groups op de ALB. Gebruik een canary shift met AfterAllowTestTraffic om een Lambda-testrunner aan te roepen die kritieke endpoints binnen 5 minuten test. Koppel CloudWatch-alarmen voor 5XX-fouten en p90-latency om een rollback te activeren. Waarom: CodeDeploy blue/green isoleert risico’s, de test hook valideert de ‘green’ omgeving vóór de volledige overschakeling, en alarmen zorgen voor een geautomatiseerde, objectieve rollback.
- Latency-gevoelige operaties op Lambda met gestabiliseerde cold starts
- Voor een tokenization helper-API, verpak de functie als een ZIP met minimale dependencies. Maak een versie/alias aan en schakel provisioned concurrency in, gedimensioneerd voor piekbelasting. Stuur provisioned concurrency aan via Application Auto Scaling met een dagelijks schema dat de release-vensters volgt. Gebruik CodeDeploy canary (10%/15 minuten) voor op aliassen gebaseerde traffic shifting, gekoppeld aan CloudWatch-alarmen. Waarom: Provisioned concurrency elimineert cold starts tijdens pieken; alias canaries maken geleidelijke blootstelling met snelle rollback mogelijk.
- Externe API’s ontsluiten via API Gateway en private backends beveiligen
- Plaats API Gateway vóór de Lambda en de ECS ALB. Gebruik HTTP API’s voor de Lambda-proxy om kosten/latency te minimaliseren. Gebruik de REST API voor het ECS ALB-pad dat request/response mapping en stage caching nodig heeft voor endpoints met veel leesverkeer. Pas WAF web ACL’s en stage throttling toe; schakel gestructureerde access logs in. Waarom: Het afstemmen van API-types op de behoeften optimaliseert kosten en mogelijkheden; caching vermindert de belasting; WAF en throttling bieden bescherming tijdens pieken in het verkeer.
- Cross-account runtime pulls zonder internet
- Voeg in de runtime-VPC’s interface-endpoints toe voor ECR (api, dkr) en CloudWatch Logs, en een S3 gateway-endpoint. Koppel ECR repository resource policies om de task execution-rollen van het prod-account pull-rechten te geven. Gebruik een door de klant beheerde KMS-sleutel met een cross-account key policy voor de encryptie van images at rest. Waarom: Private image pulls voorkomen NAT-kosten en egress-risico’s; expliciete resource/key policies dwingen cross-account toegang met de minste privileges af.
Dit ontwerp vermindert de operationele last (geen nodes om te beheren), biedt deterministische latency via provisioned concurrency en op ALB-health afgestemde rollouts, en dwingt de herkomst van images end-to-end af met ECR scanning, replicatie en immutability.
← Beveiliging · Alle domeinen · Hoge beschikbaarheid →
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 →