Wie erhalte ich die ID und die IP-Adresse einer Amazon-EC2-Instance für einen AWS-Batch-Job?

Lesedauer: 4 Minute
0

Ich möchte die ID und IP-Adresse einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance für einen AWS-Batch-Job abrufen. Wo finde ich diese Informationen?

Kurzbeschreibung

Wenn Sie Informationen zur Amazon-EC2-Instance eines AWS-Batch-Jobs abrufen möchten, rufen Sie als Erstes die Container-Instance-ID von Amazon Elastic Container Service (Amazon ECS) des Jobs ab. Verwenden Sie dann die Container-Instance-ID, um den zugehörigen Clusternamen von Amazon ECS und die zugehörige Instance-ID von Amazon EC2 abzurufen. Die Instance-ID von Amazon EC2 kann zum Abrufen der IP-Adresse der Instance verwendet werden.

**Hinweis:**Amazon-ECS-Ressourcen, die nach dem 1. April 2021 erstellt wurden, verwenden ein neues langes Amazon Resource Name (ARN)-Format, das jetzt den Clusternamen von ECS enthält. In diesem Artikel wird sowohl die Verwendung des neuen ARN-Formats als auch die Verwendung des alten ARN-Formats erläutert. Weitere Informationen finden Sie unter ARNs und IDs im Amazon ECS Developer Guide.

Behebung

**Hinweis:**Sollten beim Ausführen von Befehlen der AWS Command Line Interface (AWS CLI) Fehler auftreten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Rufen Sie die Amazon ECS-Container-Instance-ID, den Clusternamen und die Amazon EC2-Instance-ID des AWS Batch-Jobs ab

Neues ARN-Format

Führen Sie das folgende Bash-Skript aus, um für Ihren AWS-Batch-Job die Container-Instance-ID von Amazon ECS, den Clusternamen und die Instance-ID von Amazon EC2 abzurufen:

**Wichtig:**Ersetzen Sie <your_job_ID> durch die Job-ID Ihres AWS-Batch-Jobs.

#!/bin/bash
JOB_ID=<your_job_ID>

CONTAINER_INSTANCE_ARN=$(aws batch describe-jobs --jobs "$JOB_ID" --query 'jobs[0].container.containerInstanceArn' --output text);
TMP=${CONTAINER_INSTANCE_ARN#*/}
CLUSTER_NAME=${TMP%/*}

EC2_ID=$(aws ecs describe-container-instances  --container-instances "$CONTAINER_INSTANCE_ARN" --cluster "$CLUSTER_NAME" --query "containerInstances[0].ec2InstanceId" --output text)

echo ${EC2_ID}

Altes ARN-Format

1.Führen Sie den folgenden Befehl vom Typ describe-jobs aus, um für Ihren AWS-Batch-Job die Container-Instance-ID von Amazon ECS abzurufen:

$ aws batch describe-jobs --jobs <your_job_ID> --query 'jobs[0].container.containerInstanceArn' --output text

In der Ausgabe wird ein Wert für den Container-Instance-ARN zurückgegeben, der die Container-Instance-ID enthält.

2.Gehen Sie wie folgt vor, um den Amazon-ECS-Cluster zu ermitteln, der Ihrer AWS-Batch-Rechenumgebung entspricht:
Öffnen Sie die Amazon-ECS-Konsole.
Wählen Sie Clusters aus.
Wählen Sie die Registerkarte Services aus.
Suchen Sie dann nach dem Clusternamen. Dieser wird im folgenden Format angezeigt: ComputeEnvironmentName_Batch_RandomStringOfCharacters

3.Führen Sie den folgenden Befehl vom Typ describe-container-instances aus, um die zugeordnete Instance-ID von Amazon EC2 für den Cluster abzurufen:

**Wichtig:**Ersetzen Sie <Your_Cluster_Name> durch den Namen Ihres Amazon-ECS-Clusters. Ersetzen Sie <Your_Container_Instance_ID> durch die Container-Instance-ID von Amazon ECS für Ihren AWS-Batch-Job.

$ aws ecs describe-container-instances --cluster <Your_Cluster_Name> --container-instances <Your_Container_Instance_ID> --query "containerInstances[0].ec2InstanceId"

In der Ausgabe wird die dem Job zugeordnete Instance-ID von Amazon EC2 zurückgegeben.

Verwenden Sie die Amazon EC2-Instance-ID, um die IP-Adresse der Instance abzurufen

Sie können entweder die Amazon EC2-Konsole oder die AWS-CLI verwenden, um die IP-Adresse einer Amazon EC2-Instance abzurufen.

Amazon-EC2-Konsole

1.Öffnen Sie die Amazon-EC2-Konsole.

2.Wählen Sie Running instances aus.

3.Suchen Sie in der Spalte Instance ID nach der Instance-ID Ihrer Amazon-EC2-Instance.

4.Sehen Sie sich in der Zeile mit Ihrer Instance-ID die Spalte IPv4 Public IP address an. Der aufgeführte Wert ist die IP-Adresse der Amazon EC2-Instance.

AWS CLI

Führen Sie den folgenden Befehl vom Typ describe-instances aus:

**Wichtig:**Ersetzen Sie <EC2_ID> durch die Instance-ID von Amazon EC2.

aws ec2 describe-instances --instance-ids <EC2_ID> --query 'Reservations[0].Instances[0].{"PrivateIP":PrivateIpAddress,"PublicIP":PublicIpAddress}'

Abrufen von Instance-Informationen für AWS-Batch-Jobs mit mehreren Knoten

1.Führen Sie den folgenden Befehl vom Typ describe-jobs für einen einzelnen untergeordneten Job aus, um die Container-Instance-ID für einen untergeordneten Job abzurufen:

**Wichtig:**Ersetzen Sie Your_Job_ID durch die Job-ID von AWS Batch.

$ aws batch describe-jobs --jobs Your_Job_ID#1 --query 'jobs[0].container.containerInstanceArn' --output text

**Wichtig:**Da sich jeder untergeordnete Job auf einem individuellen Knoten befindet, verfügt der übergeordnete Job über keine Informationen zur Container-Instance. Verwenden Sie für untergeordnete Jobs die Knotennotation, um den Index des untergeordneten Jobs an die Job-ID anzuhängen. In diesem Beispiel für den Befehl describe-jobs wird mit #1 auf den ersten Knoten des Jobs zugegriffen. Durch Hinzufügen von #2 wird auf den zweiten Knoten zugegriffen und so weiter. Weitere Informationen finden Sie unter Multi-node parallel jobs.

2.Führen Sie den folgenden Befehl vom Typ describe-container-instances aus, um die zugeordnete Instance-ID von Amazon EC2 abzurufen:

**Wichtig:**Ersetzen Sie Your_Cluster_Name durch den Namen Ihres Amazon-ECS-Clusters. Ersetzen Sie Your_Container_Instance_ID durch die Container-Instance-ID von Amazon ECS für Ihren AWS-Batch-Job.

$ aws ecs describe-container-instances --cluster Your_Cluster_Name --container-instances Your_Container_Instance_ID --query "containerInstances[0].ec2InstanceId"

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren