Amazon DVA-C02: CloudFormation & Infrastructure as Code (SAM, CDK) — 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.

Kernpatronen en best practices voor CloudFormation-templates

CloudFormation-templates moeten worden geschreven als declaratieve, idempotente beschrijvingen van resources. Geef de voorkeur aan kleine, gefocuste stacks en geneste stacks voor complexe architecturen. Gebruik de sectie Resources met expliciete logische ID’s en geef de voorkeur aan intrinsieke functies zoals !Ref, !GetAtt, !Sub, Fn::FindInMap en Fn::If voor compositie en hergebruik. Valideer templates met aws cloudformation validate-template of de SAM/CDK-equivalenten (sam validate, cdk synth) voordat je change sets aanmaakt. Gebruik ChangeSets (CreateChangeSet / ExecuteChangeSet) voor review en om onverwachte vervangingen te voorkomen; gebruik DescribeChangeSet om de acties te inspecteren die de stack zal uitvoeren. Houd de body van de template binnen de limieten van CloudFormation door grote inline code naar S3 te verplaatsen en ernaar te verwijzen (CodeUri, S3Bucket/S3Key), of splits de template op in geneste stacks met AWS::CloudFormation::Stack. Voer regelmatig drift detection uit met DetectStackDrift en DescribeStackResourceDrifts. Gebruik DeletionPolicy en UpdateReplacePolicy om data-dragende resources te beschermen, en schakel termination protection in voor kritieke stacks. Integreer cfn-lint en cfn-guard in CI/CD om structurele problemen en beleidsovertredingen vroegtijdig op te sporen. Maak voor snelle iteratie gebruik van ChangeSets en update-strategieën op resourceniveau om de blast radius te minimaliseren; gebruik voor Lambda-functies versienummering bij deployments om updates veilig en omkeerbaar te maken.

Parametrisering, mappings, secrets en gevoelige data

Parameteriseer omgevingsverschillen met CloudFormation Parameters en Mappings, en gebruik AllowedValues en ConstraintDescription om snel te falen (‘fail fast’). Vermijd het opnemen van secrets of plaintext credentials in Parameters; gebruik in plaats daarvan SecureString SSM Parameter Store of Secrets Manager en verwijs ernaar via dynamische referenties zoals {{resolve:secretsmanager:mysecret:SecretString:password}} of gebruik AWS::SSM::Parameter::Value<String> types. Markeer gevoelige parameters met NoEcho: true om waarden in de console te maskeren, maar wees je ervan bewust dat NoEcho geen encryptie ‘at rest’ toepast — gebruik Secrets Manager voor auditing en rotatie. Gebruik Mappings en Fn::FindInMap voor deterministische, omgevingsspecifieke waarden (AMI ID’s per regio) en Fn::GetAZs voor de berekening van availability zones. Voor resource-referenties tussen stacks in dezelfde regio/account, exporteer outputs en importeer ze via Fn::ImportValue; onthoud dat imports niet cross-account of cross-region kunnen zijn. Bescherm IAM principals die door CloudFormation worden gebruikt door rollen te scopen met de minste privileges (’least privilege’); geef de voorkeur aan service-managed StackSet-permissies of provisioneer expliciet een administratirol met een beperkte scope. Wanneer je omgevingsvariabelen doorgeeft aan containers of Lambda, geef dan de voorkeur aan het refereren naar Secrets Manager ARN’s of SSM Parameter ARN’s en haal deze runtime op in de code, of gebruik SAM/CDK-features om beveiligde waarden met encryptie via KMS in de omgeving te injecteren.

Cross-account/region deployments, CDK en SAM multi-account patronen

Cross-account en cross-region deployments vereisen orkestratie die verder gaat dan exports van een enkele stack. Kies voor multi-account/multi-region deployments voor CloudFormation StackSets (CreateStackSet, CreateStackInstances) met service-managed permissions voor Organizations of self-managed met een execution role in de doelaccounts. Gebruik voor artefacten van applicatiecode gecentraliseerde S3-buckets met cross-account replicatie of bucket policies, of laat tools assets per regio publiceren: CDK gebruikt bootstrap stacks en assets die worden gepubliceerd via cdk-assets en vereist cdk bootstrap in elke account/regio; CDK Pipelines (pipelines module) of de aws-cdk CLI met –role-arn ondersteunt cross-account promotie. SAM gebruikt sam package / sam deploy, wat artefacten uploadt naar een S3-bucket; gebruik voor multi-account CI/CD om artefacten te packagen en te pushen naar buckets in de doelaccounts en voer deploys uit met de juiste credentials. Vermijd CDK context lookups (VPC.fromLookup etc.) die account-specifieke permissies vereisen op synth time; geef in plaats daarvan identifiers expliciet door als parameters om de synth reproduceerbaar te houden. Gebruik AWS CodePipeline of GitHub Actions met assumed roles (sts:AssumeRole) om deploys uit te voeren naar doelaccounts, en zorg ervoor dat de bootstrap en de benodigde service-linked roles bestaan. Onthoud dat CloudFormation exports regionaal zijn; geef de voorkeur aan StackSets of pipeline-gestuurde deployments voor cross-account distributie.

