如何取得 AWS Batch 任務的 Amazon EC2 執行個體的 ID 和 IP 地址?

2 分的閱讀內容
0

我想要取得 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 資源使用新的長 Amazon Resource Name (ARN) 格式,該格式現在包含 ECS 叢集名稱。本文提供使用新或舊 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

重要:使用 AWS Batch 任務的任務 ID 取代 <your_job_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 主控台
選擇叢集
選擇服務標籤。
然後,搜尋以下列格式顯示的叢集名稱: ComputeEnvironmentName_Batch_RandomStringOfCharacters

3.    執行下列 describe-container-instances 命令,取得叢集的關聯 Amazon EC2 執行個體 ID

**重要:**使用 Amazon ECS 叢集名稱取代 <Your_Cluster_Name>。使用 AWS Batch 任務的 Amazon ECS 容器執行個體 ID 取代 <Your_Container_Instance_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.    選擇執行執行個體

3.    在執行個體 ID 欄中,尋找 Amazon EC2 執行個體的執行個體 ID

4.    在執行個體 ID 所在的同一列中,查看 IPv4 公有 IP 地址欄。列出的值是 Amazon EC2 執行個體的 IP 地址。

AWS CLI

執行下列 describe-instances 命令:

**重要:**使用 Amazon EC2 執行個體 ID 取代 <EC2_ID>

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

取得多節點 AWS Batch 任務的執行個體資訊

1.    在個別子任務上執行下列 describe-jobs 命令,取得子任務的容器執行個體 ID

**重要:**使用 AWS Batch 任務 ID 取代 Your_Job_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

**重要:**使用 Amazon ECS 叢集名稱取代 Your_Cluster_Name。使用 AWS Batch 任務的 Amazon ECS 容器執行個體 ID 取代 Your_Container_Instance_ID

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

AWS 官方
AWS 官方已更新 2 年前