SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
SOA-C03 · Domain 3

Deployment, Provisioning, and Automation practice questions

Deployment, Provisioning, and Automation is worth 22% of the SOA-C03 exam — the heaviest of the 5 domains. Provisioning with CloudFormation and the AWS CDK, image building, cross-account resource sharing, and event-driven operational automation. 6 fully worked examples are further down this page, answers included.

Exam weight
22%
the heaviest of the 5 domains
Questions
40
across 2 topics
Free, no account
5/day
sign up free to remove the cap
Explanations
Every option
right and wrong

Build a practice session

5 free questions left today.

Domains

How many?

Mode

Ready when you are

10 fresh questions drawn across 1 of 5 domains, in Learn mode.

Focused review

Every question you answer incorrectly, and every question you flag while practising, is saved here automatically. Finish a session and you can come back to re-drill just those.

6 sample Deployment, Provisioning, and Automation questions, fully explained

Questions from the SOA-C03 bank mapped to domain 3, with the answer key and the reasoning behind every option. None of them repeat the examples on the main SOA-C03 practice page.

Question 1Deployment, Provisioning, and Automation

A company's disaster recovery plan requires the ability to launch its hardened web server image in a second Region. The AMI currently exists only in us-east-1. What should a CloudOps engineer do?

Choose one.

  • a
    Reference the existing AMI ID in launch templates created in the DR Region.

    AMI IDs are Region-specific; a us-east-1 AMI ID is meaningless in any other Region and the launch would fail.

  • b
    Store the AMI in an S3 bucket with cross-Region replication enabled.

    AMIs are backed by EBS snapshots managed by EC2, not by S3 objects you can replicate; this is not how AMIs move between Regions.

  • c
    Share the AMI with the DR Region from the AMI's permissions settings.

    AMI sharing grants launch permissions to other AWS accounts, not to other Regions; there is no share-with-Region operation.

  • d
    Copy the AMI from us-east-1 to the DR Region so it exists locally there. Correct

    AMIs are Regional resources, so cross-Region use requires an explicit AMI copy into each target Region, producing a new local AMI ID to reference in DR launch templates.

The concept

AMIs are Regional resources: to launch the same golden image in another Region you must copy the AMI there, which creates a new AMI with a new Region-local ID.

Why that’s the answer

Copying the AMI to the DR Region is the only mechanism that makes the image launchable there. Referencing the original ID fails because AMI IDs are Region-scoped, S3 replication is unrelated to how EC2 stores images, and sharing is an account-level permission concept — there is no such thing as sharing an AMI with a Region.

How to reason it out
  1. Initiate an AMI copy from us-east-1 to the DR Region.
  2. Wait for the copy to complete; note the new AMI ID minted in the DR Region.
  3. Update DR launch templates or CloudFormation mappings to reference the new Region-local AMI ID.
  4. Repeat the copy after each golden-image rebuild, or automate distribution with EC2 Image Builder.

Exam tip: Cross-Region DR with AMIs means copying the AMI into each Region — every copy gets its own local AMI ID.

CloudFormation, StackSets, and golden images: provisioning for SOA-C03 — the lesson that teaches this.

Question 2Deployment, Provisioning, and Automation

A security team has approved a hardened base AMI, and two other AWS accounts in the company need to launch instances from it. The image must not become publicly available. What is the correct way to grant access?

Choose one.

  • a
    Create a resource share for the AMI in AWS RAM.

    AWS RAM shares resources such as subnets and Transit Gateways; AMI sharing is done through the image's own launch permissions, not RAM.

  • b
    Make the AMI public and tell only the two teams the AMI ID.

    A public AMI is launchable by any AWS account that discovers it, which directly violates the requirement to keep the image private.

  • c
    Copy the AMI's snapshots into an S3 bucket and grant the accounts bucket access.

    AMIs are not distributed as S3 objects; granting bucket access would not make the image launchable in the other accounts.

  • d
    Add the two account IDs to the AMI's launch permissions. Correct

    AMIs are shared by granting launch permissions to specific account IDs (or an organization), which lets those accounts launch from the image while it stays private to everyone else.

The concept

Private AMI sharing works through launch permissions: the owner adds specific AWS account IDs (or shares across an organization), and those accounts can then launch instances from the image.

Why that’s the answer

Adding the account IDs to the AMI's launch permissions grants exactly the required access with no public exposure. AWS RAM is the tempting distractor because it is the multi-account sharing service — but AMIs are not shared through RAM; making the image public fails the privacy requirement outright; and S3 bucket access has nothing to do with how EC2 launches from an AMI.

How to reason it out
  1. Open the AMI's permissions (or use the CLI modify-image-attribute operation).
  2. Add the two target account IDs as launch permissions, keeping the image private.
  3. If the AMI's snapshots are encrypted, ensure the KMS key policy also allows the target accounts.
  4. Have the target accounts confirm they can see and launch the shared AMI.

