Amazon DVA-C02: Deployment & CI/CD (CodePipeline, CodeBuild, CodeDeploy, Elastic Beanstalk, Containers) — 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.
Basisprincipes van CI/CD met CodePipeline en CodeBuild: patronen, API’s en veelvoorkomende valkuilen
Ontwerp pipelines met duidelijke stadia: source, build, test, approval, deploy en post-deploy verificatie. CodePipeline coördineert deze stadia; gebruik een pipeline role die minimale, afgebakende permissies verleent en configureer action roles voor integraties met derde partijen. Trigger pipelines via CodeCommit webhooks of StartPipelineExecution (AWS SDK: codepipeline.startPipelineExecution) om ze programmatisch te starten. Voor builds, geef de voorkeur aan CodeBuild-projecten met een buildspec.yml die de fases definieert (install, pre_build, build, post_build); start builds direct met StartBuild of StartBuildBatch wanneer je ad-hoc of batch builds nodig hebt. Voor het bouwen van images, gebruik aws ecr get-login-password gepiped naar docker login in de pre_build-fase, gevolgd door docker build/push naar ECR en leg de image digest vast om onveranderlijke (immutable) artefactreferenties te produceren. Vermijd het gebruik van zwevende tags zoals “latest”; produceer in plaats daarvan task definitions of manifest-bestanden die verwijzen naar image digests, zodat deployments deterministisch zijn. Let op veelvoorkomende valkuilen: verlopen ECR-authenticatietokens in langlopende scripts, ontoereikende CodeBuild IAM-policies voor het pushen naar ECR of het aanroepen van AWS API’s, en het hardcoderen van ARN’s. Instrumenteer builds om artefacten te uploaden naar S3 of naar de pipeline artifact store, en gebruik omgevingsvariabelen en Parameter Store/Secrets Manager voor gevoelige waarden die alleen tijdens runtime nodig zijn, in plaats van geheimen ‘in te bakken’ in build-artefacten.
Deploymentstrategieën: CodeDeploy, Lambda-aliassen en configuratiekeuzes voor Elastic Beanstalk
Kies het deploymentmodel dat past bij de risicotolerantie en de noodzaak voor rollbacks. Gebruik voor Lambda versies en aliassen; publiceer een versie (lambda.publishVersion) en update aliassen met traffic-shifting regels via CodeDeploy door een deployment aan te maken (codedeploy.createDeployment) die verwijst naar de Lambda-applicatie en deployment group. Gebruik de ingebouwde configuraties van CodeDeploy zoals CodeDeployDefault.LambdaCanary10Percent5Minutes of aangepaste traffic-routing voor precieze canary- of lineaire shifts. Voor EC2- en on-premise-applicaties ondersteunt CodeDeploy blue/green met lifecycle hooks voor validaties voordat het verkeer wordt toegelaten en automatische rollback bij mislukte health checks. Elastic Beanstalk biedt meerdere policies: All at Once (snel, riskant), Rolling, Rolling with Additional Batch (veiliger) en Immutable (veiligst). Je wijzigt deze met eb deploy of de update-environment API, waarbij je DeploymentPolicy en OptionSettings specificeert. Veelvoorkomende valkuilen voor ontwikkelaars zijn het vergeten te configureren van health checks voor de applicatie (ALB target group health, EB health reporting), wat automatische traffic cutover (omschakeling) voorkomt, en onvoldoende IAM-permissies voor CodeDeploy om Lambda aan te roepen of ECS te updaten. Voor releases die afhankelijk zijn van een database, overweeg achterwaarts compatibele schemawijzigingen en feature toggles vóór de deployment om te voorkomen dat code en schema in dezelfde transactie gekoppeld worden.
Containerpipelines, ECR, ECS/Fargate en EKS: build, deploy en onveranderlijke (immutable) referenties
Een robuuste containerpipeline bouwt images in CodeBuild, pusht deze naar ECR en start de deployment naar ECS, Fargate of EKS. Voer in CodeBuild het volgende uit: aws ecr get-login-password | docker login --username AWS --password-stdin ${ACCOUNT}.dkr.ecr.${REGION}.amazonaws.com, gevolgd door docker build -t repo:tag ., docker push, en leg de image digest vast via docker inspect --format='{{index .RepoDigests 0}}' image. Voor ECS/Fargate, registreer de nieuwe task definition (ecs.registerTaskDefinition) met de image digest in containerDefinitions, en update vervolgens de service (ecs.updateService) om de nieuwe task definition te gebruiken of stel forceNewDeployment in om een vervanging te forceren; gebruik CodeDeploy voor ECS blue/green deployments met traffic shifting op het ALB-niveau. Voor EKS, update Kubernetes-manifesten om naar image digests te verwijzen en pas dit toe met kubectl set image of gebruik declaratieve GitOps-tools; CodeBuild kan aws eks update-kubeconfig en kubectl-commando’s uitvoeren. Typische valkuilen: het gebruik van veranderlijke (mutable) tags die verouderde deployments veroorzaken, het niet verhogen van de task definition-versie waardoor ECS geen nieuwe images deployt, onvoldoende CPU/geheugen of ENI-limieten voor Fargate-taken, en het vergeten om CodeBuild de ecr:BatchGetImage-permissie te geven om gepushte images te lezen.
Pre-deploy validatie, rollbacks en observability: tests, hooks en operationele waarborgen
Integreer geautomatiseerde unit-, integratie- en smoke-tests in pipeline-stages. Gebruik CodeBuild om tests uit te voeren en AWS X-Ray of CloudWatch Logs voor tracing en gestructureerde logs; annoteer X-Ray traces met PutAnnotation in SDK’s zodat downstream queries kunnen filteren op gebruikers- of request-attributen. Gebruik voor pre-deploy handmatige goedkeuringsacties (manual approval actions) in CodePipeline of geautomatiseerde validator-stappen: voer Canary-checks uit via CodeBuild die het geïmplementeerde endpoint testen, of roep CloudWatch Synthetics canaries aan om gescripte verificaties uit te voeren. Gebruik CodeDeploy lifecycle hooks (BeforeAllowTraffic, AfterAllowTraffic) om health checks en registratie/deregistratie-logica uit te voeren. Implementeer automatische rollback-triggers: configureer CodeDeploy om terug te draaien bij een non-zero implementatiestatus of mislukte alarmen (CloudWatch-alarmen gekoppeld aan de deployment group), en gebruik voor Lambda aliassen met traffic shifting om een snelle rollback mogelijk te maken door de alias bij te werken zodat deze naar de vorige versie verwijst. Valkuilen voor ontwikkelaars zijn onder meer niet-overeenkomende timeouts (Lambda-timeout korter dan SQS visibility timeout), het vergeten van de juiste instelling van AppSpec-hooks voor ECS/CodeDeploy, en het vertrouwen op het succes van deployment API-calls zonder het runtime-gedrag te valideren. Instrumenteer implementaties met metrics en alerts, en gebruik onveranderlijke identifiers (immutable identifiers) in artefacten voor traceerbaarheid.
Praktijkprobleem: Use-Case Scenario
Scenario: ExampleRetail beheert een microservices-storefront in AWS verspreid over dev/test/prod-accounts. Ze gebruiken CodeCommit voor broncode, CodePipeline/CodeBuild voor CI, ECR voor images, ECS/Fargate voor services achter een ALB, en Lambda voor asynchrone workers.
Uitdaging: Een ontwikkelaar moet een veilige, geautomatiseerde pipeline toevoegen om een nieuwe checkout-servicecontainer te implementeren met canary traffic shifting en geautomatiseerde pre-deploy validatie die bij een fout terugdraait.
Aanbevolen Aanpak:
- Maak een CodeBuild-project dat de Docker-image bouwt, unit tests uitvoert, inlogt bij ECR (aws ecr get-login-password | docker login –username AWS –password-stdin ${ACCOUNT}.dkr.ecr.${REGION}.amazonaws.com), de image pusht en een JSON-artefact uitgeeft dat de image digest bevat.
- Voeg in CodePipeline een deploy-stage toe die een nieuwe ECS-task-definitie registreert via ecs.registerTaskDefinition met een verwijzing naar de image digest, en vervolgens een CodeDeploy ECS-deployment aanmaakt door codedeploy.createDeployment aan te roepen met een AppSpec die de nieuwe task-definitie koppelt en een deploymentConfig ingesteld voor canary (bijv. CodeDeployDefault.ECSCanary10Percent5Minutes).
- Voeg een op CodeBuild gebaseerde validatieactie of een CloudWatch Synthetics canary toe als een post-deploy test die kritieke checkout-endpoints aanroept en de responses valideert; laat de pipeline wachten op een succesvolle validatie.
- Configureer CodeDeploy rollback-opties en een CloudWatch-alarm gekoppeld aan de deployment group (bijv. 5xx-foutpercentage of latency) om automatisch af te breken en terug te draaien als drempelwaarden worden overschreden.
Reden: Het bouwen van onveranderlijke (immutable) images, het registreren van task-definities met expliciete image digests, en het gebruik van CodeDeploy’s traffic-shifting plus geautomatiseerde validatie zorgen voor veilige canary releases en een snelle, geautomatiseerde rollback, terwijl het garandeert dat implementaties reproduceerbaar en observeerbaar zijn.
← CloudFormation · Alle domeinen · Beveiliging →
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 →