Zuletzt überprüft: Mai 2026
Erstellen Sie die AWS-Dienste der CLF-C02-Prüfung mit reinem Terraform — ein Block nach dem anderen, jeweils abgestimmt auf eine Prüfungsdomäne. Derselbe Code funktioniert auch mit OpenTofu.
Am Ende dieses Labs werden Sie mit einfachem Terraform die kleinste realistische erste AWS-Workload bereitgestellt haben – einen privaten verschlüsselten S3-Bucket, eine IAM-Rolle mit minimalen Berechtigungen, eine kostenlose EC2-Instanz und einen Abrechnungsalarm, der Sie per E-Mail benachrichtigt, bevor es AWS tut. Jede Ressource ist einem der vier CLF-C02-Prüfungsbereiche zugeordnet.
Jede Ressource ist einfaches Terraform – derselbe Code funktioniert ohne Änderungen mit OpenTofu. Es gibt keine Variablen, keine Module, keinen Remote-State. Fügen Sie die folgenden Code-Snippets in eine einzelne main.tf ein, führen Sie einmal terraform init aus und dann Schritt für Schritt terraform apply.
>= 1.5 oder OpenTofu >= 1.6.us-east-1, da dort Abrechnungsdaten zentralisiert sind.Alle Ressourcen in diesem Lab passen in das kostenlose AWS-Kontingent für neue Konten (12 Monate ab Registrierung):
t3.micro Instanz: 750 Stunden/Monat kostenlos.Außerhalb des kostenlosen Kontingents kostet der gesamte Stack selbst bei 24/7-Betrieb unter 10 $/Monat. Allerdings: Ungenutzte Ressourcen werden nach Ablauf des kostenlosen Kontingents weiterhin berechnet – zerstören Sie sie, wenn Sie fertig sind. Der Abrechnungsalarm, den wir in Schritt 4 einrichten, ist Ihr Sicherheitsnetz, falls Sie es vergessen.
Jede Workload beginnt damit, Terraform mitzuteilen, welche Version wir erwarten und welchen AWS-Provider wir verwenden werden. Wir fixieren den AWS-Provider auf ~> 5.60 und verwenden standardmäßig us-east-1 – die älteste AWS-Region, in der Abrechnungsdaten zentralisiert sind und die meisten Dienste zuerst gestartet werden.
Fügen Sie dies zum Start in eine neue main.tf ein. Alles Folgende im Lab befindet sich in derselben Datei.
Der default_tags-Block im Provider fügt dieselben Tags an jede taggbare Ressource an, die wir erstellen werden. AWS Cost Explorer + Kostenallokationsberichte gruppieren Ausgaben nach Tags – dies am ersten Tag richtig zu machen, ist die günstigste Kostenkontrollinvestition, die Sie je tätigen werden, und es entspricht direkt dem CLF-C02-Prüfungsbereich Billing and Pricing.
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 ist die Speicherschicht hinter nahezu jeder AWS-Workload – jeder CLF-C02-Bereich bezieht sich darauf. Wir erstellen einen Bucket, sperren den öffentlichen Zugriff (standardmäßig aktiviert für neue Buckets seit 2023, aber explizit ist besser) und aktivieren die serverseitige Verschlüsselung mit AES256.
Diese drei Ressourcen zusammen – Bucket, Public-Access-Block, Verschlüsselung – sind der verantwortungsvollste Standard für jeden S3-Bucket. Die CLF-C02-Prüfung fasst dies als das Modell der geteilten Verantwortung zusammen: AWS stellt uns eine sichere Plattform zur Verfügung, aber wir konfigurieren Verschlüsselung und Zugriffssteuerungen. Der Bucket ist Teil der „Kundenverantwortung“.
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 ist der AWS-Dienst, den jeder CLF-C02-Kandidat aus dem Effeff kennen sollte. Wir verwenden den kleinsten für das kostenlose Kontingent qualifizierten Instanztyp (t3.micro) und geben ihm ein IAM-Instanzprofil, damit er aus dem in Schritt 2 erstellten Bucket lesen kann – ohne jemals AWS-Anmeldeinformationen auf der Instanz einzubetten. Dies ist das kanonische AWS-Muster für die Authentifizierung von Anwendung zu AWS und taucht in mehreren CLF-C02-Fragevarianten auf.
Der data-Block ruft das neueste Amazon Linux 2023 AMI dynamisch ab – das Festlegen auf eine bestimmte AMI-ID würde das Lab unterbrechen, wenn AWS das Image aus dem Verkehr zieht. Die Sicherheitsgruppe verweigert den gesamten eingehenden Datenverkehr; in einer realen Workload würden wir Ingress-Regeln hinzufügen, aber für dieses Lab ist eine gesperrte Instanz der richtige Standard.
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 widmet 16% der Prüfung den Bereichen Abrechnung, Preisgestaltung und Support. Das Konkreteste, was Sie in diesem Bereich aufbauen können, ist ein CloudWatch-Abrechnungsalarm: AWS veröffentlicht geschätzte Kontogebühren als Metrik, und wir legen einen Schwellenwert fest, ab dem wir darüber informiert werden möchten. Der Alarm veröffentlicht an ein SNS-Thema, das uns eine E-Mail sendet.
Abrechnungsmetrik-Alarme müssen in us-east-1 erstellt werden, unabhängig davon, wo Ihre Workloads laufen – deshalb haben wir in Schritt 1 standardmäßig us-east-1 verwendet. Sie müssen auch Abrechnungswarnungen einmal in der Konto-Konsole unter Abrechnung → Abrechnungspräferenzen → Abrechnungswarnungen erhalten aktivieren. Terraform kann dies nicht umschalten; es ist eine Einstellung auf Kontoebene außerhalb von Infrastructure-as-Code.
Nach terraform apply sendet AWS eine Bestätigungs-E-Mail an die Adresse in email_endpoint – klicken Sie einmal auf Abonnement bestätigen, und der Alarm wird Sie dann tatsächlich erreichen, wenn der Schwellenwert überschritten wird.
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"
}
}Ein standardmäßiges terraform destroy entfernt alles in diesem Lab. Zwei Hinweise:
Project = certlabpro-clf-c02 zu durchsuchen und zu bestätigen, dass nichts mehr vorhanden ist.CLF-C02 deckt einen breiten Dienstkatalog ab – RDS, Lambda, VPC-Details, CloudFront, Route 53, ECS, EKS, Aurora, Elastic Beanstalk, AppSync und viele mehr. Wir stellen diese in diesem Grundlagenlab bewusst nicht bereit.
Das Ziel von CLF-C02 ist eine breite konzeptionelle Kenntnis, nicht eine tiefe Dienst-für-Dienst-Bereitstellung. Die vier obigen Schritte berühren jeweils eine Ressource aus jedem der vier Prüfungsbereiche – Cloud-Konzepte (IAM + S3 als Plattform- und Speicher-Grundelemente), Sicherheit und Compliance (IAM mit minimalen Rechten, Verschlüsselung im Ruhezustand, IMDSv2), Cloud-Technologie und -Dienste (EC2 als kanonischer Compute-Dienst) und Abrechnung, Preisgestaltung und Support (der CloudWatch-Abrechnungsalarm). Das ist die richtige Form für die Prüfung.
Für eine Dienst-für-Dienst-Abdeckung sehen Sie sich die Abschnitte Durchsuchen und Editorial dieser Zertifizierungsseite an – sie verweisen auf jeden Dienst im CLF-C02-Umfang mit einzeiligen Beschreibungen und Prüfungsbereichsbezügen. Der praktische Wert dieses Labs liegt darin, zu sehen, wie die vier Säulen am ersten Tag miteinander verbunden sind, und nicht darin, alle über 200 AWS-Dienste zu erkunden.