¿Cómo puedo obtener el ID y la dirección IP de una instancia de Amazon EC2 para un trabajo de AWS Batch?

5 minutos de lectura
0

Quiero obtener el ID y la dirección IP de una instancia de Amazon Elastic Compute Cloud (Amazon EC2) para un trabajo de AWS Batch. ¿Cómo puedo encontrar esa información?

Descripción breve

Para obtener información sobre la instancia de Amazon EC2 de un trabajo de AWS Batch, primero obtenga el ID de instancia de contenedor del trabajo de Amazon Elastic Container Service (Amazon ECS). A continuación, utilice el ID de instancia de contenedor para obtener el nombre del clúster de Amazon ECS y el ID de instancia de Amazon EC2 asociados. Puede usar el ID de instancia de Amazon EC2 para obtener la dirección IP de la instancia.

Nota: Los recursos de Amazon ECS creados después del 1 de abril de 2021 utilizan un nuevo formato de nombre de recurso de Amazon (ARN) largo que ahora incluye el nombre del clúster de ECS. Este artículo proporciona instrucciones para utilizar los formatos de ARN nuevos o antiguos. Para obtener más información, consulte ARN y ID en la Guía para desarrolladores de Amazon ECS.

Resolución

Nota: Si recibe errores al ejecutar los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de AWS CLI.

Obtenga el ID de instancia de contenedor de Amazon ECS del trabajo de AWS Batch, el nombre del clúster y el ID de instancia de Amazon EC2

Para el nuevo formato de ARN

Obtenga el ID de instancia de contenedor de Amazon ECS del trabajo de AWS Batch, el nombre del clúster y el ID de la instancia de Amazon EC2 ejecutando el siguiente script de bash:

Importante: Sustituya <your_job_ID> por el ID de trabajo de su trabajo de AWS Batch.

#!/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}

Para el antiguo formato de ARN

1.    Obtenga el ID de instancia de contenedor de Amazon ECS del trabajo de AWS Batch ejecutando el siguiente comando describe-jobs:

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

La salida devuelve un valor de ARN de instancia de contenedor que incluye el ID de la instancia de contenedor.

2.    Busque el clúster de Amazon ECS que corresponda a su entorno de computación de AWS Batch de la siguiente manera:
Abra la consola de Amazon ECS.
Elija Clústeres.
Elija la pestaña Servicios.
A continuación, busque el nombre del clúster que aparece en el siguiente formato: ComputeEnvironmentName_Batch_RandomStringOfCharacters

3.    Obtenga el ID de instancia de Amazon EC2 asociado al clúster ejecutando el siguiente comando describe-container-instances:

Importante: Sustituya <Your_Cluster_Name> por el nombre de su clúster de Amazon ECS. Sustituya <Your_Container_Instance_ID> por el ID de instancia de contenedor de Amazon ECS del trabajo de AWS Batch.

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

La salida devuelve el ID de instancia de Amazon EC2 asociado al trabajo.

Uso del ID de instancia de Amazon EC2 para obtener la dirección IP de la instancia

Puede usar la consola de Amazon EC2 o AWS CLI para obtener la dirección IP de una instancia de Amazon EC2.

Consola Amazon EC2

1.    Abra la consola de Amazon EC2.

2.    Elija Instancias en ejecución.

3.    En la columna ID de instancia, busque el ID de instancia de su instancia de Amazon EC2.

4.    En la misma fila que el ID de instancia, consulte la columna dirección IP IPv4 pública. El valor que aparece es la dirección IP de la instancia de Amazon EC2.

AWS CLI

Ejecute el siguiente comando describe-instances:

Importante: Sustituya <EC2_ID> por el ID de instancia de Amazon EC2.

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

Obtener información de instancias para trabajos de AWS Batch con varios nodos

1.    Obtenga el ID de instancia de contenedor de un trabajo secundario ejecutando el siguiente comando describe-jobs en un trabajo secundario individual:

Importante: Sustituya Your_Job_ID por el ID de trabajo de su trabajo de AWS Batch.

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

Importante: Como cada trabajo secundario se encuentra en un nodo único, el trabajo principal no contiene información sobre la instancia de contenedor. Para los trabajos secundarios, utilice la notación de nodo para añadir el índice del trabajo secundario al ID de trabajo. En este ejemplo del comando describe-jobs, #1 accede al primer nodo del trabajo. Al añadir un número #2 se accede al segundo nodo, y así sucesivamente. Para obtener más información, consulte Trabajos paralelos de varios nodos.

2.    Obtenga el ID de instancia de Amazon EC2 asociado ejecutando el siguiente comando describe-container-instances:

Importante: Sustituya Your_Cluster_Name por el nombre de su clúster de Amazon ECS. Sustituya Your_Container_Instance_ID por el ID de instancia de contenedor de Amazon ECS del trabajo de AWS Batch.

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

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años