Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erste Schritte mit AWS Batch und Fargate mit dem AWS CLI
Dieses Tutorial zeigt, wie Sie AWS Batch mit AWS Fargate Orchestration einen einfachen „Hello World“ -Job einrichten und mit der AWS Command Line Interface () ausführen.AWS CLI Sie erfahren, wie Sie Rechenumgebungen, Jobwarteschlangen und Jobdefinitionen erstellen und Jobs an senden. AWS Batch
Themen
Voraussetzungen
Bevor Sie mit diesem Tutorial beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen.
-
Das AWS CLI. Wenn Sie die CLI installieren müssen, folgen Sie der AWS CLI -Installationsanleitung. Sie können auch verwenden AWS CloudShell, was die beinhaltet AWS CLI.
-
Hat Ihre AWS CLI mit den entsprechenden Anmeldeinformationen konfiguriert. Führen Sie
aws configureaus, falls Sie Ihre Anmeldeinformationen noch nicht eingerichtet haben. -
Grundlegende Vertrautheit mit Befehlszeilenschnittstellen und Konzepten zur Containerisierung.
-
Wie AWS Batch funktioniert mit IAMum AWS Batch Ressourcen, IAM-Rollen und VPC-Ressourcen in Ihrem zu erstellen und zu verwalten. AWS-Konto
Eine Subnetz-ID und eine Sicherheitsgruppen-ID von einer VPC in Ihrem. AWS-Konto Wenn Sie keine VPC haben, können Sie eine erstellen. Weitere Informationen zur Verwendung von AWS CLI zum Abrufen dieser Ressourcen IDs finden Sie unter describe-subnets
und describe-security-groups in der Befehlsreferenz.AWS CLI
Erforderliche Zeit: Ungefähr 15 bis 20 Minuten, um dieses Tutorial abzuschließen.
Kosten: In diesem Tutorial werden Fargate-Rechenressourcen verwendet. Die geschätzten Kosten für die Durchführung dieses Tutorials belaufen sich auf weniger als 0,01 USD, vorausgesetzt, Sie befolgen die Bereinigungsanweisungen, um Ressourcen unmittelbar nach Abschluss zu löschen. Die Fargate-Preise basieren auf den verbrauchten vCPU- und Speicherressourcen und werden pro Sekunde berechnet, mindestens jedoch 1 Minute. Aktuelle Preisinformationen finden Sie unter Preise.AWS Fargate
Erstellen Sie eine IAM-Ausführungsrolle
AWS Batch erfordert eine Ausführungsrolle, die es Agenten von Amazon Elastic Container Service (Amazon ECS) ermöglicht, AWS API-Aufrufe in Ihrem Namen durchzuführen. Diese Rolle ist für Fargate-Aufgaben erforderlich, um Container-Images abzurufen und Logs an Amazon CloudWatch zu schreiben.
Erstellen Sie ein Dokument mit Vertrauensrichtlinien
Erstellen Sie zunächst eine Vertrauensrichtlinie, die es dem Amazon ECS-Aufgabenservice ermöglicht, die Rolle zu übernehmen.
cat > batch-execution-role-trust-policy.json << EOF{ "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }EOF
Erstellen Sie die Ausführungsrolle
Mit dem folgenden Befehl wird eine IAM-Rolle erstellt, die BatchEcsTaskExecutionRoleTutorial anhand der soeben erstellten Vertrauensrichtlinie benannt wird.
aws iam create-role \ --role-name BatchEcsTaskExecutionRoleTutorial \ --assume-role-policy-document file://batch-execution-role-trust-policy.json
Hängen Sie die erforderliche Richtlinie an
Fügen Sie die AWS verwaltete Richtlinie hinzu, die die erforderlichen Berechtigungen für die Ausführung von Amazon ECS-Aufgaben bereitstellt.
aws iam attach-role-policy \ --role-name BatchEcsTaskExecutionRoleTutorial \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
Die Rolle kann jetzt AWS Batch für die Ausführung von Fargate-Aufgaben verwendet werden.
Erstellen Sie eine Rechenumgebung
Eine Rechenumgebung definiert die Rechenressourcen, auf denen Ihre Batch-Jobs ausgeführt werden. In diesem Tutorial erstellen Sie eine verwaltete Fargate-Rechenumgebung, die Ressourcen automatisch auf der Grundlage der Jobanforderungen bereitstellt und skaliert.
Erstellen Sie die Rechenumgebung
Der folgende Befehl erstellt eine Fargate-Rechenumgebung. Ersetzen Sie das Beispielsubnetz und die Sicherheitsgruppe IDs durch Ihre eigenen gemäß. Voraussetzungen
aws batch create-compute-environment \ --compute-environment-name my-fargate-compute-env \ --type MANAGED \ --state ENABLED \ --compute-resources type=FARGATE,maxvCpus=128,subnets=subnet-a123456b,securityGroupIds=sg-a12b3456
Im Folgenden wird gezeigt, wie die Ausgabe aussieht, wenn der Befehl erfolgreich ausgeführt wird.
{ "computeEnvironmentName": "my-fargate-compute-env", "computeEnvironmentArn": "arn:aws:batch:us-west-2:123456789012:compute-environment/my-fargate-compute-env" }
Warten Sie, bis die Rechenumgebung bereit ist
Überprüfen Sie den Status Ihrer Computerumgebung, um sicherzustellen, dass sie bereit ist, bevor Sie fortfahren.
aws batch describe-compute-environments \ --compute-environments my-fargate-compute-env \ --query 'computeEnvironments[0].status'
"VALID"
Wenn der Status angezeigt wirdVALID, ist Ihre Rechenumgebung bereit, Jobs anzunehmen.
Erstellen Sie eine Job-Warteschlange
In einer Job-Warteschlange werden eingereichte Jobs gespeichert, bis der AWS Batch Scheduler sie auf Ressourcen in Ihrer Rechenumgebung ausführt. Jobs werden in der Warteschlange in der Reihenfolge ihrer Priorität verarbeitet.
Erstellen Sie die Job-Warteschlange
Der folgende Befehl erstellt eine Auftragswarteschlange mit der Priorität 900, die Ihre Fargate-Rechenumgebung verwendet.
aws batch create-job-queue \ --job-queue-name my-fargate-job-queue \ --state ENABLED \ --priority 900 \ --compute-environment-order order=1,computeEnvironment=my-fargate-compute-env
Im Folgenden wird gezeigt, wie die Ausgabe aussieht, wenn der Befehl erfolgreich ausgeführt wird.
{ "jobQueueName": "my-fargate-job-queue", "jobQueueArn": "arn:aws:batch:us-west-2:123456789012:job-queue/my-fargate-job-queue" }
Stellen Sie sicher, dass die Auftragswarteschlange bereit ist
Vergewissern Sie sich, dass sich Ihre Auftragswarteschlange im ENABLED Status befindet und bereit ist, Jobs anzunehmen.
aws batch describe-job-queues \ --job-queues my-fargate-job-queue \ --query 'jobQueues[0].state' "ENABLED"
Erstellen Sie eine Auftragsdefinition
Eine Auftragsdefinition gibt an, wie Jobs ausgeführt werden sollen, einschließlich des zu verwendenden Docker-Images, der Ressourcenanforderungen und anderer Parameter. Für Fargate verwenden Sie Ressourcenanforderungen anstelle herkömmlicher vCPU- und Speicherparameter.
Erstellen Sie die Jobdefinition
Der folgende Befehl erstellt eine Jobdefinition, die einen einfachen „Hello World“ -Befehl unter Verwendung des Busybox-Container-Images ausführt. 123456789012Ersetzen Sie es durch Ihre tatsächliche AWS-Konto ID und ersetzen Sie das Beispiel AWS-Region durch Ihre eigene.
aws batch register-job-definition \ --job-definition-name my-fargate-job-def \ --type container \ --platform-capabilities FARGATE \ --container-properties '{ "image": "busybox", "resourceRequirements": [ {"type": "VCPU", "value": "0.25"}, {"type": "MEMORY", "value": "512"} ], "command": ["echo", "hello world"], "networkConfiguration": { "assignPublicIp": "ENABLED" }, "executionRoleArn": "arn:aws:iam::123456789012:role/BatchEcsTaskExecutionRoleTutorial" }, { "jobDefinitionName": "my-fargate-job-def", "jobDefinitionArn": "arn:aws:batch:us-west-2:123456789012:job-definition/my-fargate-job-def:1", "revision": 1 }'
Die Auftragsdefinition spezifiziert 0,25 vCPU und 512 MB Arbeitsspeicher. Dies sind die Mindestressourcen für eine Fargate-Aufgabe. Die assignPublicIp Einstellung ist aktiviert, sodass der Container das Busybox-Image von Docker Hub abrufen kann.
Einen Job einreichen und überwachen
Da Sie nun über alle erforderlichen Komponenten verfügen, können Sie einen Job an Ihre Warteschlange senden und dessen Fortschritt überwachen.
Reichen Sie einen Job ein
Mit dem folgenden Befehl wird mithilfe der von Ihnen erstellten Auftragsdefinition ein Job an Ihre Warteschlange gesendet.
aws batch submit-job \ --job-name my-hello-world-job \ --job-queue my-fargate-job-queue \ --job-definition my-fargate-job-def
Im Folgenden wird gezeigt, wie die Ausgabe aussieht, wenn der Befehl erfolgreich ausgeführt wird.
{ "jobArn": "arn:aws:batch:us-west-2:123456789012:job/my-hello-world-job", "jobName": "my-hello-world-job", "jobId": "1509xmpl-4224-4da6-9ba9-1d1acc96431a" }
Notieren Sie sich die in der Antwort jobId zurückgegebenen Informationen, da Sie sie verwenden werden, um den Fortschritt des Jobs zu überwachen.
Überwachen Sie den Auftragsstatus
Verwenden Sie die Job-ID, um den Status Ihres Jobs zu überprüfen. Der Job durchläuft mehrere Status:SUBMITTED,PENDING,RUNNABLE,STARTING,RUNNING, und schließlich SUCCEEDED oderFAILED.
aws batch describe-jobs --jobs 1509xmpl-4224-4da6-9ba9-1d1acc96431a
Im Folgenden wird gezeigt, wie die Ausgabe aussieht, wenn der Befehl erfolgreich ausgeführt wird.
{ "jobs": [ { "jobArn": "arn:aws:batch:us-west-2:123456789012:job/my-hello-world-job", "jobName": "my-hello-world-job", "jobId": "1509xmpl-4224-4da6-9ba9-1d1acc96431a", "jobQueue": "arn:aws:batch:us-west-2:123456789012:job-queue/my-fargate-job-queue", "status": "SUCCEEDED", "createdAt": 1705161908000, "jobDefinition": "arn:aws:batch:us-west-2:123456789012:job-definition/my-fargate-job-def:1" } ] }
Wenn der Status angezeigt wirdSUCCEEDED, wurde Ihr Job erfolgreich abgeschlossen.
Job-Ausgabe anzeigen
Nachdem Ihr Job abgeschlossen ist, können Sie seine Ausgabe in Amazon CloudWatch Logs anzeigen.
Rufen Sie den Namen des Log-Streams ab
Rufen Sie zunächst den Namen des Log-Streams aus den Jobdetails ab. Ersetzen Sie die Beispiel-Job-ID durch Ihre eigene.
aws batch describe-jobs --jobs1509xmpl-4224-4da6-9ba9-1d1acc96431a\ --query 'jobs[0].attempts[0].containers[0].logStreamName' \ --output text
my-fargate-job-def/default/1509xmpl-4224-4da6-9ba9-1d1acc96431a
Sehen Sie sich die Jobprotokolle an
Verwenden Sie den Namen des Log-Streams, um die Ausgabe des Jobs aus CloudWatch Logs abzurufen.
aws logs get-log-events \ --log-group-name /aws/batch/job \ --log-stream-name my-fargate-job-def/default/1509xmpl-4224-4da6-9ba9-1d1acc96431a\ --query 'events[*].message' \ --output text
In der Ausgabe wird „Hello World“ angezeigt, was bestätigt, dass Ihr Job erfolgreich ausgeführt wurde.
Bereinigen von Ressourcen
Um laufende Gebühren zu vermeiden, bereinigen Sie die Ressourcen, die Sie in diesem Tutorial erstellt haben. Aufgrund von Abhängigkeiten müssen Sie Ressourcen in der richtigen Reihenfolge löschen.
Deaktivieren und löschen Sie die Job-Warteschlange
Deaktivieren Sie zuerst die Jobwarteschlange und löschen Sie sie dann.
aws batch update-job-queue \ --job-queue my-fargate-job-queue \ --state DISABLED
aws batch delete-job-queue \ --job-queue my-fargate-job-queue
Deaktivieren und löschen Sie die Rechenumgebung
Nachdem die Jobwarteschlange gelöscht wurde, deaktivieren und löschen Sie die Rechenumgebung.
aws batch update-compute-environment \ --compute-environment my-fargate-compute-env \ --state DISABLED
aws batch delete-compute-environment \ --compute-environment my-fargate-compute-env
Bereinigen Sie die IAM-Rolle
Entfernen Sie den Richtlinienanhang und löschen Sie die IAM-Rolle.
aws iam detach-role-policy \ --role-name BatchEcsTaskExecutionRoleTutorial \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
aws iam delete-role \ --role-name BatchEcsTaskExecutionRoleTutorial
Temporäre Dateien entfernen
Löschen Sie die von Ihnen erstellte Vertrauensrichtlinien-Datei.
rm batch-execution-role-trust-policy.json
Alle Ressourcen wurden erfolgreich bereinigt.
In die Produktion übergehen
Dieses Tutorial soll Ihnen helfen zu verstehen, wie Fargate AWS Batch funktioniert. Beachten Sie bei Produktionsbereitstellungen die folgenden zusätzlichen Anforderungen:
Überlegungen zur Sicherheit:
Erstellen Sie dedizierte Sicherheitsgruppen mit minimalem erforderlichen Zugriff, anstatt Standardsicherheitsgruppen zu verwenden
Verwenden Sie private Subnetze mit NAT Gateway anstelle einer öffentlichen IP-Zuweisung für Container
Speichern Sie Container-Images in Amazon ECR, anstatt öffentliche Repositorys zu verwenden
Implementieren Sie VPC-Endpunkte für die AWS Dienstkommunikation, um Internetverkehr zu vermeiden
Überlegungen zur Architektur:
Stellen Sie die Lösung für hohe Verfügbarkeit in mehreren Availability Zones bereit
Implementieren Sie Strategien zur Auftragswiederholung und Warteschlangen für die Fehlerbehandlung
Verwenden Sie mehrere Jobwarteschlangen mit unterschiedlichen Prioritäten für das Workload-Management
Konfigurieren Sie Richtlinien für die auto Skalierung auf der Grundlage der Warteschlangentiefe und der Ressourcennutzung
Implementieren Sie Überwachungs- und Warnmeldungen bei Auftragsausfällen und Ressourcennutzung
Betriebliche Überlegungen:
Richten Sie CloudWatch Dashboards und Alarme für die Überwachung ein
Implementieren Sie angemessene Protokollierungs- und Prüfpfade
Verwenden Sie CloudFormation oder die AWS CDK für die Infrastruktur als Code
Richten Sie Sicherungs- und Notfallwiederherstellungsverfahren ein
Umfassende Anleitungen zu produktionsreifen Architekturen finden Sie im AWS Well-Architected Framework
Nächste Schritte
Nachdem Sie dieses Tutorial abgeschlossen haben, können Sie sich mit weiteren Funktionen vertraut machen: AWS Batch
-
Warteschlangen für Job— Erfahren Sie mehr über die Planung von Jobwarteschlangen und die Prioritätsverwaltung
-
Berufsdefinitionen— Erkunden Sie erweiterte Konfigurationen für Auftragsdefinitionen, einschließlich Umgebungsvariablen, Volumes und Wiederholungsstrategien
-
Rechenumgebungen für AWS Batch— Machen Sie sich mit verschiedenen Arten von Rechenumgebungen und Skalierungsoptionen vertraut
-
parallel Jobs mit mehreren Knoten— Führen Sie Jobs aus, die sich über mehrere Rechenknoten erstrecken
-
Ordnen Sie Jobs an— Reichen Sie eine große Anzahl ähnlicher Jobs effizient ein
-
Bewährte Methoden für AWS Batch— Erlernen Sie Optimierungstechniken für Produktionsworkloads