נבדק לאחרונה: מאי 2026
בנו את שירותי AWS של בחינת CLF-C02 עם Terraform פשוט — בלוק אחד בכל פעם, כאשר כל אחד מהם מקושר בחזרה לתחום במבחן. אותו הקוד עובד גם ב-OpenTofu.
בסוף מעבדת ידיים זו תהיו מוכנים, עם Terraform פשוט, לבנות את עומס העבודה הראשון והקטן ביותר ב-AWS — דלי S3 פרטי מוצפן, תפקיד IAM עם הרשאות מינימליות, מופע EC2 בחינם, ואזעקת חיובים שתשלח לכם דוא"ל לפני ש-AWS תעשה זאת. כל משאב ממופה לאחד מארבעת תחומי הבחינה של CLF-C02.
כל משאב הוא Terraform פשוט — אותו קוד עובד ללא שינוי ב-OpenTofu. אין משתנים, אין מודולים, אין מצב מרוחק. שחררו את קטעי הקוד הבאים לקובץ main.tf בודד, הפעילו terraform init פעם אחת, ואז terraform apply צעד אחר צעד.
>= 1.5 או OpenTofu >= 1.6.us-east-1 מכיוון ששם מרוכזים נתוני החיוב.כל המשאבים במעבדה זו מתאימים לשכבה החינמית של AWS Free Tier עבור חשבונות חדשים (12 חודשים ממועד ההרשמה):
t3.micro: 750 שעות/חודש בחינם.מחוץ לשכבה החינמית, העלות הכוללת של המערך עומדת על פחות מ-10 דולר לחודש גם בהפעלה 24/7. עם זאת: משאבים במצב סרק עדיין יחויבו לאחר שפג תוקף השכבה החינמית — השמידו אותם כשתסיימו. אזעקת החיוב שנבנה בשלב 4 היא רשת הביטחון שלכם אם תשכחו.
כל עומס עבודה מתחיל בהודעה ל-Terraform איזו גרסה של עצמה אנו מצפים ואיזה ספק AWS נשתמש. אנו מצמידים את ספק AWS ל-~> 5.60 וברירת המחדל היא us-east-1 — האזור הוותיק ביותר של AWS, שבו נתוני חיוב מרוכזים ורוב השירותים מופעלים תחילה.
הוסיפו זאת לקובץ main.tf חדש כדי להתחיל. כל מה שיבוא בהמשך המעבדה נמצא באותו קובץ.
בלוק ה-default_tags בספק מצרף את אותן תגיות לכל משאב הניתן לתיוג שניצור. AWS Cost Explorer + Cost Allocation Reports מקבצים הוצאות לפי תגיות — ביצוע זה נכון מהיום הראשון הוא השקעת בקרת העלויות הזולה ביותר שתעשו אי פעם, והיא ממופה ישירות לתחום חיוב ותמחור של CLF-C02.
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-clf-c02"
ManagedBy = "terraform"
Environment = "lab"
}
}
}S3 היא שכבת האחסון שמאחורי כמעט כל עומס עבודה ב-AWS — כל תחום CLF-C02 מתייחס אליה. אנו יוצרים דלי אחד, נועלים את הגישה הציבורית (ברירת מחדל לדליים חדשים מאז 2023, אך עדיף להיות מפורש), ומפעילים הצפנה בצד השרת עם AES256.
שלושת המשאבים הללו יחד — דלי, חסימת גישה ציבורית, הצפנה — הם ברירת המחדל המינימלית והאחראית לכל דלי S3. בחינת CLF-C02 ממסגרת זאת כ-מודל האחריות המשותפת: AWS מספקת לנו פלטפורמה מאובטחת, אך אנו מגדירים הצפנה + בקרות גישה. הדלי הוא חלק מ"אחריות הלקוח".
resource "aws_s3_bucket" "app_data" {
bucket_prefix = "certlabpro-clf-c02-"
}
resource "aws_s3_bucket_public_access_block" "app_data" {
bucket = aws_s3_bucket.app_data.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" "app_data" {
bucket = aws_s3_bucket.app_data.id
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}EC2 הוא שירות ה-AWS שכל מועמד CLF-C02 מצופה להכיר היטב. אנו משתמשים בסוג המופע הקטן ביותר הזכאי לשכבה החינמית (t3.micro) ומעניקים לו פרופיל מופע IAM כדי שיוכל לקרוא מהדלי שיצרנו בשלב 2 — מבלי להטמיע אי פעם פרטי זיהוי של AWS במופע. זוהי התבנית הקנונית של AWS לאימות יישום-ל-AWS והיא מופיעה בגרסאות שאלות מרובות ב-CLF-C02.
בלוק ה-data מאחזר את ה-Amazon Linux 2023 AMI העדכני ביותר באופן דינמי — הצמדה למזהה AMI ספציפי הייתה שוברת את המעבדה כאשר AWS מפסיקה את התמיכה בתמונה. קבוצת האבטחה מונעת את כל התעבורה הנכנסת; היינו מוסיפים כללי כניסה בעומס עבודה אמיתי, אך עבור מעבדה זו, מופע נעול הוא ברירת המחדל הנכונה.
data "aws_ami" "al2023" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["al2023-ami-*-kernel-6.1-x86_64"]
}
}
resource "aws_iam_role" "ec2_app" {
name = "certlabpro-clf-c02-ec2-app"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [{
Effect = "Allow"
Principal = { Service = "ec2.amazonaws.com" }
Action = "sts:AssumeRole"
}]
})
}
resource "aws_iam_role_policy" "ec2_app_s3_read" {
name = "read-app-data-bucket"
role = aws_iam_role.ec2_app.id
policy = jsonencode({
Version = "2012-10-17"
Statement = [{
Effect = "Allow"
Action = ["s3:GetObject", "s3:ListBucket"]
Resource = [aws_s3_bucket.app_data.arn, "${aws_s3_bucket.app_data.arn}/*"]
}]
})
}
resource "aws_iam_instance_profile" "ec2_app" {
name = "certlabpro-clf-c02-ec2-app"
role = aws_iam_role.ec2_app.name
}
resource "aws_security_group" "ec2_app" {
name = "certlabpro-clf-c02-ec2-app"
description = "Locked down by default; add ingress rules per workload."
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "app" {
ami = data.aws_ami.al2023.id
instance_type = "t3.micro"
iam_instance_profile = aws_iam_instance_profile.ec2_app.name
vpc_security_group_ids = [aws_security_group.ec2_app.id]
metadata_options {
http_endpoint = "enabled"
http_tokens = "required" # IMDSv2 only — required for SCS-C03 best practice
}
}CLF-C02 מקדישה 16% מהבחינה ל-חיוב, תמחור ותמיכה. הדבר הקונקרטי ביותר שאתם יכולים לבנות בתחום זה הוא אזעקת חיובים ב-CloudWatch: AWS מפרסמת חיובים משוערים ברמת החשבון כמטריקה, ואנו קובעים סף שמעליו אנו רוצים לדעת על כך. האזעקה מפרסמת לנושא SNS, אשר שולח לנו דוא"ל.
אזעקות חיובים חייבות להיווצר ב-us-east-1 ללא קשר למקום שבו פועלים עומסי העבודה שלכם — לכן בחרנו ב-us-east-1 כברירת מחדל בשלב 1. יהיה עליכם גם להפעיל התראות חיוב פעם אחת, במסוף החשבון ב-Billing → Billing preferences → Receive Billing Alerts. Terraform אינו יכול להחליף זאת; זוהי הגדרת רמת חשבון מחוץ לתשתית כקוד.
לאחר terraform apply, AWS שולחת דוא"ל אישור לכתובת שב-email_endpoint — לחצו על אישור מנוי פעם אחת, והאזעקה אכן תגיע אליכם כאשר הסף ייחצה.
resource "aws_sns_topic" "billing_alerts" {
name = "certlabpro-clf-c02-billing-alerts"
}
resource "aws_sns_topic_subscription" "billing_alerts_email" {
topic_arn = aws_sns_topic.billing_alerts.arn
protocol = "email"
endpoint = "you@example.com" # replace with your real email
}
resource "aws_cloudwatch_metric_alarm" "monthly_bill_over_10" {
alarm_name = "certlabpro-clf-c02-monthly-bill-over-10-usd"
comparison_operator = "GreaterThanThreshold"
evaluation_periods = 1
metric_name = "EstimatedCharges"
namespace = "AWS/Billing"
period = 21600 # 6 hours — billing metric is slow-moving
statistic = "Maximum"
threshold = 10
alarm_description = "Estimated monthly AWS charges exceeded $10 USD."
alarm_actions = [aws_sns_topic.billing_alerts.arn]
dimensions = {
Currency = "USD"
}
}terraform destroy סטנדרטי מפרק את כל מה שבמעבדה זו. שתי הערות:
Project = certlabpro-clf-c02 ואישור ששום דבר לא נשאר.CLF-C02 מכסה קטלוג שירותים רחב — RDS, Lambda, פרטי VPC, CloudFront, Route 53, ECS, EKS, Aurora, Elastic Beanstalk, AppSync, ועוד רבים. בכוונה לא אנו מקימים אותם במעבדת יסוד זו.
מטרת CLF-C02 היא שליטה מושגית רחבה, לא הקמה מעמיקה של שירותים ספציפיים. ארבעת הצעדים לעיל נוגעים במשאב אחד מכל אחד מארבעת תחומי הבחינה — מושגי ענן (IAM + S3 כפרימיטיבים של פלטפורמה ואחסון), אבטחה ותאימות (IAM עם הרשאות מינימליות, הצפנה במנוחה, IMDSv2), טכנולוגיות ושירותי ענן (EC2 כשירות המחשוב הקנוני), ו-חיוב, תמחור ותמיכה (אזעקת חיובים ב-CloudWatch). זוהי הצורה הנכונה לבחינה.
לכיסוי שירות-אחר-שירות, ראו את קטעי העיון וה-Editorial בדף הסמכה זה — הם מפנים לכל שירות בהיקף CLF-C02 עם תיאורים קצרים וקשרים לתחומי הבחינה. הערך המעשי של מעבדה זו הוא לראות כיצד ארבעת העמודים מתחברים ביום הראשון, ולא בסיור בכל 200+ שירותי AWS.