

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

# Amazon EC2 リソースにシングルノードのジョブ定義を作成する
<a name="create-job-definition-EC2"></a>

Amazon Elastic Compute Cloud (Amazon EC2) リソースにシングルノードのジョブ定義を作成するには、次の手順を実行します。

**Amazon EC2 リソースに新しいジョブ定義を作成するには:**

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) で AWS Batch コンソールを開きます。

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

1. 左側のナビゲーションペインで **ジョブ定義** を選択します。

1. **[作成]** を選択します。

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

1. **EC2 プラットフォームの設定**で、**マルチノード並列を有効にする** をオフにします。

1. **名前]** に、一意のジョブ定義名を入力します。名前の最大長は 128 文字です。大文字、小文字、数字、ハイフン(-)、アンダースコア(\$1) を含めることができます。

1. (オプション) **実行タイムアウト** で、タイムアウト値 (秒単位) を入力します。実行タイムアウトは、未完了のジョブが終了するまでの時間です。試行時間がこの秒数を超過すると、試行は停止し、`FAILED` ステータスに移行します。詳細については、[ジョブのタイムアウト](job_timeouts.md)を参照してください。最小値は 60 秒です。

1. (オプション) **スケジューリング優先度** をオンにします。0 ～ 100 の値でスケジューリング優先度を入力します。値が大きいほど優先度が高くなります。

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

1. (オプション) **再試行戦略の条件** では、**終了時に評価を追加** を選択します。少なくとも 1 つのパラメータ値を入力し、**アクション** を選択します。条件セットごとに、**アクション** を **再試行** または **終了** に設定する必要があります。これらのアクションは、以下のことを意味します。
   + **再試行 — **指定したジョブ試行回数に達するまで AWS Batch 再試行します。
   + **Exit** – ジョブの再試行を AWS Batch 停止します。
**重要**  
**終了時に評価を追加** を選択した場合は、少なくとも 1 つのパラメータを設定して **アクション]** を選択するか、**終了時に評価を削除]** を選択します。

1. (オプション) **タグ** を展開し、**タグを追加** を選択してリソースにタグを追加します。キーとオプショナル値を入力し、**新しいタグを追加**を選択します。

1. (オプション) **タグを伝播** をオンにして、タグをジョブとジョブ定義から Amazon ECS タスクに伝達することができます。

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

1. **コンテナ設定** セクションで次の操作を行います。

   1. **イメージ** で、ジョブに使用する Docker イメージを選択します。デフォルトでは、Docker Hub レジストリのイメージを使用できます。`repository-url/image:tag` で他のリポジトリを指定することもできます。名前の最大長は 225 文字です。大文字、小文字、数字、ハイフン (-)、アンダースコア (\$1)、コロン (:)、スラッシュ (/)、およびシャープ (\$1) を含めることができます。このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/) の [コンテナの作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) セクションにある `Image` および [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) の `IMAGE` パラメータにマッピングされます。