Custom resources, stackbeveiliging en versnellers voor lokale/incrementele deployments

Gebruik custom resources wanneer CloudFormation geen native resourcetype heeft, door providers te implementeren die door Lambda worden ondersteund en die het CloudFormation-responsprotocol voor Create/Update/Delete-events respecteren. Bouw idempotente handlers, reageer met cfn-response of het CloudFormation CLI-framework, en handel langlopende acties af met voortgangsevents of door de status op te slaan in DynamoDB. Houd rekening met de timeouts van custom resources: CloudFormation heeft een maximale timeout voor stackoperaties en resources die door Lambda worden ondersteund, moeten binnen dit tijdsvenster voltooid zijn, anders veroorzaken ze een stack rollback. Bescherm kritieke resources met stack policies (SetStackPolicy) om vervanging of updates van gespecificeerde logische ID’s tijdens stack-updates te blokkeren, en activeer termination protection voor omgevingen die u niet kunt veroorloven te verwijderen. Voor incrementele en lokale ontwikkeling, gebruik de AWS SAM CLI (sam build, sam local invoke, sam local start-api) en sam sync voor snelle ‘code-only’ updates, en CDK watch of cdk deploy met assets om alleen gewijzigde resources bij te werken; deze tools berekenen asset-hashes (lambda asset hashing) zodat alleen gewijzigde code opnieuw wordt gepubliceerd. Integreer CloudFormation ChangeSets, Lambda-versioning (AutoPublishAlias in SAM of lambda.Version in CDK) en CodeDeploy traffic-shifting voor veilige deployments. Veelvoorkomende valkuilen zijn het overschrijden van template- of parameterlimieten, het onjuist gebruiken van cross-account imports, en het initialiseren van zware SDK-clients binnen handlers, wat cold-start-latenties veroorzaakt — geef de voorkeur aan globale, ’lazy-initialized’ clients met configureerbare timeouts en ‘retry’-gedrag.

Praktijkprobleem: Gebruiksscenario

Scenario: AcmeMedia beheert een multi-account AWS-organisatie met afzonderlijke Dev-, Staging- en Prod-accounts in de us-east-1 regio. Een serverless service voor beeldverwerking (Lambda + S3 + DynamoDB) moet consistent worden geïmplementeerd in alle accounts, waarbij gedeelde gevoelige configuratie centraal wordt opgeslagen.

Uitdaging: Implementeer dezelfde CloudFormation/SAM/CDK-stack in meerdere accounts en zorg ervoor dat Lambda-code-artefacten veilig beschikbaar zijn in elk doelaccount, terwijl geheimen buiten de templates worden gehouden.

Aanbevolen Aanpak:

  1. Gebruik AWS CloudFormation StackSets met service-managed permissions (aws cloudformation create-stack-set –stack-set-name ImageProcessor –template-body file://template.yaml) en vervolgens aws cloudformation create-stack-instances om te richten op accounts en regio’s, of configureer CDK Pipelines om per account te ‘synthen’ en te deployen met rollen.
  2. Package Lambda-assets met behulp van CDK asset publishing (cdk bootstrap in elk account/regio) of sam package naar een S3-bucket in elk doelaccount; automatiseer het kopiëren van assets via CI (CodeBuild met aws s3 cp of S3-replicatie) en gebruik cdk deploy of sam deploy met de credentials van het doelaccount.
  3. Sla gevoelige configuratie op in AWS Secrets Manager in elk account, waarnaar in de template wordt verwezen via dynamische referenties ({{resolve:secretsmanager:arn:aws:secretsmanager:us-east-1:123456789012:secret:ImageProcSecret:SecretString:apiKey}}) of implementeer een gerepliceerd secret via de replicatiefunctie van Secrets Manager, en vermijd NoEcho-parameters.
  4. Gebruik ChangeSets (create-change-set, execute-change-set), activeer termination protection op productiestacks en gebruik stack policies om onbedoelde vervanging van DynamoDB-tabellen of S3-buckets tijdens updates te voorkomen.

Rationale: StackSets en pipeline-gestuurde deployments zorgen voor een veilige, auditeerbare verspreiding over meerdere accounts/regio’s, terwijl asset publishing en per-account secrets credentials lokaal en auditeerbaar houden. ChangeSets, termination protection en stack policies verminderen het risico tijdens iteratieve deployments.


Amazon DynamoDB · Alle domeinen · Deployment

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