AWS Batch – Funktionen

In AWS Batch verpacken Sie Ihren Code für Batch-Aufträge, geben deren Abhängigkeiten an und übertragen die Batch-Aufträge dann über die AWS-Managementkonsole bzw. über CLIs oder SDKs. In AWS Batch können Sie Ausführungsparameter und Auftragsabhängigkeiten angeben. Zudem vereinfachen Sie durch Batch die Integration in zahlreiche gängige Workflow-Engines und Sprachen für die Batch-Verarbeitung wie Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow und AWS Step Functions. AWS Batch sorgt für eine effiziente und dynamische Bereitstellung und Skalierung von Amazon ECS-, Amazon EKS- und AWS Fargate-Rechenressourcen mit der Option, Spot-Instances je nach den Anforderungen Ihrer Aufträge zu nutzen. AWS Batch stellt Standard-Auftragswarteschlangen und Rechenumgebungsdefinitionen bereit, die Ihnen den Start erleichtern.

AWS Batch auf Amazon Elastic Kubernetes Service (EKS)

AWS Batch auf EKS verwaltet sowohl die Skalierung von Kubernetes-Knoten als auch die Platzierung von Pods innerhalb Ihrer Knoten. Dies geschieht unter Beibehaltung der Verwaltung und Orchestrierung, die Amazon EKS für andere Workloads und Services bietet. AWS Batch kann Aufträge als Kubernetes-Pods sicher in Ihren bestehenden EKS-Clustern ausführen. Sie müssen lediglich die vCPU-, Speicher- und GPU-Anforderungen angeben, die Ihre Container benötigen, und sie an eine Warteschlange senden, die an eine EKS-Cluster-aktivierte Rechenumgebung angeschlossen ist. AWS Batch verwaltet Warteschlangen, Abhängigkeitsverfolgung, Wiederholungen, Priorität und Pod-Übermittlung in einer Auftragswarteschlange. Es verwaltet auch die Bereitstellung von Rechenressourcen in Ihrer EKS-Umgebung, unabhängig davon, ob Sie EC2 oder EC2-Spot-Rechenressourcen verwenden. Batch wird in einem eigenen Namensraum in Ihren EKS-Cluster integriert, so dass Sie sich keine Sorgen machen müssen, dass AWS-Batch-Aufträge Ihre bestehenden Prozesse beeinträchtigen könnten. Batch verwaltet die Kapazität für Sie, einschließlich der Möglichkeit, einen warmen Pool von Knoten aufrechtzuerhalten, die Kapazität auf eine bestimmte Menge an vCPU zu begrenzen, Knoten zu skalieren und Aufträge über viele verschiedene Cluster hinweg auszuführen oder einfach alle Ihre Aufträge in einem einzigen Cluster auszuführen. Batch unterstützt unabhängige Pods als Kernstück der Arbeit, kann Ihre Aufträge aber auch in aggregierter Form über Arrays planen.

Dynamische Bereitstellung und Skalierung von Rechenressourcen

Wenn Sie Fargate oder Fargate Spot mit Batch verwenden, müssen Sie nur einige Konzepte in Batch einrichten (CE, Aufgabenwarteschlange und Aufgabendefinition), und Sie verfügen über eine vollständige Warteschlangen-, Planungs- und Rechenarchitektur, ohne ein einziges Stück Recheninfrastruktur zu verwalten.

Für diejenigen, die EC2-Instances wünschen, bietet AWS Batch verwaltete Rechenumgebungen, die Rechenressourcen basierend auf dem Volumen und den Ressourcenanforderungen Ihrer übergebenen Aufgaben dynamisch bereitstellen und skalieren. Sie können Ihre AWS-Batch-Managed-Compute-Umgebungen mit Anforderungen wie dem Typ der EC2-Instances, den VPC-Subnetzkonfigurationen, den minimalen/maximalen/gewünschten vCPUs für alle Instances und dem Betrag konfigurieren, den Sie bereit sind, für Spot-Instances als Prozentsatz des On-Demand-Instance-Preises zu zahlen.

Alternativ können Sie für Rechenumgebungen, die nicht von AWS Batch verwaltet werden, Ihre eigenen Rechenressourcen bereitstellen und verwalten, wenn Sie für Ihre EC2-Instances andere Konfigurationen benötigen, als AWS Batch in seinen verwalteten Rechenumgebungen bereitstellt (z. B. größere EBS-Mengen oder ein anderes Betriebssystem). Sie brauchen lediglich EC2-Instances mit dem Amazon ECS-Agenten bereitzustellen und unterstützte Versionen von Linux und Docker auszuführen. AWS Batch führt Ihre Batch-Aufträge dann in den von Ihnen bereitgestellten EC2-Instances aus.

