Wie sichere ich meine Amazon ECS-Container-Instance mit bewährten Methoden und Hardening-Techniken?

Lesedauer: 6 Minute
0

Bei meinen Amazon Elastic Container Service (Amazon ECS)-Instances oder den zugrunde liegenden Amazon Elastic Compute Cloud (Amazon EC2)-Instances treten Probleme wie unerwartete Beendigung, Neustarts, Skalierungsprobleme oder Datenverlust auf. Ich möchte meine Amazon ECS-Container-Instance sichern.

Kurzbeschreibung

Wenn du den Amazon EC2-Starttyp in Amazon ECS verwendest, wirken sich EC2-Instance-Probleme wie Beendigungen, Neustarts oder Leistungsengpässe auf den Container aus. Um diese Probleme zu lösen, implementiere bewährte Methoden zur Sicherung der Amazon ECS-Container-Instances und kümmere dich um die Wartung, Skalierung und Problembehandlung von Amazon EC2.

Lösung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Amazon ECS-Container-Instances sichern

Zugriff des Root-Benutzers auf das AWS-Konto beschränken

Verwende das Root-Konto nur, wenn dies erforderlich ist, um beispielsweise die Kontoeinstellungen zu ändern oder das Root-Benutzerpasswort zu ändern. Verwende stattdessen die Rollen und Richtlinien von AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement), um den Zugriff einzurichten, der dem Prinzipal der geringsten Berechtigung entspricht. Richte außerdem die Multi-Faktor-Authentifizierung (MFA) für das Root-Konto ein.

Sicherheits-Hardening implementieren

Verwende Sicherheitsgruppen, um den eingehenden und ausgehenden Datenverkehr nur auf die erforderlichen IP-Adressen und Ports zu beschränken. Patche und aktualisiere die Amazon ECS-Container-Instances regelmäßig. Du kannst Amazon Inspector auch verwenden, um Sicherheitslücken zu identifizieren.

Verwende eine Verschlüsselung für vertrauliche Daten während der Übertragung, wie HTTPS, und im Ruhezustand, wie z. B. Amazon Elastic Block Storage (Amazon EBS)-Volumes. Weitere Informationen findest du unter Infrastrukturschutz.

Verwende AWS Systems Manager, um das Patchen und die Wartung von Amazon ECS-Container-Instances zu optimieren. Verwende den vorinstallierten AWS Systems Manager Agent (SSM Agent) auf Amazon ECS-optimierten Amazon Machine Images (AMIs), um automatisierte Patch-Management-Workflows zu implementieren. Dazu gehören geplante Wartungsfenster und Strategien zum Austausch von Instances. Weitere Informationen findest du unter Automatisches Patchen durch Austausch von Amazon ECS-Container-Instances.

Protokollierung und Überwachung aktivieren

Konfiguriere AWS CloudTrail für die Protokollierung von API-Aktivitäten. Es hat sich bewährt, Amazon CloudWatch-Alarme so einzurichten, dass du bei hohen Werten von CpuUtilization, DiskReadOps, DiskWriteOps, NetworkIn oder NetworkOut eine Warnmeldung erhältst.

Aktiviere Container Insights, um die Leistung und Ressourcennutzung der Container-Instance zu überwachen.

Eine Sicherungs- und Wiederherstellungsstrategie einrichten

Verwende Amazon EBS-Snapshots oder erstelle AMIs als Teil eines Notfallwiederherstellungsplans. Weitere Informationen findest du unter Amazon EC2-Sicherung und -Wiederherstellung mit AWS Backup.

Wichtig: Wenn du ein EBS-Volume löschst, kannst du das Volume nur wiederherstellen, wenn du einen Amazon EBS-Snapshot oder ein AMI-Backup erstellt hast.

Um Metadaten, Instance-Protokolle und Anwendungsdaten zu sammeln und zu exportieren, verwende SSH, um eine Verbindung zur Instance herzustellen. Führe dann den folgenden AWS-CLI-Befehl describe-instances aus, um die Instance-Metadaten zu exportieren:

aws ec2 describe-instances \
--instance-ids i-abcdxyz\
-- query "Reservations[].Instances[]" \
-- output text > file.txt

Führe den folgenden Befehl get-console-output aus, um die Instance-Protokolle zu exportieren:

aws ec2 get-console-output --instance-id i-abcdxyz --output text

Hinweis: Ersetze in den vorherigen Befehlen i-abcdxyz durch deine Instance-ID.

Probleme mit der EC2-Instance beheben

Problembehandlung bei unerwarteten Beendigungen und Neustarts

Verwende den von Amazon ECS verwalteten Instance-Ausgleich, um sicherzustellen, dass die Workloads bei Spot-Unterbrechungen oder ähnlichen Ereignissen ordnungsgemäß anhalten und in stabile Instances übergehen.

Aus Sicherheits- und Leistungsgründen plant Amazon EC2 regelmäßig routinemäßige Wartungsereignisse für die Instances, z. B. Neustarts, Stopps und Starts sowie Außerbetriebnahme. Du kannst das AWS-Servicestatus-Dashboard verwenden, um diese Ereignisse zu verfolgen, deren Abschluss mehrere Minuten dauern kann. Informationen darüber, welche Maßnahmen du nach routinemäßigen Wartungsereignissen ergreifen kannst, findest du unter Empfohlene Maßnahmen für Amazon EC2-Instances, die von geplanten Ereignissen betroffen sind.

Wenn bei dir eine Spot Instance beendet wird, findest du weitere Informationen unter Warum hat Amazon EC2 meine Spot Instance unterbrochen?

Amazon EC2 beendet die Instance möglicherweise im Rahmen einer geplanten Wartung. Um diese Art der Instance-Beendigung zu verwalten, empfiehlt es sich, Amazon EC2 Auto Scaling-Lebenszyklus-Hooks zu verwenden.

Problembehandlung bei hoher Ressourcenauslastung

Überprüfe die Anwendungsprotokolle und die CloudWatch-Metriken CpuUtilization, NetworkIn, NetworkOut, DiskReadOps und DiskWriteOps für deine Instance, um zu überprüfen, ob eine hohe CPU- oder Speicherauslastung vorliegt. Überprüfe auch die Container Insights-Metrik MemoryUtilized.

Wenn deine Konfiguration den Ressourcenanforderungen der Instances nicht entspricht, skaliere die Instances hoch.

Oder verwende Amazon ECS-Kapazitätsanbieter, um die Rechenressourcen des Clusters dynamisch zu skalieren und zu optimieren. Verwende die Amazon ECS-Konsole, um einen Kapazitätsanbieter zu erstellen. Oder führe einen Befehl create-capacity-provider aus, der dem folgenden Beispiel ähnelt:

aws ecs create-capacity-provider --name "example-capacity=provider" --auto-scaling-group-provider "autoScalingGroupArn=arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111:autoScalingGroupName/MyAutoScalingGroup,managedScaling={status=ENABLED,targetCapacity=100,minimumScalingStepSize=1,maximumScalingStepSize=100},managedTerminationProtection=ENABLED"

Probleme mit unzureichendem Festplattenspeicher beheben

Der Hauptspeicher der EC2-Instance, auf der Amazon ECS-Aufgaben ausgeführt werden, kann aus den folgenden Gründen voll werden:

  • Anwendungsprotokolle
  • Übermäßiger Speicherplatz für Container-Images
  • Temporäre Dateien, die durch Ausführen von Container-Instances erstellt wurden

Beachte, dass jede Datei oder jedes Verzeichnis unabhängig von der Größe einen I-Knoten verwendet. Wenn du also mehrere kleine Dateien hast, überschreitest du möglicherweise das I-Knoten-Kontingent. Wenn du das I-Knoten-Kontingent überschreitest, kannst du keine neuen Dateien erstellen, auch wenn Speicherplatz verfügbar ist.

Verwende Amazon ECS-Konfigurationen, um die Aufgaben- und Image-Bereinigung zu automatisieren und angehaltene Aufgaben und ungenutzte Docker-Images zu entfernen. Verwende außerdem die Variable ECS_RESERVED_MEMORY, um sicherzustellen, dass Aufgaben nicht den gesamten verfügbaren Speicher verbrauchen.

Verwende Lebenszyklusrichtlinien von Amazon Elastic Container Registry (Amazon ECR), um alte oder ungenutzte Images in den Repositorys automatisch zu bereinigen. Verwende Docker-Lösch-Befehle, um ungenutzte Objekte wie Images, Container-Instances, Volumes und Netzwerke zu bereinigen. Weitere Informationen findest du unter Prune unused Docker objects (Unbenutzte Docker-Objekte löschen) auf der Docker Docs-Website.

Führe den folgenden Befehl aus, um den Festplattenspeicher anzuzeigen, den alle eingebundenen Dateisysteme verwenden:

df -h

Führe den folgenden Befehl aus, um den Festplattenspeicher anzuzeigen, den ein bestimmtes Dateisystem verwendet:

df -h /

Hinweis: Der vorhergehende Befehl zeigt nur Daten für das Root-Dateisystem an.

Ressourcenprobleme können auftreten, weil du nur wenige verfügbare I-Knoten hast. Führe den folgenden Befehl aus, um die I-Knoten-Nutzung zu überprüfen:

df -i

Führe den folgenden Befehl aus, um den gesamten Festplattenspeicher anzuzeigen, den ein bestimmtes Verzeichnis verwendet:

du -sh /path/to/directory

Hinweis: Ersetze directory durch deinen Verzeichnisnamen.

Führe den folgenden Befehl aus, um die größten Verzeichnisse oder Dateien in der Anwendung aufzulisten:

du -ah /path/to/directory | sort -rh | head -n 10

Hinweis: Der vorherige Befehl listet die 10 größten Dateien oder Verzeichnisse auf. Ersetze 10 durch die Anzahl der großen Dateien und Verzeichnisse, die du anzeigen möchtest, und directory durch deinen Verzeichnisnamen.

Führe den folgenden Befehl aus, um die Größe der einzelnen Unterverzeichnisse im Verzeichnis zu überprüfen:

du -h --max-depth=1

Um die verfügbare Kapazität zu optimieren, verwende Spot-Flotte oder Kapazitätsanbieter für die EC2-Instances. Weitere Informationen findest du unter Leistungssteigerung der Amazon ECS-Cluster mit Spot-Flotte.

Ähnliche Informationen

Fehlertoleranz und Fehlerisolierung

Wie kann ich Probleme beim Herstellen einer Verbindung zu meiner Amazon-EC2-Linux-Instance über SSH beheben?

Amazon-EBS-Verschlüsselung

Bewährte Methoden für Amazon EC2

Bewährte Methoden für Amazon ECS

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Monat