**注記**  
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`)。

   1. **[コマンド]** では、コマンドを **JSON** 文字列配列に相当するものとしてフィールドに入力します。

      このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/) の [コンテナの作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) セクションにある `Cmd` にマッピングされ、`COMMAND` パラメータは [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) にマッピングされます。Docker`CMD` パラメータの詳細については、[https://docs.docker.com/engine/reference/builder/\$1cmd](https://docs.docker.com/engine/reference/builder/#cmd)を参照してください。
**注記**  
コマンドには、パラメータ置換のデフォルト値とプレースホルダーを使用できます。詳細については、「[パラメータ](job_definition_parameters.md#parameters)」を参照してください。

   1. (オプション) **実行ロール**で、ユーザーに代わって AWS API コールを行うアクセス許可を Amazon ECS コンテナエージェントに付与する IAM ロールを指定します。この機能では、タスク用の Amazon ECS IAM ロールを使用します。詳細については、「*Amazon Elastic Container Service デベロッパーガイド*」の「[Amazon ECS タスク実行 IAM ロール](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html)」を参照してください。

   1. **ジョブロール設定**で、 AWS APIs へのアクセス許可を持つ IAM ロールを選択します。この機能では、タスク用の Amazon ECS IAM ロールを使用します。詳細については、*Amazon Elastic Container Service デベロッパーガイド*の[タスク用の IAM ロール](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)を参照してください。
**注記**  
ここには、**Amazon Elastic Container Service Task Role]** 信頼関係があるロールのみが表示されます。 AWS Batch ジョブの IAM ロールの作成の詳細については、*「Amazon Elastic Container Service* [デベロッパーガイド」の「タスクの IAM ロールとポリシーの作成](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role)」を参照してください。

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

1. **環境設定** セクションで:

   1. **vCPU** では、コンテナ用に予約する vCPU の数を指定します。このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/) の [コンテナの作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) セクションにある `CpuShares` にマッピングされ、`--cpu-shares` オプションは [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) にマッピングされます。各 vCPU は 1,024 個の CPU 配分に相当します。少なくとも 1 つの vCPU を指定する必要があります。

   1. **メモリ** には、コンテナで使用できるメモリー制限を入力します。コンテナは、ここで指定したメモリを超えようとすると、強制終了されます。このパラメータは、[Docker Remote API ](https://docs.docker.com/engine/api/v1.38/)の[コンテナの作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)セクションの `Memory` にマップされ、`--memory` オプションは [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) にマップされます。ジョブに対して少なくとも 4 MiB のメモリを指定する必要があります。
**注記**  
特定のインスタンスタイプのジョブにメモリの優先順位を付けることで、リソース使用率を最大化できます。詳細については、[コンピューティングリソースメモリの管理](memory-management.md)を参照してください。

   1. **GPU の数** では、コンテナ用に予約する GPU の数を指定します。

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

   1. (オプション) **シークレット** で、**シークレットを追加** を選択して、シークレットを名前と値のペアとして追加します。これらのシークレットはコンテナに公開されます。詳細については、「[LogConfiguration:secretOptions](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)」を参照してください。

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

1. **Linux 設定** セクションで：

   1. **ユーザー]** には、コンテナ内で使用するユーザー名を入力します。このパラメータは、[Docker Remote API ](https://docs.docker.com/engine/api/v1.38/)の[コンテナの作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)セクションの `User` にマップされ、`--user` オプションは [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) にマップされます。

   1. (オプション) **特権付与** スライダーを右にドラッグすることで、ホストインスタンスに対する昇格されたアクセス許可 (`root` ユーザーと同様) をジョブコンテナに付与することができます。このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/) の [コンテナの作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) セクションにある `Privileged` にマッピングされ、`--privileged` オプションは [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) にマッピングされます。

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

1. (オプション) **ファイルシステム設定** セクションで：

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

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

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

   1. **スワップ動作** では、コンテナのスワップ動作を示す 0 ～ 100 の値を入力します。値を指定せず、スワップが有効になっている場合、この値はデフォルトで 60 に設定されます。詳細については、「[LinuxParameters:swappiness](https://docs.aws.amazon.com/batch/latest/APIReference/API_LinuxParameters.html#Batch-Type-LinuxParameters-swappiness)」を参照してください。

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

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

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

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

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

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

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

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

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

1. **[タスクプロパティ]** セクションで、次の操作を行います。

   1. **実行ロール - 条件付き**で、Amazon ECS エージェントがユーザーに代わって AWS API コールを実行できるようにするロールを選択します。**実行ロール**の作成について詳しくは、「[チュートリアル: IAM 実行ロールを作成する](create-execution-role.md)」を参照してください。

   1. **[ECS 実行コマンドを有効化]** を選択し、Amazon ECS コンテナシェルへの直接アクセスを有効化し、ホスト OS をバイパスします。**[タスクロール]** を選択する必要があります。
**重要**  
**[ECS 実行]** コマンドでは、ファイルシステムが書き込み可能である必要があります。

   1. **タスクロール**で、Amazon ECS Identity and Access Management (IAM) ロールを選択して、コンテナがユーザーに代わって AWS API コールを実行できるようにします。詳細については、「*Amazon Elastic Container Service デベロッパーガイド*」の「[Amazon ECS のタスク IAM ロール](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)」を参照してください。

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

   1. **[ログドライバー]** で、使用するログドライバーを選択します。使用できるログドライバーの詳細については、「[LogConfiguration:logDriver](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)」を参照してください。
**注記**  
デフォルトでは、`awslogs` ログドライバーが使用されます。

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

   1. **[シークレット]** で、**[シークレットを追加]** を選択します。名前と値のペアを入力し、**[シークレットを追加]** を選択してシークレットを追加します。
**ヒント**  
詳細については、「[LogConfiguration:secretOptions](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)」を参照してください。

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

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