チュートリアル: Amazon EC2 リソースにマルチノード並列ジョブ定義を作成する - AWS Batch

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: Amazon EC2 リソースにマルチノード並列ジョブ定義を作成する

Amazon Elastic Compute Cloud (Amazon EC2) リソースにマルチノード並列ジョブ定義を作成する方法を説明します。

注記

単一ノードのジョブ定義を作成するには、「チュートリアル: Amazon EC2 リソースにシングルノードのジョブ定義を作成する」を参照してください。

Amazon EC2 リソースにマルチノード並列ジョブ定義を作成するには:
  1. https://console.aws.amazon.com/batch/ で AWS Batch コンソールを開きます。

  2. ナビゲーションバーから、使用する AWS リージョン を選択します。

  3. ナビゲーションペインで、ジョブ定義 を選択します。

  4. 作成] を選択します。

  5. [オーケストレーションタイプ] には、[Amazon Elastic Compute Cloud (Amazon EC2)] を選択します。

  6. [マルチノード並列を有効にする] では、マルチノード並列をオンにします。

  7. 名前 には、一意のジョブ定義名を入力します。名前には、アルファベット (大文字、小文字)、数字、ハイフン (-)、アンダースコア (_) を含めることができ、最大 128 文字まで使用可能です。

  8. (オプション) 実行のタイムアウト で、ジョブの試行で実行する最大秒数を指定します。試行時間がこの秒数を超過すると、試行は停止し、FAILED ステータスに移行します。詳細については、ジョブのタイムアウトを参照してください。

  9. (オプション) [スケジューリング優先度] をオンにします。0 ~ 100 の値でスケジューリング優先度を入力します。値が大きいほど、低い値よりも優先されます。

  10. (オプション) ジョブの試行回数 には、AWS Batch ジョブを RUNNABLE ステータスに移行する最大回数を入力します。1 ~ 10 の整数を入力します。

  11. (オプション) 再試行戦略の条件 では、終了時に評価を追加 を選択します。少なくとも 1 つのパラメータ値を入力し、アクション を選択します。条件セットごとに、アクション再試行 または 終了 に設定する必要があります。これらのアクションは、以下のことを意味します。

    • 再試行 — AWS Batch は、指定したジョブ試行回数に達するまで再試行します。

    • 終了 — AWS Batch は、ジョブの再試行を停止します。

    重要

    終了時に評価を追加 を選択した場合は、少なくとも 1 つのパラメータを設定して アクション] を選択するか、終了時に評価を削除] を選択します。

  12. (オプション) タグ を展開し、タグを追加 を選択してリソースにタグを追加します。タグの追加 を選択し、キーとオプションの値を入力します。タグを伝播 をオンにして、タグをジョブとジョブ定義から Amazon ECS タスクに伝達することもできます。

  13. 次のページ を選択します。

  14. ノード数] にジョブで使用するノードの合計数を入力します。

  15. 主要なノード] で、主要なノードに使用するノードインデックスを入力します。デフォルトの主要なノードインデックスは、0 です。

  16. インスタンスタイプ でインスタンスのタイプを選択します。

    注記

    選択したインスタンスタイプはすべてのノードに適用されます。

  17. [パラメータ][パラメータを追加] を選択し、パラメータ代替プレースホルダーを [キー] とオプションの [値] のペアとして追加します。

  18. [ノード範囲] セクション:

    1. ノード範囲の追加] を選択します。これにより、ノード範囲 セクションが作成されます。

    2. ターゲットノード] で、range_start:range_end 表記を使用してノードグループの範囲を指定します。

      ジョブに指定したノードに対して 5 つまでのノード範囲を作成できます。ノード範囲はノードに対してインデックス値を使用し、ノードインデックスは 0 から開始します。最終ノードグループの範囲終了インデックス値が、指定したノード数より 1 つ少ないことを確認してください。たとえば、10 個のノードを指定し、1 つのノードグループを使用するとします。その場合、終了範囲は 9 にする必要があります。

    3. イメージ で、ジョブに使用する Docker イメージを選択します。デフォルトでは、Docker Hub レジストリのイメージを使用できます。repository-url/image:tag で他のリポジトリを指定することもできます。名前の長さは最大 225 文字です。大文字、小文字、数字、ハイフン (-)、アンダースコア (_)、コロン (:)、スラッシュ (/)、およびシャープ (#) を含めることができます。このパラメータは、Docker Remote APIコンテナの作成 セクションにある Image および docker runIMAGE パラメータにマッピングされます。

      注記

      Docker イメージのアーキテクチャは、スケジュールされているコンピューティングリソースのプロセッサアーキテクチャと一致している必要があります。例えば、Arm ベースの Docker イメージは、Arm ベースのコンピューティングリソースでのみ実行することができます。

      • Amazon ECR Public リポジトリ内のイメージには、完全な registry/repository[:tag] または registry/repository[@digest] 命名規則が使用されます (例えば、public.ecr.aws/registry_alias/my-web-app:latest)。

      • Amazon ECR リポジトリ内のイメージには、完全な registry/repository[:tag] 命名規則が使用されます。例えば、aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app:latest

      • Docker Hub の公式リポジトリのイメージでは、1 つの名前 (例: ubuntu または mongo) を使用します。

      • Docker Hub の他のリポジトリのイメージは、組織名で修飾されます (例: amazon/amazon-ecs-agent)。

      • 他のオンラインリポジトリのイメージは、さらにドメイン名で修飾されます (例: quay.io/assemblyline/ubuntu)。

    4. [コマンド構文] には、[Bash] または [JSON] を選択します。

    5. コマンド] では、コンテナに渡すコマンドを指定します。シンプルなコマンドの場合は、コマンドプロンプトに入力するように スペース区切り タブにコマンドを入力します。次に、JSON の結果が正しいことを確認します。JSON の結果が Docker daemon に渡されます。より複雑なコマンド (特殊文字を含むものなど) の場合は、JSON] タブに切り替えて同等の文字列配列を入力できます。

      このパラメータは Docker Remote APIコンテナの作成 セクションの Cmd にマッピングされ、COMMAND パラメータは docker run にマッピングされます。DockerCMD パラメータの詳細については、https://docs.docker.com/engine/reference/builder/#cmdを参照してください。

      注記

      コマンドには、パラメータ置換のデフォルト値とプレースホルダーを使用できます。詳細については、パラメータを参照してください。

    6. vCPU] で、コンテナ用に予約する vCPU の数を指定します。このパラメータは、Docker Remote API コンテナの作成セクションの CpuShares にマップされ、--cpu-shares オプションは docker run にマップされます。各 vCPU は 1,024 個の CPU 配分に相当します。少なくとも 1 つの vCPU を指定する必要があります。

    7. メモリ] で、ジョブのコンテナに適用されるメモリのハード制限 (MiB 単位) を指定します。コンテナは、ここで指定したメモリを超えようとすると、停止されます。このパラメータは、Docker Remote API コンテナの作成セクションの Memory にマップされ、--memory オプションは docker run にマップされます。ジョブに対して少なくとも 4 MiB のメモリを指定する必要があります。

      注記

      リソースの使用率を最大限に高めるには、特定のインスタンスタイプに対してできるだけ多くのメモリを提供します。詳細については、コンピューティングリソースメモリの管理を参照してください。

    8. (オプション) GPU 数 に、ジョブで使用される GPU の数を指定します。ジョブは、指定された数の GPU が固定されているコンテナで実行されます。

    9. (オプション) ジョブロール] では、AWS API を使用する権限をジョブのコンテナに付与する IAM ロールを指定できます。この機能では、タスク用の Amazon ECS IAM ロールを使用します。設定の前提条件を含む詳細については、Amazon Elastic Container Service デベロッパーガイド のタスク用の IAM ロールを参照してください。

      注記

      Fargate リソースで実行されているジョブには、ジョブロールが必要です。

      注記

      ここには、Amazon Elastic Container Service Task Role] 信頼関係があるロールのみが表示されます。AWS Batch ジョブの IAM ロールの作成に関する詳細については、Amazon Elastic Container Service デベロッパーガイドタスク用の IAM ロールとポリシーの作成を参照してください。

    10. (オプション) 実行ロール で、ユーザーに代わって AWS API コールを実行するためのアクセス許可を Amazon ECS コンテナエージェントに付与する IAM ロールを指定できます。この機能では、タスク用の Amazon ECS IAM ロールを使用します。詳細については、Amazon Elastic Container Service デベロッパーガイドのAmazon ECS タスク実行 IAM ロールを参照してください。

  19. (オプション) 追加設定 を展開します。

    1. 環境変数 では、環境変数を追加 を選択し、環境変数を名前と値のペアとして追加します。これらの変数は、コンテナに渡されます。

    2. (オプション) ジョブロール設定 で、AWS API を使用する権限をジョブのコンテナに付与する IAM ロールを指定できます。この機能では、タスク用の Amazon ECS IAM ロールを使用します。設定の前提条件を含む詳細については、Amazon Elastic Container Service デベロッパーガイド のタスク用の IAM ロールを参照してください。

      注記

      Fargate リソースで実行されているジョブには、ジョブロールが必要です。

      注記

      ここには、Amazon Elastic Container Service Task Role] 信頼関係があるロールのみが表示されます。AWS Batch ジョブの IAM ロールの作成方法に関する詳細については、Amazon Elastic Container Service デベロッパーガイドのタスク用の IAM ロールとポリシーの作成を参照してください。

    3. 実行ロール で、ユーザーに代わって AWS API コールを実行するためのアクセス許可を Amazon ECS コンテナエージェントに付与する IAM ロールを指定できます。この機能では、タスク用の Amazon ECS IAM ロールを使用します。詳細については、Amazon Elastic Container Service デベロッパーガイドのAmazon ECS タスク実行 IAM ロールを参照してください。

  20. [セキュリティ設定] セクション:

    1. (オプション) 特権 を有効にすると、ホストインスタンスに対する昇格されたアクセス権限 (root ユーザーと同様) をジョブのコンテナに付与することができます。このパラメータは、Docker Remote API の 「Create a container (コンテナを作成する)」セクションの Privileged にマップされ、--privileged オプションは docker run にマップされます。

    2. (オプション) ユーザー には、コンテナ内で使用するユーザー名を入力します。このパラメータは、Docker Remote API の 「Create a container (コンテナを作成する)」セクションの User にマップされ、--user オプションは docker run にマップされます。

    3. (オプション) [シークレット] で、[シークレットを追加] を選択して、シークレットを名前と値のペアとして追加します。これらのシークレットはコンテナに公開されます。詳細については、「LogConfiguration:secretOptions」を参照してください。

  21. [Linux 設定] セクション:

    1. [読み取り専用ファイルシステムを有効にする] をオンにして、ボリュームへの書き込みアクセスを削除します。

    2. (オプション) [init プロセスを有効にする] をオンにして、コンテナ内で init プロセスを実行します。このプロセスは信号を転送し、プロセスを利用します。

    3. [共有メモリサイズ] では、/dev/shm ボリュームのサイズ (MiB) を入力します。

    4. 最大スワップサイズ では、コンテナが使用できるスワップメモリの合計容量 (MiB 単位) を入力します。

    5. スワップ動作 では、コンテナのスワップ動作を示す 0 ~ 100 の値を入力します。値を指定せず、スワップが有効になっている場合、デフォルト値は 60 です。詳細については、「LinuxParameters:swappiness」を参照してください。

    6. (オプション) デバイス では、デバイスを追加 を選択してデバイスを追加します。

      1. コンテナパス] では、コンテナインスタンスでのデバイスのパスを指定します。このパスは、ホストインスタンスにマッピングされたデバイスを公開するために使用されます。空白のままにすると、ホストパスがコンテナで使用されます。

      2. ホストパス] では、ホストインスタンスでのデバイスのパスを指定します。

      3. アクセス許可] では、デバイスに適用する 1 つ以上のアクセス許可を選択します。使用できる権限は、[読み取り][書き込み][MKNOD] です。

  22. (オプション) [マウントポイント] で、[マウントポイント構成を追加] を選択し、データボリュームにマウントポイントを追加します。ソースボリュームとコンテナパスを指定する必要があります。これらのマウントポイントは、コンテナインスタンスの Docker デーモンに渡されます。ボリュームを [読み取り専用] にすることもできます。

  23. (オプション) [Ulimit 設定] では、[ulimit を追加] を選択して、コンテナの ulimits 値を追加します。[名前][ソフトリミット][ハードリミット] の値を入力し、[ulimit を追加] を選択します。

  24. (オプション) [ボリューム設定] で、[ボリュームを追加] を選択して、コンテナに渡すボリュームのリストを作成します。ボリュームの [名前][ソースパス] を入力し、[ボリュームを追加] を選択します。[EFS を有効にする] オプションを選択することもできます。

  25. (オプション) [Tmpfs] では、[tmpfs を追加] を選択して tmpfs マウントを追加します。

  26. (オプション) [ロギング設定] セクション:

    1. [ログドライバー] で、使用するログドライバーを選択します。使用できるログドライバーの詳細については、「LogConfiguration:logDriver」を参照してください。

      注記

      デフォルトでは、awslogs ログドライバーが使用されます。

    2. [オプション] では、[オプションを追加] を選択してオプションを追加します。名前と値のペアを入力し、[オプションを追加] を選択します。

    3. [シークレット] で、[シークレットを追加] を選択します。名前と値のペアを入力し、[シークレットを追加] を選択してシークレットを追加します。

      ヒント

      詳細については、「LogConfiguration:secretOptions」を参照してください。

  27. [次のページ] を選択します。

  28. ジョブ定義のレビューについては、設定手順を確認してください。変更する必要がある場合は、編集] を選択します。完了したら、ジョブ定義の作成 を選択します。