अंतिम समीक्षा: मई 2026
साधारण Terraform के साथ MLA-C01 परीक्षा के AWS संसाधनों को बनाएं — एक समय में एक ब्लॉक, प्रत्येक परीक्षा डोमेन से जुड़ा हुआ। यही कोड OpenTofu पर भी काम करता है।
इस लैब के अंत तक, आप सादे Terraform का उपयोग करके SageMaker-आधारित ML प्लेटफॉर्म के कंट्रोल प्लेन को प्रावधानित कर चुके होंगे — प्रशिक्षण डेटा और मॉडल कलाकृतियों के लिए एक S3 बकेट, एक न्यूनतम-विशेषाधिकार वाला IAM रोल जिसे SageMaker मानता है, एक SageMaker मॉडल पैकेज समूह (वह रजिस्ट्री जो मॉडल संस्करणों को सूचीबद्ध करती है), और एक EventBridge नियम जो मॉडल-अनुमोदन घटनाओं पर प्रतिक्रिया करता है ताकि उत्पादन में पदोन्नति को स्वचालित किया जा सके।
हम जानबूझकर डेटा प्लेन — प्रशिक्षण कार्य, एंडपॉइंट, नोटबुक इंस्टेंस, स्टूडियो डोमेन — का प्रावधान करने से बचते हैं, क्योंकि वे सभी निष्क्रिय होने पर बिल करते हैं और एक लैब को बिलिंग जाल में बदल देंगे। एक बार कंट्रोल प्लेन स्थापित हो जाने के बाद, डेटा प्लेन इसमें आसानी से जुड़ जाता है: आप स्टेप 3 से भूमिका पर एक प्रशिक्षण कार्य इंगित करते हैं, यह अपनी कलाकृति को स्टेप 2 से बकेट में लिखता है, और स्टेप 4 से मॉडल पैकेज समूह में एक नया संस्करण पंजीकृत करता है।
प्रत्येक संसाधन सादा Terraform है। स्निपेट्स को एक ही main.tf में डालें, terraform init चलाएँ, फिर terraform apply को चरण-दर-चरण चलाएँ।
>= 1.5 या OpenTofu >= 1.6।us-east-1 के लिए AWS CLI प्रमाणित (SageMaker अधिकांश क्षेत्रों में उपलब्ध है; us-east-1 में SageMaker Pipelines सहित सबसे व्यापक सुविधा कवरेज है)।इस लैब में सब कुछ निष्क्रिय होने पर कुछ भी खर्च नहीं करता:
जो कुछ भी हमने जानबूझकर प्रावधानित नहीं किया, वहीं SageMaker का खर्च आता है:
एक बार जब आप प्रशिक्षण या अनुमान को इस लैब में जोड़ते हैं, तो बिल पर नज़र रखें। यह लैब जिस कंट्रोल प्लेन का प्रावधान करती है, वह सुरक्षित-से-चलने-वाला हिस्सा है।
मानक शुरुआत। SageMaker क्षेत्रीय है, और अधिकांश नई SageMaker सुविधाएँ (Pipelines, Model Cards, JumpStart) पहले us-east-1 और us-west-2 में आती हैं — सबसे कम आश्चर्य के लिए उनमें से एक चुनें।
terraform {
required_version = ">= 1.5"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.60"
}
}
}
provider "aws" {
region = "us-east-1"
default_tags {
tags = {
Project = "certlabpro-mla-c01"
ManagedBy = "terraform"
}
}
}प्रत्येक SageMaker प्रशिक्षण कार्य S3 से इनपुट डेटा पढ़ता है और अपनी मॉडल कलाकृति को वापस S3 में लिखता है — यह SageMaker द्वारा उजागर किया गया स्टोरेज इंटरफ़ेस है। हम एक फोल्डर कन्वेंशन (training-data/, model-artifacts/) के साथ एक बकेट बनाते हैं जो MLA-C01 संदर्भ वास्तुकला को दर्शाता है।
किसी भी ML डेटा स्टोर के लिए रेस्ट पर एन्क्रिप्शन गैर-परक्राम्य है — परीक्षा इसे Security, Compliance, and Governance for ML Solutions के तहत स्पष्ट रूप से परीक्षण करती है। हम यहां सरलता के लिए AES256 का उपयोग करते हैं; उत्पादन में, एक ग्राहक-प्रबंधित KMS कुंजी आपको अधिक बारीक ऑडिट ट्रेल देती है।
resource "aws_s3_bucket" "ml" {
bucket_prefix = "certlabpro-mla-c01-"
}
resource "aws_s3_bucket_public_access_block" "ml" {
bucket = aws_s3_bucket.ml.id
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
resource "aws_s3_bucket_server_side_encryption_configuration" "ml" {
bucket = aws_s3_bucket.ml.id
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}
resource "aws_s3_bucket_versioning" "ml" {
bucket = aws_s3_bucket.ml.id
versioning_configuration {
status = "Enabled"
}
}SageMaker प्रशिक्षण कार्य, एंडपॉइंट और पाइपलाइन सभी एक IAM भूमिका के तहत निष्पादित होते हैं। हम एक विश्वास नीति के साथ एक भूमिका बनाते हैं जो sagemaker.amazonaws.com का नाम देती है और इसकी अनुमतियों को ठीक उसी तक सीमित करती है जिसकी एक ML कार्यभार को आवश्यकता होती है: प्रशिक्षण-डेटा उपसर्ग से पढ़ना, मॉडल-कलाकृति उपसर्ग पर लिखना, और CloudWatch को लॉग उत्सर्जित करना। परीक्षा इस न्यूनतम-विशेषाधिकार आकार का बार-बार परीक्षण करती है।
लैब के लिए हम AWS-प्रबंधित AmazonSageMakerFullAccess नीति को ऊपर से जोड़ते हैं, क्योंकि हर SageMaker कार्रवाई को हाथ से कवर करना सैकड़ों पंक्तियों का है और MLA-C01 इसका परीक्षण नहीं कर रहा है। उत्पादन में आप इसे संकुचित करेंगे — यह एक अलग सख्त अभ्यास है।
resource "aws_iam_role" "sagemaker_exec" {
name = "certlabpro-mla-c01-sagemaker-exec"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [{
Effect = "Allow"
Principal = { Service = "sagemaker.amazonaws.com" }
Action = "sts:AssumeRole"
}]
})
}
resource "aws_iam_role_policy_attachment" "sagemaker_full" {
role = aws_iam_role.sagemaker_exec.name
policy_arn = "arn:aws:iam::aws:policy/AmazonSageMakerFullAccess"
}
resource "aws_iam_role_policy" "sagemaker_lab_bucket" {
name = "lab-bucket-read-write"
role = aws_iam_role.sagemaker_exec.id
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Effect = "Allow"
Action = ["s3:GetObject", "s3:ListBucket"]
Resource = [aws_s3_bucket.ml.arn, "${aws_s3_bucket.ml.arn}/training-data/*"]
},
{
Effect = "Allow"
Action = "s3:PutObject"
Resource = "${aws_s3_bucket.ml.arn}/model-artifacts/*"
},
]
})
}एक मॉडल पैकेज समूह SageMaker की मॉडल रजिस्ट्री है — एक ही मॉडल के कई संस्करणों के लिए एक नामित कंटेनर, प्रत्येक अपनी स्थिति के साथ (PendingManualApproval, Approved, Rejected)। MLA-C01 द्वारा परीक्षण की गई हर MLOps कहानी इस वस्तु से होकर गुजरती है: प्रशिक्षण पाइपलाइन एक नया संस्करण पंजीकृत करती है → MLOps इंजीनियर समीक्षा करता है → स्थिति Approved में बदल जाती है → CI/CD पाइपलाइन परिवर्तन को उठाती है और नए मॉडल को एंडपॉइंट पर रोल आउट करती है।
समूह का स्वयं कोई खर्च नहीं होता — यह मेटाडेटा है। एक बार जब यह मौजूद होता है, तो प्रशिक्षण कार्य और पाइपलाइन इसके खिलाफ RegisterModel को कॉल कर सकते हैं और SageMaker स्वचालित रूप से वंशावली को ट्रैक करता है। हम उस नींव को रख रहे हैं जिस पर स्टेप 5 में EventBridge नियम प्रतिक्रिया करेगा।
resource "aws_sagemaker_model_package_group" "main" {
model_package_group_name = "certlabpro-mla-c01-models"
model_package_group_description = "Lab-only model registry for the MLA-C01 walkthrough."
}प्रत्येक SageMaker मॉडल रजिस्ट्री कार्रवाई एक EventBridge इवेंट उत्सर्जित करती है — पंजीकरण, स्थिति परिवर्तन, विलोपन। MLA-C01 Deployment and Orchestration डोमेन इस सटीक पैटर्न का परीक्षण करता है: मॉडल अनुमोदन को अगले-चरण के स्वचालन (स्टेजिंग में डिप्लॉय करना, इंटीग्रेशन टेस्ट चलाना, ऑन-कॉल पेज करना) को कंसोल में बटन दबाने वाले मानव के बिना शुरू करना चाहिए।
हम एक EventBridge नियम बनाते हैं जो हमारे विशिष्ट मॉडल पैकेज समूह के लिए Approved स्थिति संक्रमणों से मेल खाता है, और डाउनस्ट्रीम प्लेसहोल्डर के रूप में एक SNS विषय को लक्षित करता है — उत्पादन में आप एक स्टेप फंक्शन स्टेट मशीन, एक लैम्डा, या एक कोडपाइपलाइन पाइपलाइन पर इंगित करेंगे। संरचना वही रहती है; केवल लक्ष्य ARN बदलता है।
इस अंतिम भाग के स्थापित होने के साथ, कंट्रोल-प्लेन श्रृंखला पूरी हो जाती है: एक प्रशिक्षण कार्य (डेटा-प्लेन, यहां प्रावधानित नहीं) स्टेप 2 से अपनी कलाकृति को S3 में लिखता है, इसे करने के लिए स्टेप 3 से भूमिका ग्रहण करता है, स्टेप 4 से मॉडल पैकेज समूह में एक नया संस्करण पंजीकृत करता है, और कोई भी अनुमोदन स्टेप 5 से EventBridge नियम के माध्यम से डाउनस्ट्रीम स्वचालन को ट्रिगर करता है। एक प्रशिक्षण कार्य को प्लग इन करें और लूप अपने आप चलता है।
resource "aws_sns_topic" "model_approvals" {
name = "certlabpro-mla-c01-model-approvals"
}
resource "aws_cloudwatch_event_rule" "model_approved" {
name = "certlabpro-mla-c01-model-approved"
description = "Fires when a model version in our registry is approved."
event_pattern = jsonencode({
source = ["aws.sagemaker"]
"detail-type" = ["SageMaker Model Package State Change"]
detail = {
ModelPackageGroupName = [aws_sagemaker_model_package_group.main.model_package_group_name]
ModelApprovalStatus = ["Approved"]
}
})
}
resource "aws_cloudwatch_event_target" "notify_sns" {
rule = aws_cloudwatch_event_rule.model_approved.name
arn = aws_sns_topic.model_approvals.arn
}
resource "aws_sns_topic_policy" "allow_events" {
arn = aws_sns_topic.model_approvals.arn
policy = jsonencode({
Version = "2012-10-17"
Statement = [{
Effect = "Allow"
Principal = { Service = "events.amazonaws.com" }
Action = "sns:Publish"
Resource = aws_sns_topic.model_approvals.arn
}]
})
}terraform destroy इस लैब में सब कुछ साफ-सुथरा ध्वस्त कर देता है। नोट्स:
force_destroy = false (सुरक्षित डिफ़ॉल्ट) है — यदि आपने इसमें कोई प्रशिक्षण डेटा अपलोड किया है, तो इसे ध्वस्त करने से पहले कंसोल के माध्यम से (या aws s3 rm s3://<bucket> --recursive) खाली करें।aws sagemaker delete-model-package के माध्यम से), फिर ध्वस्त करें।MLA-C01 कई SageMaker सतहों को कवर करता है जिन्हें यह लैब प्रावधानित नहीं करती है — ट्रेनिंग जॉब (कंप्यूट जो प्रति सेकंड बिल करता है), एंडपॉइंट (इंस्टेंस जो 24/7 बिल करते हैं), स्टूडियो डोमेन (बहु-उपयोगकर्ता IDE), नोटबुक इंस्टेंस (एकल-उपयोगकर्ता IDE जो भूल जाने पर आसानी से 24/7 बिल करता है), JumpStart (वन-क्लिक फाउंडेशन-मॉडल डिप्लॉयमेंट), फीचर स्टोर, मॉडल मॉनिटर, क्लेरिफाई (पूर्वाग्रह का पता लगाना), एज मैनेजर, ग्राउंड ट्रुथ (लेबलिंग), पाइपलाइन (इन सब के ऊपर ऑर्केस्ट्रेशन लेयर), और ऑटोपायलट।
हम कंट्रोल प्लेन पर टिके रहते हैं — वे हिस्से जिन्हें आप बिलिंग आश्चर्य के बिना चला सकते हैं — क्योंकि यही वह नींव है जिससे हर दूसरा MLA-C01 पैटर्न जुड़ता है। आपके खाते में एक प्रशिक्षण जॉब स्लॉट उस भूमिका और बकेट पर इंगित करता है जिसे इस लैब ने बनाया है। एक एंडपॉइंट डिप्लॉयमेंट इस रजिस्ट्री द्वारा संदर्भित मॉडल कलाकृति को पढ़ता है। पाइपलाइन इस लैब द्वारा बनाए गए समूह में पंजीकरण का समन्वय करती हैं।
डेटा-प्लेन के टुकड़ों के साथ हैंड्स-ऑन अभ्यास के लिए, सही कदम एक फॉलो-अप लैब है जो एक समय में उनमें से एक को जोड़ती है (एकल प्रशिक्षण जॉब जो एक बार चलती है और रुक जाती है; एक स्पष्ट बजट अलार्म के पीछे एक एकल एंडपॉइंट) — कभी भी एक साथ कई नहीं, क्योंकि लागत वास्तविक और संचयी होती है। बाकी का वैचारिक कवरेज इस सर्ट पेज के ब्राउज़, मार्गदर्शिका, और Editorial अनुभागों में रहता है।