Come posso ottenere l'ID e l'indirizzo IP di un'istanza Amazon EC2 per un processo AWS Batch?

4 minuti di lettura
0

Desidero ottenere l'ID e l'indirizzo IP di un'istanza Amazon Elastic Compute Cloud (Amazon EC2) per un processo AWS Batch. Come posso trovare queste informazioni?

Breve descrizione

Per ottenere informazioni sull'istanza Amazon EC2 di un processo AWS Batch, richiedi innanzitutto l'ID dell'istanza container Amazon Elastic Container Service (Amazon ECS) del job. Quindi, utilizzal'ID dell'istanza del contenitore per ottenere il nome del cluster Amazon ECS associato e l'ID dell'istanza Amazon EC2. Puoi utilizzare l'ID dell'istanza Amazon EC2 per ottenere l'indirizzo IP dell'istanza.

Nota: Le risorse Amazon ECS create dopo il 1° aprile 2021 utilizzano un nuovo formato Amazon Resource Name (ARN) lungo che ora include il nome del cluster ECS. Questo articolo fornisce istruzioni per l'utilizzo del nuovo o del vecchio formato ARN. Per ulteriori informazioni, consulta gli ARN e gli ID nella Amazon ECS Developer Guide.

Risoluzione

Nota: Se visualizzi errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente dell'interfaccia della linea di comando AWS.

Ottieni l'ID dell'istanza del container Amazon ECS del job AWS Batch, il nome del cluster e l'ID dell'istanza Amazon EC2

Per il nuovo formato ARN

Ottieni l'ID dell'istanza del contenitore Amazon ECS del tuo lavoro AWS Batch, il nome del cluster e l'ID dell'istanza Amazon EC2 eseguendo il seguente script bash:

Importante: Sostituiscilo <your_job_ID> con l'ID del job di 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}

Per il vecchio formato ARN

  1. Ottieni l'ID di istanza del contenitore Amazon ECS del tuo lavoro AWS Batch eseguendo il seguente comando describe-jobs:
$ aws batch describe-jobs --jobs <your_job_ID> --query 'jobs[0].container.containerInstanceArn' --output text

L'output restituisce un valore ARN dell'istanzacontenitore che include l'ID dell'istanza del contenitore.

  1. Trova il cluster Amazon ECS che corrisponde al tuo ambiente di elaborazione AWS Batch effettuando le seguenti operazioni:
    Apri la console Amazon ECS.
    Scegli Cluster.
    Scegli la scheda Servizi.
    Quindi, cerca il nome del cluster che appare nel seguente formato: ComputeEnvironmentName_Batch_RandomStringOfCharacters

  2. Ottieni l'ID dell'istanza Amazon EC2 associata al cluster eseguendo il seguente comando describe-container-instances:

**Importante:**Sostituisci <Your_Cluster_Name> con il nome del tuo cluster Amazon ECS. Sostituisci <Your_Container_Instance_ID> con l'ID di istanza del contenitore Amazon ECS del tuo processo AWS Batch.

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

L'output restituisce l'ID di istanza Amazon EC2 associato al processo.

Usa l'ID dell'istanza Amazon EC2 per ottenere l'indirizzo IP dell'istanza

Puoi utilizzare la console Amazon EC2 o l'interfaccia a riga di comando di AWS per ottenere l'indirizzo IP di un'istanza Amazon EC2.

Console Amazon EC2

  1. Apri la console Amazon EC2.

  2. Scegli Esecuzione di istanze.

  3. Nella colonna ID istanza , trova l'ID dell'istanza della tua istanza Amazon EC2.

  4. Nella stessa riga dell'ID dell'istanza, guarda la colonna Indirizzo IP pubblico IPv4. Il valore elencato è l'indirizzo IP dell'istanza Amazon EC2.

RIGA DI COMANDO AWS

Esegui il seguente comando describe-instances:

Importante: Sostituisci <EC2_ID> con il tuo ID di istanza Amazon EC2.

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

Per ottenere informazioni sulle istanze per processi AWS Batch a più nodi

  1. Ottieni l'ID dell'istanza del contenitore per un job secondario eseguendo il seguente comando describe-jobs su un singolo job secondario:

Importante: Sostituisci Your_Job_ID con il tuo ID del job AWS Batch.

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

Importante: Poiché ogni job secondario si trova su un nodo univoco, il job principale non dispone di informazioni sull'istanza del contenitore. Per i job secondari, usa la notazione dei nodi per aggiungere l'indice del lavoro secondario all'ID del lavoro. In questo esempio del comando describe-jobs, #1 accede al primo nodo del job. L'aggiunta di un numero #2 accede al secondo nodo e così via. Per ulteriori informazioni, vedere Lavori paralleli a più nodi.

  1. Ottieni l'ID dell'istanza Amazon EC2 associata eseguendo il seguente comando describe-container-instances:

**Importante:**Sostituisci Your_Cluster_Name con il nome del tuo cluster Amazon ECS. Sostituisci Your_Container_Instance_ID con l'ID di istanza del contenitore Amazon ECS del tuo job AWS Batch.

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

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa