Based on the MLA-C01 exam guideReport an error
We coded workflows with Pipelines (Day 1), managed versions and approvals with the Registry (Day 2), automated everything from commit to deployment with CI/CD (Day 3), and standardized it with IaC and orchestrators (Day 4). Now we connect it all into one chain.
[Code push] → CodePipeline(Build) → CodeBuild → SageMaker Pipeline
(preprocess → train → evaluate → ConditionStep[accuracy gate] → RegisterModel)
↓ Model is registered in the Registry as PendingManualApproval
[Reviewer approves: Approved]
↓ EventBridge detects the approval event
CodePipeline(Deploy) → deploy to staging with CloudFormation → automated tests
↓ Manual approval gate
Deploy to production endpointThis one diagram is the whole week. If you can name the service that implements each arrow, you are prepared for the exam.
| Link in the chain | Service responsible | Without this link |
|---|---|---|
| Detecting code changes | CodePipeline source stage | A person has to run it by hand every time |
| Running commands | CodeBuild (buildspec.yml) | No compute to start the pipeline |
| Training/evaluation order | SageMaker Pipelines (DAG) | Order and dependencies exist only in someone's head |
| Quality verdict | ConditionStep | A model that misses the bar is registered anyway |
| Versions and approval | Model Registry | Cannot prove what was deployed |
| Approval detection | EventBridge | Approving triggers nothing |
| Deployment execution | CodePipeline + CloudFormation | Endpoints are updated by hand |
| Production control | ManualApproval action | Defects reach users immediately |
💡 Related theory: The three core principles of MLOps are automation, reproducibility, and governance. Automation replaces manual intervention with triggers and pipelines; reproducibility guarantees the same result by version-controlling code, data, and infrastructure; governance tracks and controls who approved and deployed what. Every service this week is a tool that implements at least one of these three.
| MLOps principle | Implementing tools | Where this week |
|---|---|---|
| Automation | EventBridge, CodePipeline, CodeBuild, SageMaker Projects | Days 3-4 |
| Reproducibility | SageMaker Pipelines (parameters, DAG), CloudFormation/CDK | Days 1, 4 |
| Governance | Model Registry (approval status, Lineage), ManualApproval action | Days 2-3 |
buildspec.yml), CodePipeline (orchestration), CloudFormation (deployment), EventBridge (trigger).Approved in the Registry and the ManualApproval in CodePipeline are different decisions..sync.The easily confused comparisons, pinned down in tables.
| Scenario keyword | Correct tool |
|---|---|
| SageMaker-job-centric, lineage/Registry integration | SageMaker Pipelines |
| Orchestrating multiple AWS services (Lambda/Glue/SNS, etc.) | Step Functions |
| Reproduce and version-control infrastructure as code | CloudFormation / CDK |
| Start a workflow at a set time or on an event | EventBridge |
| Existing Airflow assets, hybrid, multi-cloud | MWAA |
| Quickly stand up MLOps CI/CD infrastructure from a template | SageMaker Projects |
| Model version tracking, approval, auditing | Model Registry |
| Register only when the accuracy bar is met | ConditionStep in Pipelines |
| Automatic deployment on model approval | Registry approval → EventBridge → CodePipeline |
| Human control right before production release | CodePipeline ManualApproval action |
| Mark a below-threshold result as a failure and notify | else_steps=[FailStep] in ConditionStep |
| Run the same definition differently for dev/staging/prod | Pipeline Parameter |
The three workflow tools appear side by side especially often, so memorize them axis by axis.
| Comparison axis | SageMaker Pipelines | Step Functions | MWAA (Airflow) |
|---|---|---|---|
| Scope covered | Centered on SageMaker jobs | AWS services broadly | AWS plus on-premises and external |
| Lineage/Registry integration | Natively strong | Weak (wire it yourself) | Weak |
| Operating model | Managed (billed per job) | Serverless | Always-on environment (idle cost) |
| Definition style | SageMaker Python SDK | State machine (JSON/ASL) | Python DAG + operators |
| Deciding factor | "SageMaker alone is enough" | "Many steps live outside SageMaker" | "We already use Airflow" |
# Synthesis concept code: at the end of the pipeline, register if the condition passes → approval triggers deployment
# 1) Pipelines: ConditionStep(if_steps=[RegisterModel]) → quality gate
# 2) Registry: ModelApprovalStatus = "Approved" → governance
# 3) EventBridge: ModelApprovalStatus=["Approved"] pattern → CD trigger
# 4) CodePipeline + CloudFormation: staging→approval→production → safe deploymentThe exam does not only ask front to back. It also asks the reverse question: "prove where the model now running in production came from."
Production endpoint
│ EndpointConfig → Model
▼
Model Package (version N) ← Model Registry
│ approval status · approver · ApprovalDescription
│ ModelMetrics (evaluation metrics)
▼
Training Job ← with which Estimator and hyperparameters
│ ModelArtifacts.S3ModelArtifacts
▼
Processing Job (preprocessing) ← with which input data
▼
Raw S3 dataset · Git commit hash| Audit question | Where the answer lives |
|---|---|
| Which version is deployed right now | EndpointConfig → Model → Model Package ARN |
| What was that version's performance | ModelMetrics on the Model Package |
| Who approved it and when | Approval status change history, ApprovalDescription |
| What data was it trained on | Lineage → Training Job → input channel S3 path |
| Why did this model pass | ConditionStep result of the pipeline execution |
default_value kills runtime injection.Approved in the Registry (the decision to put it on the deployment flow) and ManualApproval in CodePipeline (the decision to release to production) are different gates.| Situation | Answer |
|---|---|
| Retraining must run automatically every day at dawn | EventBridge schedule rule → pipeline execution |
| You approved, but deployment does not start | Check the EventBridge rule pattern and target connection |
| Steps run simultaneously with no order | Add dependencies through output references or depends_on |
| You must submit the deployed model's provenance for an audit | Model Registry + SageMaker Lineage |
| The new model is bad and must be reverted immediately | Redeploy with the previous approved version's ARN (rollback) |
| dev/prod endpoint configurations differ from each other | Unify them with a CloudFormation/CDK template |
| A Glue ETL and a Lambda notification must be tied into one flow | Step Functions |
| A below-threshold run ended as a success and nobody noticed | Explicit failure with else_steps=[FailStep] |
| Preprocessing reruns on every execution and costs too much | CacheConfig on the steps that do not change |
| On-premises jobs must be tied into one DAG | MWAA |
| You must build the repository, pipeline, and Registry from scratch | SageMaker Projects template |
| Approval is automatic, but a human checks only the production release | Automatic approval + CodePipeline ManualApproval |
💡 Concept: The fastest way to solve this week's questions is to decide the layer first. Decide which of four layers is being asked: "what exists (IaC) / what runs in what order (workflow) / when it starts (trigger) / who is accountable (governance)". Usually two of the four answer choices are tools from other layers and are eliminated immediately.
Next week we move on to monitoring and observability for deployed models.
Click a choice to reveal the answer and explanation.
Question 1
Which of the following is the LEAST appropriate pairing of the three MLOps principles (automation, reproducibility, governance) and the tool that implements them?
Question 2
One ML workflow passes through multiple services as Glue ETL → SageMaker training → Lambda post-processing → SNS notification, and another workflow consists only of SageMaker preprocessing → training → evaluation → registration. What is the most suitable orchestrator for each?
Question 3
You want to block registration if the model evaluation accuracy is below the threshold and, after approval, automatically deploy all the way to production. What is the correct connection of components?
Question 4
An organization already runs complex dependencies, including on-premises ones, as Apache Airflow DAGs. Which option correctly pairs the recommended tool for continuing them on AWS as a managed service with the recommended tool for starting a completely new project inside SageMaker?
Question 5
In standard MLOps using SageMaker Projects, which is correct about what a "code push" and a "model Approved" each trigger?