

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

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

でジョブを実行する前に AWS Batch、ジョブ定義を作成する必要があります。このプロセスは、シングルノードとマルチノード並列ジョブでは若干異なります。このトピックでは、マルチノード並列ジョブではない AWS Batch ジョブ (*ギャングスケジューリング*とも呼ばれます) のジョブ定義を作成する方法について説明します。

Amazon Elastic コンテナサービスのリソースで、マルチノード並列ジョブ定義を作成できます。詳細については、[マルチノード並列ジョブ定義を作成する](create-multi-node-job-def.md)を参照してください。

**Topics**
+ [Amazon EC2 リソースにシングルノードのジョブ定義を作成する](create-job-definition-EC2.md)
+ [Fargate リソースでシングルノードのジョブ定義を作成する](create-job-definition-Fargate.md)
+ [Amazon EKS リソースにシングルノードのジョブ定義を作成する](create-job-definition-eks.md)
+ [Amazon EC2 リソースに複数のコンテナを持つシングルノードのジョブ定義を作成する](create-job-definition-single-node-multi-container.md)

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

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

 AWS Fargate リソースに単一ノードのジョブ定義を作成するには、次の手順を実行します。

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

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

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

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

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

1. **オーケストレーションタイプ]** には **Fargate** を選択します。詳細については、[Fargate のコンピューティング環境](fargate.md)を参照してください。

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

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

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

1. (オプション) **タグ** を展開し、**タグを追加** を選択してリソースにタグを追加します。**タグを伝達** をオンにして、タグをジョブとジョブ定義から伝達することができます。

1. **Fargate プラットフォーム設定** セクションで:

   1. **ランタイムプラットフォーム** では、コンピューティング環境アーキテクチャを選択します。

   1. **オペレーティングシステムファミリ** では、コンピューティング環境のオペレーティングシステムを選択します。

   1. **CPU アーキテクチャ** で、vCPU アーキテクチャを選択します。

   1. **Fargate プラットフォームバージョン** では、`LATEST` または特定のランタイム環境バージョンを入力します。

   1. (オプション) **パブリック IP アドレスの割り当て** をオンにして、Fargate ジョブネットワークネットワークインターフェイスにパブリック IP アドレスを割り当てます。プライベートサブネットで動作しているジョブがインターネットにアウトバウンドトラフィックを送信するためには、プライベートサブネットに NAT ゲートウェイをインターネットへのルートリクエストに接続する必要があります。コンテナイメージをプルできるように、この操作を行う必要がある場合があります。詳細については、*Amazon Elastic Container Service デベロッパーガイド*の[Amazon ECS のタスクネットワーキング](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)を参照してください。

   1. (オプション) **エフェメラルストレージ** で、タスクに割り当てるエフェメラルストレージの容量を入力します。エフェメラルストレージの容量は 21 GiB から 200 GiB の間に設定する必要があります。値を指定しない場合には、デフォルトで 20 GiB の一時ストレージが割り当てられます。
**注記**  
エフェメラルストレージには、Fargate プラットフォームバージョン 1.4 以降が必要です。

   1. **実行ロール**には、ユーザーに代わって AWS API コールを行うアクセス許可を Amazon ECS コンテナと Fargate エージェントに付与する 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 Batch ジョブを `RUNNABLE` ステータスに移行する最大回数を入力し 1 ～ 10 の整数を入力します。

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

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. (オプション) パラメータを名前と値のペアとしてジョブ定義に追加することで、デフォルトのジョブ定義を上書きすることができます。パラメータを追加するには:

      1. **パラメータ** で **パラメータの追加** を選択し、名前と値のペアを入力して **パラメータの追加** を選択します。