AWS Batch mit Fargate

AWS Batch mit Fargate-Ressourcen ermöglicht Ihnen eine vollständig serverlose Architektur für Ihre Batch-Aufgaben. Mit Fargate erhält jeder Auftrag genau die Menge an CPU und Arbeitsspeicher, die er anfordert (innerhalb der zulässigen Fargate-SKUs), sodass keine Ressourcen verschwendet werden oder auf den Start einer EC2-Instance gewartet werden muss.

Wenn Sie aktuell ein Batch-Benutzer sind, ermöglicht Fargate eine zusätzliche Trennungsschicht weg von EC2. AMIs müssen nicht verwaltet oder gepatcht werden. Wenn Sie Ihre Fargate-kompatiblen Aufgaben an Batch senden, müssen Sie sich nicht um die Wartung von zwei verschiedenen Diensten kümmern, wenn Workloads auf EC2 und andere auf Fargate ausgeführt werden.

AWS bietet einen Cloud-nativen Planer mit einer verwalteten Warteschlange und der Möglichkeit, Prioritäten, Wiederholungsversuche, Abhängigkeiten, Zeitüberschreitungen und mehr anzugeben. Batch verwaltet die Übermittlung an Fargate und den Lebenszyklus Ihrer Aufgaben, sodass Sie dies nicht tun müssen.

Darüber hinaus bietet Fargate Sicherheitsvorteile ohne zusätzlichen Aufwand (z. B. SOX- und PCI-Konformität) sowie eine Isolierung der Rechenressourcen für jeden Auftrag.

Unterstützung für eng gekoppelte HPC-Workloads

AWS Batch unterstützt parallele Aufträge mit mehreren Knoten, was es Ihnen ermöglicht, einzelne Aufträge auszuführen, die mehrere EC 2-Instances umfassen. Mit dieser Funktion können Sie AWS Batch verwenden, um Workloads wie große, eng gekoppelte HPC-Anwendungen (High Performance Computing) oder verteilte GPU-Modelltrainings einfach und effizient auszuführen. AWS Batch unterstützt auch Elastic Fabric Adapter, eine Netzwerkschnittstelle, mit der Sie Anwendungen ausführen können, für die ein hohes Maß an Kommunikation zwischen Knoten in AWS erforderlich ist. 

Differenzierte Auftragsdefinitionen und einfache Modellierung von Auftragsabhängigkeiten

In AWS Batch können Sie Ressourcenanforderungen wie vCPU und Arbeitsspeicher, AWS Identity and Access Management (IAM)-Rollen, Volume-Mountpunkte, Container-Eigenschaften und Umgebungsvariablen angeben, mit denen Sie festlegen, wie die Aufträge ausgeführt werden. AWS Batch führt Ihre Aufträge unter Amazon ECS als Anwendungen in Containern aus. In Batch können Sie auch Abhängigkeiten zwischen Aufträgen definieren. Ein Batch-Auftrag kann beispielsweise aus drei Verarbeitungsstufen bestehen, für die jeweils andere Ressourcen benötigt werden. Wenn Sie Abhängigkeiten verwenden, können Sie drei Aufträge mit unterschiedlichen Ressourcenanforderungen erstellen und jeden nachfolgenden Auftrag vom vorherigen abhängig machen.

Auftragsplanung nach Prioritäten

In AWS Batch können Sie mehrere Warteschlangen mit unterschiedlichen Prioritätsstufen einrichten. Ihre Batch-Aufträge verbleiben solange in diesen Warteschlangen, bis zu deren Ausführung die erforderlichen Rechenressourcen verfügbar sind. Der AWS Batch-Planer ermittelt auf Basis der Ressourcenanforderungen der jeweiligen Aufträge, wann, wo und wie die in die Warteschlange eingereihten Aufträge ausgeführt werden. Des Weiteren ermittelt der Planer die Priorität der Warteschlangen und führt die Aufträge entsprechend der Priorität optimal verfügbarer Rechenressourcen aus (z. B. Arbeitsspeicher vs. CPU optimiert), sofern die Aufträge nicht auf Abhängigkeiten warten.

Support für GPU-Planung

GPU-Planung ermöglicht es Ihnen, die Anzahl und den Typ der Accelerators festzulegen, die Ihre Aufträge als Eingabevariablen in der Auftragsdefinition in AWS Batch benötigen. AWS Batch skaliert für Ihre Aufträge geeignete Instances basierend auf der erforderlichen Anzahl an Accelerators und isoliert die Accelerators gemäß den Anforderungen jedes Auftrags, damit nur geeignete Container darauf Zugriff haben.

AWS Batch kann in kommerzielle und Open-Source-Workflow-Engines und -Sprachen wie Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow und AWS Step Functions integriert werden. Sie können Ihre Batch-Rechen-Pipelines daher in Ihnen vertrauten Workflow-Sprachen modellieren.

Integration in EC2-Startvorlagen

AWS Batch unterstützt jetzt EC2-Startvorlagen, mit denen Sie benutzerdefinierte Vorlagen für Ihre Berechnungsressourcen erstellen können. Außerdem können Sie mit Batch Instances mit diesen Anforderungen skalieren. Legen Sie Ihre EC2-Startvorlage fest, um Speichervolumen hinzuzufügen, Netzwerk-Interfaces anzugeben oder Berechtigungen zu konfigurieren, neben vielen weiteren Funktionen. Mit EC2-Startvorlagen können Sie in nur wenigen Schritten Batch-Umgebungen erstellen, indem Sie alle Startparameter in einer Ressource erfassen.

Flexible Zuweisungsstrategien

AWS Batch ermöglicht Kunden beim Zuweisen von Rechenressourcen die Auswahl zwischen drei Methoden. Mit diesen Strategien können Kunden sowohl den Durchsatz als auch den Preis berücksichtigen, wenn sie festlegen, wie AWS Batch Instances in ihrem Namen skalieren soll.

Best Fit: AWS Batch wählt einen Instance-Typ, der am besten zu den Anforderungen der Aufträge passt, wobei der günstigste Instance-Typ bevorzugt wird. Falls keine weiteren Instances des ausgewählten Instance-Typs verfügbar sind, wartet AWS Batch, bis die zusätzlichen Instances verfügbar sind. Falls nicht genügend Instances verfügbar sind oder der Benutzer die Amazon EC2 Service Limits erreicht, werden weitere Aufträge erst ausgeführt, wenn derzeit ausgeführte Aufträge abgeschlossen sind. Diese Zuweisungsstrategie hält die Kosten gering, kann allerdings die Skalierung einschränken.

Best Fit Progressive: AWS Batch wählt weitere Instance-Typen aus, die groß genug sind, um die Anforderungen der Aufträge in der Warteschlange zu erfüllen, wobei Instance-Typen mit geringeren vCPU-Kosten pro Einheit bevorzugt werden. Falls keine weiteren Instances der zuvor ausgewählten Instance-Typen verfügbar sind, wählt AWS Batch neue Instance-Typen aus.

Spot Capacity Optimized: AWS Batch wählt mindestens einen Instance-Typ aus, der groß genug ist, die Anforderungen der Aufträge in der Warteschlange zu erfüllen, wobei Instance-Typen bevorzugt werden, die mit geringerer Wahrscheinlichkeit unterbrochen werden. Diese Zuweisungsstrategie nur für Rechenressourcen vom Typ Spot-Instance verfügbar.

Integrierte Überwachung und Protokollierung

AWS Batch zeigt die wichtigsten Betriebsmetriken Ihrer Batch-Aufträge in der AWS-Managementkonsole an. Hier können Sie Metriken zur Rechenkapazität wie auch Informationen zu aktiven, ausstehenden und abgeschlossenen Aufträgen anzeigen. Ihre Auftragsprotokolle (z. B. STDERR und STDOUT) sind über die AWS-Managementkonsole verfügbar und werden auch in die Amazon CloudWatch Logs geschrieben.

Differenzierte Zugriffskontrolle

AWS Batch verwendet IAM zur Kontrolle und Überwachung der AWS-Ressourcen (z. B. Amazon DynamoDB-Tabellen), auf die Ihre Aufträge zugreifen können. In IAM können Sie auch Richtlinien für die unterschiedlichen Benutzer Ihrer Organisation definieren. Administratoren können Sie beispielsweise vollständigen Zugriff auf alle API-Operationen von AWS Batch erteilen, während Entwickler nur eingeschränkte Berechtigungen für die Konfiguration der Rechenumgebungen und die Registrierung von Aufträgen erhalten und Endbenutzer eventuell sogar nur die Berechtigung zum Einreichen und Löschen von Aufträgen.

Erfahren Sie mehr über die Preise von AWS Batch

Zur Seite mit den Preisen
Bereit zum Entwickeln?
Erste Schritte mit AWS Batch
Haben Sie Fragen?
Kontakt