DevOps & Cloud
AWS Cloud-Infrastruktur: EC2, S3, CloudFront & Lambda Leitfaden
AWS (Amazon Web Services) bietet eine umfassende Cloud-Infrastruktur zum skalierbaren und zuverlaessigen Hosting moderner Anwendungen. Mit EC2 erhalten Sie virtuelle Server, S3 bietet Objektspeicher, CloudFront liefert CDN-Funktionen, Lambda ermoeglicht serverlose Funktionen und VPC schafft isolierte Netzwerkarchitekturen. In diesem Artikel zeige ich, wie ich die AWS-Cloud-Infrastruktur in Produktionsumgebungen effektiv einsetze.
EC2: Verwaltung virtueller Server
Die EC2-Instance-Auswahl sollte auf den CPU-, Speicher- und Netzwerkanforderungen Ihrer Anwendung basieren:
- t3.micro/t3.small: Entwicklungsumgebungen und Anwendungen mit geringem Datenverkehr
- t3.medium/t3.large: Mittelgrosse API-Server und Webanwendungen
- c5/c6i Serie: CPU-intensive Operationen (Videocodierung, Datenverarbeitung)
- r5/r6i Serie: Speicherintensive Anwendungen (In-Memory-Cache, Datenbanken)
# Security Group erstellen
aws ec2 create-security-group \
--group-name api-server-sg \
--description "API Server Security Group" \
--vpc-id vpc-0abc123def456
# HTTP- und SSH-Ports oeffnen
aws ec2 authorize-security-group-ingress \
--group-id sg-0abc123 \
--protocol tcp --port 80 --cidr 0.0.0.0/0
# EC2-Instance starten
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type t3.medium \
--key-name my-key-pair \
--security-group-ids sg-0abc123 \
--subnet-id subnet-0abc123 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=api-server},{Key=Environment,Value=production}]'Hohe Verfuegbarkeit mit Auto Scaling
In Produktionsumgebungen reicht eine einzelne EC2-Instance nicht aus. Mit einer Auto Scaling Group (ASG) bauen Sie eine Architektur auf, die automatisch auf Verkehrsspitzen reagiert. Ich empfehle die Verwendung einer Target-Tracking-Scaling-Policy, die neue Instances hinzufuegt, wenn die CPU-Auslastung 70% uebersteigt, und Instances entfernt, wenn sie unter 30% faellt.
IAM: Identitaets- und Zugriffsverwaltung
AWS IAM kontrolliert, wer unter welchen Bedingungen auf Ihre Ressourcen zugreifen kann. Das Prinzip der geringsten Berechtigung in der Produktion anzuwenden ist eine kritische Sicherheitsanforderung.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowS3ReadOnly",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my-app-assets-prod",
"arn:aws:s3:::my-app-assets-prod/*"
]
},
{
"Sid": "AllowCloudWatchLogs",
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:eu-central-1:123456789:log-group:/app/myapi:*"
}
]
}Durch die Zuweisung von IAM-Rollen an EC2-Instances koennen Sie sicher auf AWS-Dienste zugreifen, ohne Access Keys zu verwenden. Dieser Ansatz eliminiert das Risiko von fest codierten Anmeldeinformationen.
S3: Objektspeicher und statisches Hosting
S3 ist ein unbegrenzt skalierbarer Objektspeicherdienst, ideal fuer statische Dateien, Medieninhalte und Backups.
# S3-Bucket erstellen
aws s3 mb s3://my-app-assets-prod --region eu-central-1
# Lifecycle-Policy - nach 90 Tagen zu Glacier verschieben
aws s3api put-bucket-lifecycle-configuration \
--bucket my-app-assets-prod \
--lifecycle-configuration '{
"Rules": [
{
"ID": "MoveToGlacier",
"Status": "Enabled",
"Filter": { "Prefix": "backups/" },
"Transitions": [
{ "Days": 90, "StorageClass": "GLACIER" }
]
}
]
}'S3-Speicherklassen
Die Wahl der richtigen Speicherklasse ist entscheidend fuer die Kostenoptimierung:
- S3 Standard: Haeufig abgerufene Daten
- S3 Intelligent-Tiering: Daten mit unvorhersehbaren Zugriffsmustern
- S3 Glacier: Archivdaten (Log-Backups, alte Berichte)
- S3 Glacier Deep Archive: Langzeitarchivierung
Automatisches Kostenmanagement mit Lifecycle-Policies
Lifecycle-Policies sollten nicht nur fuer Speicherklassenwechsel, sondern auch zur Bereinigung alter Versionen und unvollstaendiger Multipart-Uploads verwendet werden. Gestufte Uebergaenge wie Standard zu Infrequent Access nach 30 Tagen und dann zu Glacier nach 90 Tagen koennen bei grossen Projekten monatlich Hunderte Euro einsparen.
Lambda: Serverlose Funktionen
AWS Lambda ermoeglicht die Ausfuehrung von Code ohne Serververwaltung. Es eignet sich ideal fuer ereignisgesteuerte Architekturen und geplante Aufgaben.
// Lambda-Funktion - Bildverarbeitung durch S3-Event ausgeloest
const { S3Client, GetObjectCommand, PutObjectCommand } = require('@aws-sdk/client-s3');
const sharp = require('sharp');
const s3 = new S3Client({ region: 'eu-central-1' });
exports.handler = async (event) => {
const bucket = event.Records[0].s3.bucket.name;
const key = event.Records[0].s3.object.key;
const original = await s3.send(new GetObjectCommand({ Bucket: bucket, Key: key }));
const imageBuffer = await streamToBuffer(original.Body);
const sizes = [
{ width: 150, suffix: 'thumb' },
{ width: 600, suffix: 'medium' },
{ width: 1200, suffix: 'large' }
];
for (const size of sizes) {
const resized = await sharp(imageBuffer)
.resize(size.width)
.webp({ quality: 80 })
.toBuffer();
const outputKey = key.replace(/\.[^.]+$/, `-${size.suffix}.webp`);
await s3.send(new PutObjectCommand({
Bucket: bucket,
Key: `processed/${outputKey}`,
Body: resized,
ContentType: 'image/webp'
}));
}
return { statusCode: 200, body: 'Bilder erfolgreich verarbeitet' };
};Um Cold-Start-Probleme bei Lambda zu minimieren, koennen Sie Provisioned Concurrency verwenden oder das Funktionspaket klein halten. Lambda Layers fuer gemeinsame Bibliotheken reduzieren die Deployment-Paketgroesse zusaetzlich.
CloudFront: CDN-Konfiguration
CloudFront minimiert die Latenz durch Auslieferung von Inhalten ueber weltweite Edge-Standorte. Die Verwendung von Origin Access Control (OAC) zum Blockieren des direkten S3-Zugriffs ist die beste Sicherheitspraxis.
# CloudFront-Distribution erstellen
aws cloudfront create-distribution \
--distribution-config '{
"CallerReference": "my-app-dist-2025",
"Origins": {
"Quantity": 1,
"Items": [
{
"Id": "S3Origin",
"DomainName": "my-app-assets-prod.s3.eu-central-1.amazonaws.com",
"S3OriginConfig": { "OriginAccessIdentity": "" },
"OriginAccessControlId": "E2QWRUHAPOMQZL"
}
]
},
"DefaultCacheBehavior": {
"TargetOriginId": "S3Origin",
"ViewerProtocolPolicy": "redirect-to-https",
"Compress": true
},
"Enabled": true
}'VPC und Netzwerksicherheit
VPC ermoeglicht die Ausfuehrung Ihrer AWS-Ressourcen in einer isolierten Netzwerkumgebung mit Public und Private Subnets, NAT Gateways und Security Groups. Fuer Produktionsumgebungen empfehle ich die Erstellung von Subnets in mindestens zwei Availability Zones und die Platzierung von Datenbanken in privaten Subnets.
Kostenoptimierung
- Reserved Instances / Savings Plans: 30-60% unter On-Demand-Preisen fuer vorhersehbare Workloads
- Spot Instances: Bis zu 90% Rabatt fuer unterbrechungstolerante Workloads
- Right-sizing: CloudWatch-Metriken ueberpruefen und ueberprovidierte Instances verkleinern
- S3 Intelligent-Tiering: Automatische Kostenoptimierung fuer Daten mit unvorhersehbaren Zugriffsmustern
Praktische Tipps
- Infrastructure as Code: Verwalten Sie Ihre Infrastruktur mit CloudFormation oder Terraform
- Kostenueberwachung: Nutzen Sie AWS Cost Explorer und Budget-Alarme
- Sicherheit: Konfigurieren Sie IAM-Rollen nach dem Prinzip der geringsten Berechtigung
- Monitoring: Richten Sie proaktive Ueberwachung mit CloudWatch ein
- Multi-AZ: Betreiben Sie kritische Dienste in mehreren Availability Zones
Die richtige Kombination von AWS-Diensten beeinflusst direkt Skalierbarkeit und Zuverlaessigkeit Ihrer Anwendung. Klein anfangen und nach Bedarf skalieren ist die gesuendeste AWS-Deployment-Strategie.
Verwandte Artikel
Docker Container Leitfaden: Dockerfile, Compose & Multi-Stage Builds
Docker Containerisierung Leitfaden. Dockerfiles schreiben, Multi-Service Docker Compose, Multi-Stage Build Optimierung und Production Deployment.
CI/CD Pipeline: Automatisierte Tests & Deployment mit GitHub Actions
CI/CD Pipeline Einrichtung mit GitHub Actions. Automatisierte Tests, Builds, Docker Image Erstellung und AWS Deployment.
Mikroservice-Architektur mit Kubernetes: Pod, Service & Deployment
Mikroservice-Architektur mit Kubernetes. Pod-Verwaltung, Service Discovery, Deployment-Strategien, Ingress und Helm Charts.
Haben Sie ein Flutter-Projekt?
Ich entwickle hochleistungsfähige Flutter-Anwendungen für iOS, Android und Web.
Kontakt aufnehmen