**重要**  
**パラメータを追加** を選択した場合は、少なくとも1つのパラメータを設定するか、**パラメータの削除** を選択する必要があります。

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

      

      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. **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 のメモリを指定する必要があります。

         GuardDuty Runtime Monitoring を使用する場合、GuardDuty セキュリティエージェントには多少のメモリオーバーヘッドがあります。したがって、メモリ制限には GuardDuty セキュリティエージェントのサイズを含める必要があります。GuardDuty セキュリティエージェントのメモリ制限については、「*GuardDuty ユーザーガイド*」の「[CPU およびメモリ制限](https://docs.aws.amazon.com/guardduty/latest/ug/prereq-runtime-monitoring-ecs-support.html#ecs-runtime-agent-cpu-memory-limits)」を参照してください。ベストプラクティスの詳細については、「*Amazon ECS 開発者ガイド*」の「[ランタイムモニタリングを有効にした後、Fargate タスクのメモリ不足エラーに対処するにはどうすればよいですか?](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-troubleshooting.html#memory-error)」を参照してください。
**注記**  
特定のインスタンスタイプのジョブにメモリの優先順位を付けることで、リソース使用率を最大化できます。詳細については、[コンピューティングリソースメモリの管理](memory-management.md)を参照してください。

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

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

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

1. (オプション) **Linux 設定** セクションで:

   1. **ユーザー** では、コンテナ内で使用するユーザー名を入力します。

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

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

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

   1. **マウントポイント設定** では、**マウントポイント設定の追加** を選択し、データボリュームにマウントポイントを追加します。ソースボリュームとコンテナパスを指定する必要があります。これらのマウントポイントはコンテナインスタンス上の Docker daemon に渡されます。

   1. **ボリューム設定** で、**ボリュームを追加** を選択して、コンテナに渡すボリュームのリストを作成します。ボリュームの **名前** と **ソースパス** を入力し、**ボリュームを追加** を選択します。

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

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

Amazon Elastic Kubernetes Service (Amazon EKS) でシングルノードのジョブ定義を作成するには、次の手順を実行します。

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

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

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

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

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

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

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

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

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

1. (オプション) **タグ** を展開し、次に**タグを追加]** を選択してリソースにタグを追加します。

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

1. **EKS pod プロパティ** セクションで:

   1. **サービスアカウント名**には、podで実行されるプロセスのIDを提供するアカウントを入力します。

   1. **ホストネットワーク** を有効にしてKubernetespod ネットワークモデルを使用し、受信接続用のリスニングポートを開きます。この設定は送信通信でのみオフにしてください。

   1. (オプション) **DNSポリシー** で、次のいずれかを選択します：
      + **値なし (null化)** — pod は 、Kubernetes 環境からの DNS 設定を無視します。
      + **デフォルト** — podは、実行されているノードからDNS名前解決を継承します。
**注記**  
DNSポリシーが指定されていない場合、**Default** はデフォルトDNSポリシーではありません。代わりに、**ClusterFirst** が使用されます。
      + **ClusterFirst** — 設定されたクラスタードメインサフィックスと一致しないDNS クエリは、ノードから継承されたアップストリームのネームサーバーに転送されます。
      + **ClusterFirstWithHostNet** — **[ホストネットワーク]** がオンになっている場合に使用します。

   1. (オプション) **[ボリューム]** で、**[ボリュームの追加]** を選択し、次の操作を行います。

      1. ボリュームの **[名前]** を追加します。

      1. (オプション) ホスト上のディレクトリの **[ホストパス]** を追加します。

      1. (オプション) **[中間]** と **[サイズ制限]** を追加して、[[Kubernetes emptyDir]](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) を設定します。

      1. (オプション) ポッドの **[シークレット名]** と、シークレットが **[オプション]** であるかどうかを指定します。

      1. (オプション) Kubernetes [[永続ボリュームクレーム]](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) をポッドにアタッチする **[クレーム名]** と、それが **[読み取り専用]** かどうかを定義します。

   1. (オプション) **ポッドラベル** には、**[ポッドラベルを追加]** を選択し、名前と値のペアを入力します。
**重要**  
ポッドラベルのプレフィックスには`kubernetes.io/`、`k8s.io/`、または `batch.amazonaws.com/` を含めることはできません。

   1. (オプション) **[ポッドアノテーション]** で　**[アノテーションの追加]** を選択し、名前と値のペアを入力します。
