Como faço para obter o ID e o endereço IP de uma instância do Amazon EC2 para um trabalho do AWS Batch?

5 minuto de leitura
0

Quero obter o ID e o endereço IP de uma instância do Amazon Elastic Compute Cloud (Amazon EC2) para um trabalho do AWS Batch. Como faço para encontrar essas informações?

Breve descrição

Para obter informações sobre uma instância do Amazon EC2 de um trabalho do AWS Batch, primeiro obtenha o ID de instância do contêiner do Amazon Elastic Container Service (Amazon ECS) do trabalho. Em seguida, use o ID de instância do contêiner para obter o nome do cluster do Amazon ECS associado e o ID da instância do Amazon EC2. Você pode usar o ID da instância do Amazon EC2 para obter o endereço IP da instância.

Observação: os recursos do Amazon ECS criados após 1º de abril de 2021 usam um novo formato longo do nome do recurso da Amazon (ARN) que agora inclui o nome do cluster do ECS. Este artigo fornece instruções para usar os formatos ARN novos ou antigos. Para obter mais informações, consulte ARNs e IDs no Guia do desenvolvedor do Amazon ECS.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.

Obtenha o ID de instância do contêiner do Amazon ECS do trabalho do AWS Batch, o nome do cluster e o ID da instância do Amazon EC2

Para o novo formato ARN

Obtenha o ID de instância do contêiner do Amazon ECS do seu trabalho do AWS Batch, o nome do cluster e o ID da instância do Amazon EC2 executando o seguinte script bash:

Importante: substitua <your_job_ID> pelo ID do trabalho do 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 o formato ARN antigo

1.    Obtenha o ID de instância de contêiner do Amazon ECS do seu trabalho do AWS Batch executando o seguinte comando describe-jobs:

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

A saída retorna um valor de ARN da instância do contêiner que inclui o ID de instância do contêiner.

2.    Encontre o cluster do Amazon ECS que corresponde ao seu ambiente computacional do AWS Batch fazendo o seguinte:
Abra o console do Amazon ECS.
Selecione Clusters.
Selecione a guia Serviços.
Em seguida, pesquise o nome do cluster que aparece no seguinte formato: ComputeEnvironmentName_Batch_RandomStringOfCharacters

3.    Obtenha o ID da instância do Amazon EC2 associada ao cluster executando o seguinte comando describe-container-instances:

Importante: substitua <Your_Cluster_Name> pelo nome do seu cluster do Amazon ECS. Substitua <Your_Container_Instance_ID> pelo ID de instância do contêiner do Amazon ECS do seu trabalho do AWS Batch.

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

A saída retorna o ID da instância do Amazon EC2 associado ao trabalho.

Use o ID da instância do Amazon EC2 para obter o endereço IP da instância

Você pode usar o console do Amazon EC2 ou a AWS CLI para obter o endereço IP de uma instância do Amazon EC2.

Console do Amazon EC2

1.    Abra o console do Amazon EC2.

2.    Selecione Instâncias em execução.

3.    Na coluna ID de instância, encontre o ID de instância da sua instância do Amazon EC2.

4.    Na mesma linha do seu ID de instância, veja a coluna de endereço IP público IPv4. O valor listado é o endereço IP da instância do Amazon EC2.

AWS CLI

Execute o seguinte comando describe-instances:

Importante: substitua <EC2_ID> pelo ID da instância do Amazon EC2.

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

Para obter informações de instância para trabalhos de vários nós do AWS Batch

1.    Obtenha o ID de instância do contêiner para um trabalho secundário executando o seguinte comando describe-jobs em um trabalho secundário individual:

Importante: substitua Your_Job_ID pelo ID do trabalho do AWS Batch.

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

Importante: como cada trabalho secundário está em um nó exclusivo, o trabalho principal não tem informações sobre a instância do contêiner. Para trabalhos secundários, use a notação de nó para acrescentar o índice do trabalho secundário ao ID do trabalho. Neste exemplo de comando describe-jobs, #1 acessa o primeiro nó do trabalho. Adicionar um número #2 acessa o segundo nó e assim por diante. Para mais informações, consulte Trabalhos paralelos de vários nós.

2.    Obtenha o ID da instância associada do Amazon EC2 executando o seguinte comando describe-container-instances:

Importante: substitua Your_Cluster_Name pelo nome do seu cluster do Amazon ECS. Substitua Your_Container_Instance_ID pelo ID de instância do contêiner do Amazon ECS do seu trabalho do AWS Batch.

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

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos