Erste Schritte mit AWS Batch und Fargate mit dem AWS CLI - AWS Batch

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

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen.

  1. 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.

  2. Hat Ihre AWS CLI mit den entsprechenden Anmeldeinformationen konfiguriert. Führen Sie aws configure aus, falls Sie Ihre Anmeldeinformationen noch nicht eingerichtet haben.

  3. Grundlegende Vertrautheit mit Befehlszeilenschnittstellen und Konzepten zur Containerisierung.

  4. Wie AWS Batch funktioniert mit IAMum AWS Batch Ressourcen, IAM-Rollen und VPC-Ressourcen in Ihrem zu erstellen und zu verwalten. AWS-Konto

  5. 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-groupsin 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 --jobs 1509xmpl-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 and Security Best Practices.AWS

Nächste Schritte

Nachdem Sie dieses Tutorial abgeschlossen haben, können Sie sich mit weiteren Funktionen vertraut machen: AWS Batch