AWS Batch 작업에 대한 Amazon EC2 인스턴스의 ID와 IP 주소를 얻으려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 4월 12일

AWS Batch 작업에 대한 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 ID와 IP 주소를 가져오려고 합니다. 이 정보를 어떻게 찾을 수 있나요?

간략한 설명

AWS Batch 작업의 Amazon EC2 인스턴스에 대한 정보를 얻으려면 먼저 작업의 Amazon Elastic Container Service(Amazon ECS) 컨테이너 인스턴스 ID를 가져옵니다. 그런 다음 컨테이너 인스턴스 ID를 사용하여 연결된 Amazon ECS 클러스터 이름과 Amazon EC2 인스턴스 ID를 가져옵니다. Amazon EC2 인스턴스 ID를 사용하여 인스턴스의 IP 주소를 가져올 수 있습니다.

참고: 2021년 4월 1일 이후에 생성된 Amazon ECS 리소스는 이제 ECS 클러스터 이름을 포함하는 새로운 긴 Amazon 리소스 이름(ARN) 형식을 사용합니다. 이 문서에서는 새 ARN 형식 또는 이전 ARN 형식을 사용하기 위한 지침을 제공합니다. 자세한 내용은 Amazon ECS 개발자 안내서의 ARN 및 ID를 참조하세요.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류 메시지가 표시되는 경우 AWS CLI 최신 버전을 사용 중인지 확인합니다.

AWS Batch 작업의 Amazon ECS 컨테이너 인스턴스 ID, 클러스터 이름 및 Amazon EC2 인스턴스 ID를 가져옵니다.

새 ARN 형식의 경우

다음 bash 스크립트를 실행하여 AWS Batch 작업의 Amazon ECS 컨테이너 인스턴스 ID, 클러스터 이름 및 Amazon EC2 인스턴스 ID를 가져옵니다.

중요: <your_job_ID>를 AWS Batch 작업의 작업 ID로 바꿉니다.

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

이전 ARN 형식의 경우

1.    다음 describe-jobs 명령을 실행하여 AWS Batch 작업의 Amazon ECS 컨테이너 인스턴스 ID를 가져옵니다.

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

출력은 컨테이너 인스턴스 ID를 포함하는 컨테이너 인스턴스 ARN 값을 반환합니다.

2.    다음을 수행하여 AWS Batch 컴퓨팅 환경에 해당하는 Amazon ECS 클러스터를 찾습니다.
Amazon ECS 콘솔을 엽니다.
클러스터를 선택합니다.
서비스(Services) 탭을 선택합니다.
그런 다음, 다음 형식으로 표시되는 클러스터 이름을 검색합니다. ComputeEnvironmentName_Batch_RandomStringOfCharacters

3.    다음 describe-container-instances 명령을 실행하여 클러스터와 연결된 Amazon EC2 인스턴스 ID를 가져옵니다.

중요: <Your_Cluster_Name>을 Amazon ECS 클러스터의 이름으로 바꿉니다. <Your_Container_Instance_ID>를 AWS Batch 작업의 Amazon ECS 컨테이너 인스턴스 ID로 바꿉니다.

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

출력은 작업에 연결된 Amazon EC2 인스턴스 ID를 반환합니다.

Amazon EC2 인스턴스 ID를 사용하여 인스턴스의 IP 주소를 가져옵니다.

Amazon EC2 콘솔 또는 AWS CLI를 사용하여 Amazon EC2 인스턴스의 IP 주소를 가져올 수 있습니다.

Amazon EC2 콘솔

1.    Amazon EC2 콘솔을 엽니다.

2.    [Running instances(실행 중인 인스턴스)]을 선택합니다.

3.    인스턴스 ID 열에서 Amazon EC2 인스턴스의 인스턴스 ID를 찾습니다.

4.    인스턴스 ID와 같은 행에서 IPv4 퍼블릭 IP 주소 열을 확인합니다. 나열된 값은 Amazon EC2 인스턴스의 IP 주소입니다.

AWS CLI

다음 describe-instances 명령을 실행합니다.

중요: <EC2_ID> 를 Amazon EC2 인스턴스 ID로 바꿉니다.

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

다중 노드 AWS Batch 작업에 대한 인스턴스 정보 가져오기

1.    하위 작업의 컨테이너 인스턴스 ID를 가져오려면 개별 하위 작업에 대해 다음 describe-jobs 명령을 실행합니다.

중요: Your_Job_ID를 AWS Batch 작업 ID로 바꿉니다.

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

중요: 각 하위 작업이 고유한 노드에 있으므로 상위 작업에는 컨테이너 인스턴스에 대한 정보가 없습니다. 하위 작업의 경우 노드 표기법을 사용하여 하위 작업의 인덱스를 작업 ID에 추가합니다. 이 예제의 describe-jobs 명령에서 #1은 작업의 첫 번째 노드에 액세스합니다. #2 숫자를 추가하면 두 번째 노드에 액세스할 수 있습니다. 자세한 내용은 다중 노드 병렬 작업을 참조하세요.

2.    다음 describe-container-instances 명령을 실행하여 연결된 Amazon EC2 인스턴스 ID를 가져옵니다.

중요: Your_Cluster_Name을 Amazon ECS 클러스터의 이름으로 바꿉니다. Your_Container_Instance_ID를 AWS Batch 작업의 Amazon ECS 컨테이너 인스턴스 ID로 바꿉니다.

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

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?