Exam tip: Share an AMI with specific accounts via launch permissions — AWS RAM does not share AMIs, and public sharing is all-or-nothing.

CloudFormation, StackSets, and golden images: provisioning for SOA-C03 — the lesson that teaches this.

Question 3Deployment, Provisioning, and Automation

One CloudFormation template must deploy dev, staging, and production stacks that differ only in instance size and environment name, with the values supplied at deploy time. Which template section should hold these per-environment values?

Choose one.

  • a
    Parameters Correct

    Parameters are exactly the mechanism for deploy-time inputs: one template serves every environment, and instance size and environment name arrive as values when each stack is created.

  • b
    Mappings

    Mappings are static lookup tables baked into the template — useful for Region-to-AMI tables, but they cannot accept values supplied at deploy time.

  • c
    Outputs

    Outputs surface values after a stack is deployed, such as a load balancer DNS name; they are results, not inputs.

  • d
    Conditions

    Conditions switch resources on or off based on evaluated expressions; they consume parameter values but are not where deploy-time inputs are declared.

The concept

CloudFormation template anatomy assigns each section one job: Parameters take deploy-time input, Mappings hold static lookup tables, Conditions toggle resources, Resources declare the infrastructure, and Outputs surface results.

Why that’s the answer

Values that differ per environment and arrive at deploy time are the textbook definition of Parameters. Mappings fail because they are fixed inside the template, Outputs are post-deployment results rather than inputs, and Conditions only evaluate expressions (often over parameters) to include or exclude resources.

How to reason it out
  1. Declare parameters for the instance size and environment name, with types, defaults, and allowed values where sensible.
  2. Reference the parameters in the Resources section instead of hard-coding values.
  3. Deploy the same template three times, passing different parameter values for dev, staging, and production.
  4. Optionally add Conditions keyed on the environment parameter to create production-only resources.

Exam tip: Per-environment, deploy-time values belong in Parameters — one template, many stacks.

CloudFormation, StackSets, and golden images: provisioning for SOA-C03 — the lesson that teaches this.

Question 4Deployment, Provisioning, and Automation

A CloudOps engineer attempts to delete a shared networking stack, but CloudFormation returns an error stating that the stack's exported subnet IDs are in use by other stacks. What must the engineer do before the networking stack can be deleted?

Choose one.

  • a
    Set DeletionPolicy: Retain on the subnets and retry the deletion.

    DeletionPolicy controls what happens to a resource when it is deleted from a stack; it does not remove the cross-stack export dependency that is blocking the delete.

  • b
    Run drift detection on the networking stack to clear the stale references.

    Drift detection compares live configuration against the template; it neither detects nor clears cross-stack import relationships.

  • c
    Update or delete the stacks that import the exported subnet IDs so that nothing references them. Correct

    CloudFormation blocks deleting a stack (or removing an export) while another stack imports its exports, so the importing stacks must stop referencing the values first — deletions have an order.

  • d
    Retry the deletion with the option to skip in-use exports.

    There is no skip-exports or force option for this situation; CloudFormation refuses the delete for as long as any stack imports the exported values.

The concept

Cross-stack references via Outputs with Export names and Fn::ImportValue create real dependencies: an exporting stack cannot be deleted, and an in-use exported value cannot be changed or removed, while any stack imports it.

Why that’s the answer

The only way forward is to remove the imports — update or delete the consuming stacks first, then delete the networking stack. DeletionPolicy governs resource fate at deletion time but does nothing about export dependencies, drift detection is purely a reporting tool for out-of-band changes, and no force/skip flag exists for in-use exports.

How to reason it out
  1. List the importing stacks (the CloudFormation list-imports operation shows every stack consuming an export).
  2. Update or delete those stacks so they no longer use Fn::ImportValue against the networking stack's exports.
  3. Confirm the exports show no remaining imports.
  4. Delete the networking stack.

Exam tip: A stack whose exports are imported elsewhere cannot be deleted — release the imports first; cross-stack deletions have an order.

CloudFormation, StackSets, and golden images: provisioning for SOA-C03 — the lesson that teaches this.

Question 5Deployment, Provisioning, and Automation

Before updating a production stack, a CloudOps engineer creates a change set and sees the stack's RDS DB instance listed with Replacement: True. What will happen if the change set is executed as-is?

Choose one.

  • a
    CloudFormation will delete the existing DB instance and create a new one, so data not preserved elsewhere will be lost. Correct

    Replacement means the changed property is immutable after creation, so CloudFormation must delete the resource and create a replacement — catastrophic for a stateful database without snapshots or a DeletionPolicy.

  • b
    The DB instance will be modified in place with a brief interruption during the change.

    In-place modification is what happens when Replacement is false; Replacement: True explicitly signals delete-and-recreate, not an in-place update.

  • c
    CloudFormation will pause and request approval before replacing the database.

    Executing a change set applies it without further pauses; the change set itself is the preview step, and there is no built-in approval gate during execution.

  • d
    Only the database configuration parameters will change, and the data is retained automatically.

    A replacement creates an entirely new DB instance; data carries over only if something like a snapshot or manual migration preserves it, not automatically.

The concept

Change sets preview every planned Add, Modify, and Remove before an update runs, and flag Replacement when a property change forces CloudFormation to delete the resource and create a new one.

Why that’s the answer

Replacement: True on an RDS instance means the update will destroy the current database and stand up a new one — the exact scenario change-set review exists to catch. The in-place answer describes Replacement: False behavior, the approval-pause answer invents a gate that change-set execution does not have, and the parameters-only answer ignores that a replacement is a brand-new resource.

How to reason it out
  1. Create a change set for every production update and read it before executing.
  2. Scan specifically for Replacement: True on stateful resources such as databases and volumes.
  3. If a replacement is flagged, either rework the change to avoid the immutable property, or plan data preservation (snapshot, DeletionPolicy, migration window).
  4. Only then execute the change set.

Exam tip: Replacement: True in a change set means delete-and-recreate — review stateful resources for it before every execute.

CloudFormation, StackSets, and golden images: provisioning for SOA-C03 — the lesson that teaches this.

Question 6Deployment, Provisioning, and Automation

During an audit, a CloudOps engineer suspects that security group rules created by a CloudFormation stack were modified directly in the console weeks ago. Which action identifies every resource in the stack that no longer matches the template?

Choose one.

  • a
    Run drift detection on the stack. Correct

    Drift detection compares each supported resource's live configuration against the template's expected configuration and marks resources IN_SYNC, MODIFIED, or DELETED — exactly the tool for finding out-of-band changes.

  • b
    Create a change set using the current template and review the proposed changes.

    A change set compares a new template against the stack's last-deployed model, not against the live configuration — with an unchanged template it shows no changes even when resources have drifted.

  • c
    Review the stack's event history for modification events.

    Stack events record CloudFormation's own operations; console edits made outside CloudFormation never appear there.

  • d
    Re-run the stack update with the same template to reset the resources.

    Updating a drifted stack can behave unpredictably and does not produce a report of what diverged; it is a remediation gamble, not an identification step.

The concept

Drift detection is CloudFormation's answer to resources changed outside CloudFormation: it compares live configuration against the template and reports per-resource status.

Why that’s the answer

Running drift detection is the only option that inspects live reality against the template and enumerates the divergent resources. Change sets diff templates against the stack's stored model (so out-of-band edits are invisible to them), stack events only log CloudFormation-initiated operations, and blindly re-updating neither reports differences nor reliably fixes them.

How to reason it out
  1. Run drift detection on the stack.
  2. Review per-resource drift status: IN_SYNC, MODIFIED, or DELETED, with property-level differences for MODIFIED resources.
  3. Decide the source of truth: update the template to adopt the change, or restore the resource to the template's configuration.
  4. Re-run drift detection to confirm the stack returns to IN_SYNC.

Exam tip: A resource changed outside CloudFormation is the cue for drift detection — the one tool that diffs live configuration against the template.

CloudFormation, StackSets, and golden images: provisioning for SOA-C03 — the lesson that teaches this.

What SOA-C03 domain 3 tests, topic by topic

The official exam guide breaks Deployment, Provisioning, and Automation into 2 topics. The question bank follows the same split, so a weak topic shows up as a cluster of misses you can go back and read.

Published SOA-C03 practice questions per topic in Deployment, Provisioning, and Automation
TopicWhat it coversQuestions
Provision and maintain cloud resourcesExam guide task 3.1. Creating and managing AMIs and container images (EC2 Image Builder); managing resource stacks with CloudFormation and the AWS CDK and remediating deployment issues (subnet sizing, CloudFormation errors, permissions); provisioning and sharing resources across Regions and accounts (AWS RAM, CloudFormation StackSets); deployment strategies and third-party automation tools (Terraform, Git).20
Automate the management of existing resourcesExam guide task 3.2. Automating operational processes with Systems Manager; event-driven automation with Lambda, S3 Event Notifications, EventBridge, and AWS DevOps Agent.20
Total40

Revise Deployment, Provisioning, and Automation before you drill it

Other SOA-C03 domains

Deployment, Provisioning, and Automation: your questions

Deployment, Provisioning, and Automation is domain 3 of the SOA-C03 exam guide and carries 22% of the scored content — the heaviest of the 5 domains. On a 65-question paper that works out to roughly 14 questions, though AWS does not publish an exact per-domain count and individual exam forms vary.

Source

The domain weight and topic list on this page come from the official SOA-C03 exam guide.