DevOps & Cloud

AWS Cloud-Infrastruktur: EC2, S3, CloudFront & Lambda Leitfaden

14 Min. Lesezeit15. März 2026
AWS bulut altyapısıAWS EC2AWS S3AWS CloudFrontAWS LambdaAWS TürkiyeBulut bilişimCloud computingAWS rehberiServerlessAWS VPCAWS deployment

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)
bash
# 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.

json
{
  "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.

bash
# 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.

javascript
// 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.

bash
# 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

  1. Infrastructure as Code: Verwalten Sie Ihre Infrastruktur mit CloudFormation oder Terraform
  2. Kostenueberwachung: Nutzen Sie AWS Cost Explorer und Budget-Alarme
  3. Sicherheit: Konfigurieren Sie IAM-Rollen nach dem Prinzip der geringsten Berechtigung
  4. Monitoring: Richten Sie proaktive Ueberwachung mit CloudWatch ein
  5. 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

Haben Sie ein Flutter-Projekt?

Ich entwickle hochleistungsfähige Flutter-Anwendungen für iOS, Android und Web.

Kontakt aufnehmen