**重要**  
ポッドアノテーションのプレフィックスには `kubernetes.io/`、`k8s.io/`、`batch.amazonaws.com/` を含めることはできません。

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

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

      1. **名前** に、コンテナの一意の名前を入力します。名前は文字または数字で始まる必要があり、最長63文字まで入力できます。小文字と大文字の英文字、数字、およびハイフン (-) を含めることができます。

      1. **Image** (イメージ) で、ジョブに使用するDocker イメージを選択します。デフォルトでは、Docker Hubレジストリのイメージを使用できます。`repository-url/image:tag` で他のリポジトリを指定することもできます。名前の長さは最大255文字です。大文字と小文字の英文字、数字、ハイフン (-)、アンダースコア (\$1)、コロン (:)、ピリオド (.)、スラッシュ (/)、および数字 (\$1)を含めることができます。このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/) の「[Create a container](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. (オプション) **イメージプルポリシー** では、イメージをプルするタイミングを選択します。

      1. (オプション) **[コマンド]** には、コンテナに渡す JSON コマンドを入力します。

      1. (オプション) **引数**、コンテナに渡す引数を入力します。引数が指定されていない場合は、コンテナイメージコマンドが使用されます。

   1. (オプション) 名前と値のマッピングとしてジョブ定義にパラメータを追加して、ジョブ定義のデフォルトを上書きできます。パラメータを追加するには：

      1. **パラメータ]** には、名前と値のペアを入力し、**次にパラメータの追加** を選択します。
**重要**  
**パラメータを追加** を選択した場合は、少なくとも 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. (オプション) **環境変数** で **環境変数を追加** を選択し、環境変数を名前と値のペアとして追加します。これらの変数は、コンテナに渡されます。

   1. (オプション) **ボリュームマウント** では:

      1. **ボリュームマウントを追加** を選択します。

      1. **名前** を入力し、そして次にボリュームがマウントされているコンテナに **[マウントパス]** を入力します。**[SubPath]** を入力して、ルートではなく、参照されるボリューム内のサブパスを指定します。

      1. **読み取り専用** を選択すると、ボリュームへの書き込み権限が削除されます。

      1. **ボリュームマウントを追加** を選択します。

   1. (オプション)**ユーザーとして実行** には、ユーザー ID を入力してコンテナプロセスを実行します。
**注記**  
コンテナを実行するには、ユーザー ID がイメージに存在している必要があります。

   1. (オプション)**グループとして実行** には、コンテナプロセスのランタイムを実行するグループ ID を入力します。
**注記**  
コンテナを実行するには、グループ ID がイメージに存在している必要があります。

   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. (オプション) **読み取り専用ルートファイルシステム** を有効にして、ルートファイルシステムへの書き込みアクセスを削除します。

   1. (オプション) 非ルートユーザーとして pod でコンテナを実行するために、**[非ルートとして実行]** をオンにします。
**注記**  
**非ルートユーザーとして実行する** がオンになっている場合、kubelet は実行時にイメージを検証して、イメージが UID 0 として実行されていないことを確認します。

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

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

# Amazon EC2 リソースに複数のコンテナを持つシングルノードのジョブ定義を作成する
<a name="create-job-definition-single-node-multi-container"></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. **[ジョブ定義構造]** で、**[レガシー containerProperties 構造の使用]** の処理をオフにします。

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

1. [**次へ**] を選択します。

1. **[全般設定]** セクションで、次のように入力します。

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

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

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

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

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

1. **[再試行戦略 - *オプション*]** セクションで、次のように入力します。

   1. **[ジョブの試行回数]** には、 AWS Batch がジョブを `RUNNABLE` ステータスに移行させるまでの試行回数を入力します。1 ～ 10 の整数を入力します。

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

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. **[IPC モード]** の場合は `host`、`task`、`none` を選択します。`host` が指定されている場合、同一のコンテナインスタンス上にある (ホスト IPC モードを指定した) タスク内のすべてのコンテナは、ホスト Amazon EC2 インスタンスと同じ IPC リソースを共有します。タスクが指定されている場合、指定されたタスク内のすべてのコンテナは同じ IPC リソースを共有します。none (なし) が指定されている場合、タスクのコンテナ内の IPC リソースはプライベートです。タスク内またはコンテナインスタンスの他のコンテナと共有されることはありません。値を指定しない場合、IPC リソース名前空間の共有はコンテナインスタンスの Docker デーモンの設定によって異なります。

   1. **[PID モード]** の場合は、`host` または `task` を選択します。例えば、サイドカーのモニタリングでは、`pidMode` が同じタスクで実行されている他のコンテナに関する情報にアクセスする必要がある場合があります。`host` が指定されている場合、同じコンテナインスタンスでホスト PID モードを指定したタスク内のすべてのコンテナは、ホスト Amazon EC2 インスタンスと同じプロセス名前空間を共有します。`task` が指定されている場合、指定したタスク内のすべてのコンテナは同じプロセス名前空間を共有します。値が指定されていない場合、デフォルトは各コンテナのプライベート名前空間です。

