Configuration GuideΒΆ
Table of ContentsΒΆ
OverviewΒΆ
This guide is your starting point for deploying the ML Provisioner. It walks you through selecting the correct configuration file for your environment and verifying that all prerequisite infrastructure is in place before you run a single Docker command.
Use this guide when:
You are deploying the ML Provisioner for the first time
You are onboarding a new client or environment
You are unsure which of the 20 configuration files matches your setup
What you will end up with:
The correct config file identified and populated for your scenario
Confirmation that all prerequisite infrastructure is in place
Readiness to run the full deployment sequence in USER_GUIDE.md
The decision tree has 4 steps:
Select your tier (starter / professional / enterprise)
Verify prerequisites and select your config file
Populate the config file with your values
Validate and deploy
If you already know your config file and prerequisites are in place, skip to Step 3 β Populate your config file.
Step 1 β Which tier have you purchased?ΒΆ
Answer |
Go to |
|---|---|
Starter |
|
Professional |
|
Enterprise |
Step 2A β StarterΒΆ
No VPC integration. No prerequisite infrastructure required.
What you get: SageMaker Model Registry, CodeCommit repositories (model-build, model-deploy) or S3 source, CodeBuild projects (build, deploy), CodePipeline pipelines (build-pipeline, deploy-pipeline), IAM roles, SSM Parameter Store outputs. Ideal for small teams and proof-of-concept projects.
What is your source control?
Answer |
Config file |
|---|---|
CodeCommit (no workload) |
|
CodeCommit (with workload) |
|
S3 (no workload) |
|
S3 (with workload) |
|
{prefix}={company}-{env}-{tenant}-{region}-{use_case}-mlWorkload variant: use this when you need multiple ML products for the same use case in the same environment (e.g.
realtimevsbatch). Theworkloadfield is appended toml_nameto keep resources unique.
Image: ml-provisioner:starter
Step 2B β ProfessionalΒΆ
No VPC integration. No prerequisite infrastructure required.
What you get: All Starter resources plus S3 artifacts bucket, EventBridge rule for automated pipeline triggers, CloudWatch dashboard, and IAM managed policies (build, deploy). Production-ready with enhanced monitoring and event-driven automation. Ideal for production workloads that donβt require VPC isolation.
What is your source control?
Answer |
Config file |
|---|---|
CodeCommit (no workload) |
|
CodeCommit (with workload) |
|
S3 (no workload) |
|
S3 (with workload) |
|
{prefix}={company}-{env}-{tenant}-{region}-{use_case}-ml
Image: ml-provisioner:professional
Step 2C β Enterprise PrerequisitesΒΆ
What you get: All Professional resources plus KMS encryption, VPC endpoints (SageMaker API, SageMaker Runtime, S3, STS), EC2 Security Group (standalone mode), CloudWatch compliance log group, metric filters, CloudWatch alarms, SNS topic and subscription for security alerts, and IAM permission boundary policy. Designed for regulated industries and enterprise workloads requiring VPC isolation, encryption at rest, and compliance monitoring.
Enterprise tier requires a VPC. Before selecting a config file, verify the following.
Prerequisite Check 1 β VPCΒΆ
Is your VPC deployed and available?
VPC_NAME={your-vpc-name} # e.g. globalbank-prod-c001-us-west-2-vpc
VPC_STACK_NAME=${VPC_NAME}-stack
AWS_REGION={your-aws-region} # e.g. us-west-2
aws cloudformation describe-stacks \
--stack-name ${VPC_STACK_NAME} \
--region ${AWS_REGION} \
--query 'Stacks[0].StackStatus' \
--output text
Answer |
Action |
|---|---|
β
Yes β VPC exists and is |
Continue to Prerequisite Check 2 |
β No β VPC does not exist |
STOP. Deploy your VPC using |
Prerequisite Check 2 β VPC SourceΒΆ
How will you supply VPC ID and subnet IDs to the config?
Answer |
vpc_source value |
What to verify |
|---|---|---|
From SSM Parameter Store (vpc-provisioner populated them) |
|
Verify the SSM paths exist β see below |
Hardcoded directly in the config file |
|
You have the VPC ID and subnet IDs ready |
If using SSM (parameter-store): verify the paths exist:
VPC_NAME={your-vpc-name} # e.g. globalbank-prod-c001-us-west-2-vpc
VPC_STACK_NAME=${VPC_NAME}-stack
AWS_REGION={your-aws-region} # e.g. us-west-2
aws ssm get-parameters-by-path \
--path /vpc/${VPC_NAME}/ \
--region ${AWS_REGION} \
--query 'Parameters[*].Name' \
--output table
Expected output must include:
/vpc/${VPC_NAME}/VPCId/vpc/${VPC_NAME}/PrivateSubnetIds
Answer |
Action |
|---|---|
β Both parameters present |
Continue to Prerequisite Check 3 |
β Parameters missing |
STOP. Run |
Prerequisite Check 3 β VPC Mode (SG Provisioner)ΒΆ
Who manages the Security Group for your VPC endpoints?
Answer |
vpc_mode value |
Action |
|---|---|---|
SG Provisioner manages it |
|
Verify SG stack exists β see below |
ML Provisioner creates its own |
|
No check needed β continue to Step 2D |
If using sg-provisioner: verify the SG stack and SSM params exist:
SGPROV_NAME={your-sgprov-name} # e.g. globalbank-prod-c001-us-west-2-sg
SGPROV_STACK_NAME=${SGPROV_NAME}-stack # e.g. globalbank-prod-c001-us-west-2-sg-stack
AWS_REGION={your-aws-region} # e.g. us-west-2
aws cloudformation describe-stacks \
--stack-name ${SGPROV_STACK_NAME} \
--region ${AWS_REGION} \
--query 'Stacks[0].StackStatus' \
--output text
aws ssm get-parameters-by-path \
--path /sg/${SGPROV_NAME}/ \
--region ${AWS_REGION} \
--query 'Parameters[*].Name' \
--output table
Answer |
Action |
|---|---|
β
SG stack is |
Continue to Step 2D |
β SG stack does not exist or SSM params missing |
STOP. Deploy your SG stack using |
Step 2D β Enterprise Config SelectionΒΆ
Answer the following four questions, then find your config file in the table below.
Question |
Options |
|---|---|
Source control |
|
VPC mode |
|
VPC source |
|
Route table IDs needed? |
|
Workload variant? |
|
Enterprise Config MatrixΒΆ
SC |
VPC mode |
VPC source |
RTB |
Workload |
Config file suffix |
|---|---|---|---|---|---|
codecommit |
sgprov |
ssm |
β |
no |
|
codecommit |
sgprov |
direct |
β |
no |
|
codecommit |
standalone |
ssm |
β |
no |
|
codecommit |
standalone |
ssm |
β |
yes |
|
codecommit |
standalone |
direct |
no |
no |
|
codecommit |
standalone |
direct |
yes |
no |
|
s3 |
sgprov |
ssm |
β |
no |
|
s3 |
sgprov |
direct |
β |
no |
|
s3 |
standalone |
ssm |
β |
no |
|
s3 |
standalone |
ssm |
β |
yes |
|
s3 |
standalone |
direct |
no |
no |
|
s3 |
standalone |
direct |
yes |
no |
|
RTB (route_table_ids): only relevant for
vpc_source: direct. Set toyesif you want the S3 Gateway VPC endpoint route associations configured automatically at deploy time. Ifno, your networking team manages route table associations manually.Workload variant: RTB + workload combined is not currently a supported combination. Use the workload variant only with
vpc_source: ssm.
Full config filename = {company}-{env}-{tenant}-{region}-{use_case}-ml + suffix above.
Image: ml-provisioner:enterprise
Step 3 β Populate your config fileΒΆ
Copy the matching example config from ml/configs/ and update the fields with your values.
Full example configs per tier are shown below.
Starter ExampleΒΆ
client:
company_name: TechCorp
company_prefix: techcorp
account_id: "123456789012"
tenant_id: "a001"
environment:
env: prod
region: us-west-2
ml_product:
use_case: customer-churn
tier: starter
source_control: codecommit # or s3
product_name_override: "" # leave empty to auto-generate ml_name
workload: "" # leave empty unless using workload variant
tags:
cost_center: ML Platform
project: Customer Churn Prediction
owner: ml-engineering-team
Professional ExampleΒΆ
client:
company_name: Edge Analytics Corp
company_prefix: edge
account_id: "123456789012"
tenant_id: "b001"
environment:
env: prod
region: us-west-2
ml_product:
use_case: fraud-detection
tier: professional
source_control: codecommit # or s3
product_name_override: ""
workload: "" # leave empty unless using workload variant
log_retention_days: 90 # optional β minimum 90
tags:
cost_center: Fraud Operations
project: Real-time Fraud Detection System
owner: fraud-ml-engineering-team
Enterprise Example (standalone + SSM)ΒΆ
client:
company_name: Global Bank
company_prefix: globalbank
account_id: "123456789012"
tenant_id: "c001"
environment:
env: prod
region: us-west-2
ml_product:
use_case: demand-forecasting
tier: enterprise
source_control: codecommit # or s3
alerts_email: ml-alerts@globalbank.com
product_name_override: ""
workload: "" # leave empty unless using workload variant
log_retention_days: 365 # optional β minimum 90, increase for compliance (PCI-DSS/SOC2: 365, HIPAA: 2190)
vpc_integration:
mode: standalone # or sg-provisioner
vpc_source: parameter-store
vpc_parameter_store_path: /vpc/globalbank-prod-c001-us-west-2-vpc/VPCId
subnet_parameter_store_path: /vpc/globalbank-prod-c001-us-west-2-vpc/PrivateSubnetIds
tags:
cost_center: Risk Management
project: Demand Forecasting Platform
owner: ml-platform-team
Field ReferenceΒΆ
All TiersΒΆ
Field |
Location |
Description |
|---|---|---|
|
|
Your company display name |
|
|
Short lowercase prefix used in resource names |
|
|
AWS account ID (12 digits) |
|
|
Tenant identifier (e.g. |
|
|
Environment name (e.g. |
|
|
AWS region (e.g. |
|
|
ML use case name β used in resource naming only |
|
|
Must match your purchased tier |
|
|
|
|
|
Leave empty |
Enterprise Only β alertsΒΆ
Field |
Location |
Description |
|---|---|---|
|
|
Email for SNS security alerts β enterprise tier only |
Enterprise Only β vpc_source: parameter-storeΒΆ
Field |
Description |
|---|---|
|
SSM path for VPC ID (e.g. |
|
SSM path for subnet IDs (e.g. |
Enterprise Only β vpc_source: directΒΆ
Field |
Description |
|---|---|
|
VPC ID (e.g. |
|
List of private subnet IDs |
|
List of route table IDs β leave |
S3 Source Control OnlyΒΆ
Field |
Description |
|---|---|
|
S3 bucket/prefix path for pipeline source artifacts |
Step 4 β Validate and deployΒΆ
Once your config is populated, refer to USER_GUIDE.md for the complete 12-step deployment sequence.
Quick Reference β Config File by ScenarioΒΆ
Starter (ml-provisioner:starter)ΒΆ
Scenario |
Config file |
|---|---|
CodeCommit |
|
CodeCommit + workload |
|
S3 |
|
S3 + workload |
|
Professional (ml-provisioner:professional)ΒΆ
Scenario |
Config file |
|---|---|
CodeCommit |
|
CodeCommit + workload |
|
S3 |
|
S3 + workload |
|
Enterprise (ml-provisioner:enterprise)ΒΆ
Scenario |
Config file |
|---|---|
CodeCommit + sgprov + SSM |
|
CodeCommit + sgprov + direct |
|
CodeCommit + standalone + SSM |
|
CodeCommit + standalone + SSM + workload |
|
CodeCommit + standalone + direct |
|
CodeCommit + standalone + direct + rtb |
|
S3 + sgprov + SSM |
|
S3 + sgprov + direct |
|
S3 + standalone + SSM |
|
S3 + standalone + SSM + workload |
|
S3 + standalone + direct |
|
S3 + standalone + direct + rtb |
|
{prefix}={company}-{env}-{tenant}-{region}-{use_case}-ml