AWS Batch ジョブの Amazon EC2 インスタンスの ID または IP アドレスを取得するにはどうすればよいですか?

最終更新日: 2020 年 2 月 25 日

AWS Batch ジョブの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの ID または IP アドレスを取得したいと考えています。

簡単な説明

AWS Batch ジョブで実行される Amazon EC2 インスタンスに関する情報を取得するには、まずジョブのコンテナ ID を取得する必要があります。次に、コンテナインスタンス ID を使用して EC2 インスタンス ID を取得できます。最後に、EC2 インスタンス ID を使用して、そのインスタンスの IP アドレスを取得できます。

解決方法

AWS Batch ジョブのコンテナインスタンス ID を取得する

1.    AWS Batch ジョブのコンテナインスタンス ID を取得するには、次の describe-jobs コマンドを実行します。

$ aws batch describe-jobs --jobs YourJobID

出力には、コンテナインスタンス ID を含め、ジョブのすべてのプロパティとパラメータが記述されています。containerInstanceArn プロパティには、コンテナインスタンス ID が表示されます。次の例を参照してください。

{
    "jobs": [
        {
            "status": "SUCCEEDED",
            "container": {
                "mountPoints": [],
                "taskArn": "arn:aws:ecs:us-east-1:1234567890:task/8fde8ebf-c5d8-40ca-8999-b0c2185f577a",
                "logStreamName": "job-definition/default/8fde8ebf-c5d8-40ca-8999-b0c2185f577a",
                "image": "busybox",
                "containerInstanceArn": "arn:aws:ecs:us-east-1:1234567890:container-instance/Your_Container_Instance_ID",
                "environment": [],
                "vcpus": 2,
                "jobRoleArn": "arn:aws:iam::1234567890:role/ecsTaskExecutionRole",
                "volumes": [],
                "memory": 2000,
                "command": [
                    "echo",
                    "'hello world'"
                ],
            },
}

2.    AWS Batch コンピューティング環境に対応する Amazon Elastic Container Service (Amazon ECS) クラスターを見つけるには、Amazon ECS コンソールを開き、[Clusters] を選択します。

注意: 作成するすべての AWS Batch コンピューティング環境には、対応する Amazon ECS クラスターがあります。

3.    [Services] タブで、次の形式で表示されるクラスター名を検索します。 ComputeEnvironmentName_Batch_RandomStringOfCharacters

ジョブの EC2 インスタンス ID を取得する

EC2 インスタンス ID を取得するには、describe-container-instances コマンドを実行し、前述のステップ 1 で取得したコンテナインスタンス ID を渡します。

$ aws ecs describe-container-instances --cluster Your_Cluster_Name --container-instances Your_Container_Instance_ID

出力には EC2 インスタンス ID が表示されます。次の例を参照してください。

CONTAINERINSTANCES          True     arn:aws:ecs:us-east-1:1234567890:container-instance/Your_EC2_Instance_ID           i-0ab1cdefghij23k45    0          1234567890.12           0          ACTIVE 5

インスタンスの IP アドレスを取得する

EC2 インスタンス ID を取得したので、その ID を使用して EC2 インスタンスの IP アドレスを見つけることができます。

1.    Amazon EC2 コンソールを開きます。

2.    [Running instances] を選択します。

3.    [Instance ID] 列で、先ほど取得したインスタンス ID を探します。

4.    前述のステップ 3 で特定したインスタンスについて、IPv4 Public IP アドレスの列でその IP アドレスを探します。

マルチノードの AWS Batch ジョブのインスタンス情報を取得する

子ジョブのコンテナインスタンス ID を取得するには、個々の子ジョブで次の describe-jobs コマンドを実行します。

$ aws batch describe-jobs --jobs Your_Job_ID#1

重要: 各子ジョブは一意のノード上にあるため、親ジョブにはコンテナインスタンスに関する情報がありません。子ジョブの場合、ノード表記を使用して子ジョブのインデックスをジョブ ID に追加します。前述のコマンドでは、#1 はジョブの最初のノードに、#2 は 2 番目のノードにそれぞれアクセスし、以下同様に続きます。詳細については、「マルチノードの並列ジョブ」を参照してください。

EC2 インスタンス ID を取得するには、describe-container-instances コマンドを実行し、前に取得したコンテナインスタンス ID を渡します。

$ aws ecs describe-container-instances --cluster Your_Cluster_Name --container-instances Your_Container_Instance_ID

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合