1. **[消費型リソース]** セクションに、次のように入力します。

   1. 一意の **[名前]** と **[リクエストされた値]** を入力します。

   1. **[消費型リソースの追加]** を選択すると、消費型リソースを追加できます。

1. **[ストレージ]** セクションで、以下の操作を行います。

   1. ボリュームの **[名前]** と **[ソースパス]** を入力し、**[ボリュームを追加]** を選択します。[EFS を有効にする] オプションを選択することもできます。

   1. **[ボリュームの追加]** を選択すると、ボリュームを追加できます。

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

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

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

   1. **[Name]** (名前) に、コンテナの名前を入力します。

   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. **[リソース要件]** には、以下をそれぞれ設定します。

      1. **[vCPUs]** では、コンテナの CPU 数を選択します。

      1. **[メモリ]** では、コンテナのメモリ量を選択します。

      1. **[GPU - *オプション*]** では、コンテナの GPU の数を選択します。

   1. **[ユーザー]** には、コンテナ内で使用するユーザー名を入力します。

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

   1. **[特権]** をオンにして、ルートユーザーと同様に、ホストインスタンスに対する昇格されたアクセス許可をジョブコンテナに付与します。

   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. **[リポジトリ認証情報 - *オプション*]** では、認証情報を含むシークレットの ARN を入力します。

   1. **[環境変数 - *オプション*]** では、**[環境変数の追加]** を選択し、コンテナに渡す環境変数を追加します。

   1. **[Linux パラメータ - *オプション*]** セクションでは、以下を行います:

      1. **init プロセスを有効にする** をオンにすると、コンテナ内で init プロセスを実行できます。

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

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

      1. **スワップ動作** では、コンテナのスワップ動作を示す 0 ～ 100 の値を入力します。値を指定せず、スワップが有効になっている場合、この値はデフォルトで 60 に設定されます。

      1. **デバイス** で、**デバイスを追加** を選択してデバイスを追加します。

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

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

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

      1. **Tmpfs** では、**tmpfs を追加** を選択して `tmpfs` マウントを追加します。

   1. 
**注記**  
Firelens のログ記録は、専用コンテナで行う必要があります。Firelens ログ記録を設定するには:  
専用 Firelens コンテナを除くすべてのコンテナで、**[ロギングドライバー]** を `awsfirelens` に設定します。
Firelens コンテナで、**[Firelens 設定 - オプション]** およびログ記録先に対する **[ログ記録設定 - *オプション*]** を設定します。

      **[Firelens 設定 - オプション]** セクションで以下を行います。
**重要**  
AWS Batch は、非 MNP、非 FARGATE Amazon ECS ジョブに`host`ネットワークモードを適用します。Amazon ECS Firelens には [ルートユーザーが必要です](https://github.com/aws/aws-for-fluent-bit/blob/mainline/troubleshooting/debugging.md#amazon-ecs-firelens-root-is-required)。`host` ネットワークモードを使用するタスクを実行する場合、[セキュリティを強化するために](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#network_mode)　ルートユーザー (UID 0) を使用してコンテナを実行しないでください。したがって、Firelens ログ記録を使用する非 MNP および非 FARGATE ECS ジョブはすべて、セキュリティのベストプラクティスを満たしません。

      1. **[タイプ]** で、`fluentd` または `fluentbit` を選択します。

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

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

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

   1. **[依存関係 - *オプション*]**で、**[コンテナ依存関係の追加]** を選択します。コンテナの名前と状態を選択して、このコンテナがいつ起動するかを決定します。

1. コンテナが 1 つしか設定されていない場合は、**[コンテナの追加]** を選択し、新しいコンテナの設定を完了する必要があります。それ以外の場合は、**[次へ]** を選択して確認します。