

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

# ジョブ定義
<a name="job_definitions"></a>

AWS Batch ジョブ定義は、ジョブの実行方法を指定します。各ジョブはジョブ定義を参照する必要がありますが、ジョブ定義に指定されているパラメータの多くはランタイムに上書きできます。

ジョブ定義には以下のような属性が指定されています。
+ ジョブのコンテナで使用する Docker イメージ。
+ コンテナで使用する vCPU の数とメモリの量。
+ コンテナの開始時に実行するコマンド。
+ コンテナの開始時に渡す環境変数 (ある場合)。
+ コンテナで使用するデータボリューム。
+ ジョブが AWS アクセス許可に使用する IAM ロール (ある場合）。

**Topics**
+ [シングルノードのジョブ定義を作成する](create-job-definition.md)
+ [マルチノード並列ジョブ定義を作成する](create-multi-node-job-def.md)
+ [ContainerProperties を使用するジョブ定義のテンプレート](job-definition-template.md)
+ [EcsProperties を使用してジョブ定義を作成する](multi-container-jobs.md)
+ [awslogs ログドライバーを使用する](using_awslogs.md)
+ [機密データを指定する](specifying-sensitive-data.md)
+ [ジョブのプライベートレジストリの認証](private-registry.md)
+ [Amazon EFS ボリューム](efs-volumes.md)
+ [ジョブ定義の例](example-job-definitions.md)

# シングルノードのジョブ定義を作成する
<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 つしか設定されていない場合は、**[コンテナの追加]** を選択し、新しいコンテナの設定を完了する必要があります。それ以外の場合は、**[次へ]** を選択して確認します。

# マルチノード並列ジョブ定義を作成する
<a name="create-multi-node-job-def"></a>

でジョブを実行する前に AWS Batch、ジョブ定義を作成する必要があります。このプロセスは、シングルノードとマルチノード並列ジョブでは若干異なります。このトピックでは、 AWS Batch 特にマルチノード並列ジョブ (*ギャングスケジューリング*とも呼ばれます) のジョブ定義を作成する方法について説明します。詳細については、「[マルチノード並列ジョブ](multi-node-parallel-jobs.md)」を参照してください。

**注記**  
AWS Fargate はマルチノードの並列ジョブをサポートしていません。

**Topics**
+ [チュートリアル: Amazon EC2 リソースにマルチノード並列ジョブ定義を作成する](multi-node-job-def-ec2.md)

# チュートリアル: Amazon EC2 リソースにマルチノード並列ジョブ定義を作成する
<a name="multi-node-job-def-ec2"></a>

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

**注記**  
*単一ノード*のジョブ定義を作成するには、「[Amazon EC2 リソースにシングルノードのジョブ定義を作成する](create-job-definition-EC2.md)」を参照してください。

**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. **[マルチノード並列を有効にする]** では、マルチノード並列をオンにします。

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

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

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

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

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

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

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

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

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

1. **インスタンスタイプ** でインスタンスのタイプを選択します。
**注記**  
選択したインスタンスタイプはすべてのノードに適用されます。

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

1. **[ノード範囲]** セクション：

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

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

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

   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. **[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. **メモリ]** で、ジョブのコンテナに適用されるメモリのハード制限 (MiB 単位) を指定します。コンテナは、ここで指定したメモリを超えようとすると、停止されます。このパラメータは、[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 の数を指定します。ジョブは、指定された数の GPU が固定されているコンテナで実行されます。

   1. (オプション) **ジョブロール**では、ジョブ内のコンテナに AWS APIs を使用するアクセス許可を提供する IAM ロールを指定できます。この機能では、タスク用の Amazon ECS IAM ロールを使用します。設定の前提条件を含む詳細については、「*Amazon Elastic Container Service デベロッパーガイド*」の「[タスク用の IAM ロール](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)」を参照してください。
**注記**  
Fargate リソースで実行されているジョブには、ジョブロールが必要です。
**注記**  
ここには、**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. (オプション) **実行ロール**に、ユーザーに代わって 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. (オプション) **追加設定** を展開します。

   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)」を参照してください。
**注記**  
Fargate リソースで実行されているジョブには、ジョブロールが必要です。
**注記**  
ここには、**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. **実行ロール**には、ユーザーに代わって 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. **[セキュリティ設定]** セクション：

   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. (オプション) **ユーザー** には、コンテナ内で使用するユーザー名を入力します。このパラメータは、[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. (オプション) **[シークレット]** で、**[シークレットを追加]** を選択して、シークレットを名前と値のペアとして追加します。これらのシークレットはコンテナに公開されます。詳細については、「[LogConfiguration:secretOptions](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)」を参照してください。

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

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

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

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

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

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

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

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

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

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

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

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

   1. 
**重要**  
**ECS 実行コマンド**を使用するには、コンピューティング環境が[マルチノード並列ジョブのコンピューティング環境に関する考慮事項](mnp-ce.md)を満たす必要があります。

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

# ContainerProperties を使用するジョブ定義のテンプレート
<a name="job-definition-template"></a>

以下は、1 つのコンテナを含む空のジョブ定義のテンプレートです。このテンプレートを使ってジョブ定義を作成し、それをファイルに保存して AWS CLI `--cli-input-json` オプションで使用できます。これらのパラメータの詳細については、「[JobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_JobDefinition.html)」を参照してください。

**注記**  
シングルコンテナジョブ定義のテンプレートは、以下の AWS CLI コマンドで生成できます。  

```
$ aws batch register-job-definition --generate-cli-skeleton
```

```
{
    "jobDefinitionName": "",
    "type": "container",
    "parameters": {
        "KeyName": ""
    },
    "schedulingPriority": 0,
    "containerProperties": {
        "image": "",
        "vcpus": 0,
        "memory": 0,
        "command": [
            ""
        ],
        "jobRoleArn": "",
        "executionRoleArn": "",
        "volumes": [
            {
                "host": {
                    "sourcePath": ""
                },
                "name": "",
                "efsVolumeConfiguration": {
                    "fileSystemId": "",
                    "rootDirectory": "",
                    "transitEncryption": "ENABLED",
                    "transitEncryptionPort": 0,
                    "authorizationConfig": {
                        "accessPointId": "",
                        "iam": "DISABLED"
                    }
                }
            }
        ],
        "environment": [
            {
                "name": "",
                "value": ""
            }
        ],
        "mountPoints": [
            {
                "containerPath": "",
                "readOnly": true,
                "sourceVolume": ""
            }
        ],
        "readonlyRootFilesystem": true,
        "privileged": true,
        "ulimits": [
            {
                "hardLimit": 0,
                "name": "",
                "softLimit": 0
            }
        ],
        "user": "",
        "instanceType": "",
        "resourceRequirements": [
            {
                "value": "",
                "type": "MEMORY"
            }
        ],
        "linuxParameters": {
            "devices": [
                {
                    "hostPath": "",
                    "containerPath": "",
                    "permissions": [
                        "WRITE"
                    ]
                }
            ],
            "initProcessEnabled": true,
            "sharedMemorySize": 0,
            "tmpfs": [
                {
                    "containerPath": "",
                    "size": 0,
                    "mountOptions": [
                        ""
                    ]
                }
            ],
            "maxSwap": 0,
            "swappiness": 0
        },
        "logConfiguration": {
            "logDriver": "syslog",
            "options": {
                "KeyName": ""
            },
            "secretOptions": [
                {
                    "name": "",
                    "valueFrom": ""
                }
            ]
        },
        "secrets": [
            {
                "name": "",
                "valueFrom": ""
            }
        ],
        "networkConfiguration": {
            "assignPublicIp": "DISABLED"
        },
        "fargatePlatformConfiguration": {
            "platformVersion": ""
        }
    },
    "nodeProperties": {
        "numNodes": 0,
        "mainNode": 0,
        "nodeRangeProperties": [
            {
                "targetNodes": "",
                "container": {
                    "image": "",
                    "vcpus": 0,
                    "memory": 0,
                    "command": [
                        ""
                    ],
                    "jobRoleArn": "",
                    "executionRoleArn": "",
                    "volumes": [
                        {
                            "host": {
                                "sourcePath": ""
                            },
                            "name": "",
                            "efsVolumeConfiguration": {
                                "fileSystemId": "",
                                "rootDirectory": "",
                                "transitEncryption": "DISABLED",
                                "transitEncryptionPort": 0,
                                "authorizationConfig": {
                                    "accessPointId": "",
                                    "iam": "ENABLED"
                                }
                            }
                        }
                    ],
                    "environment": [
                        {
                            "name": "",
                            "value": ""
                        }
                    ],
                    "mountPoints": [
                        {
                            "containerPath": "",
                            "readOnly": true,
                            "sourceVolume": ""
                        }
                    ],
                    "readonlyRootFilesystem": true,
                    "privileged": true,
                    "ulimits": [
                        {
                            "hardLimit": 0,
                            "name": "",
                            "softLimit": 0
                        }
                    ],
                    "user": "",
                    "instanceType": "",
                    "resourceRequirements": [
                        {
                            "value": "",
                            "type": "MEMORY"
                        }
                    ],
                    "linuxParameters": {
                        "devices": [
                            {
                                "hostPath": "",
                                "containerPath": "",
                                "permissions": [
                                    "WRITE"
                                ]
                            }
                        ],
                        "initProcessEnabled": true,
                        "sharedMemorySize": 0,
                        "tmpfs": [
                            {
                                "containerPath": "",
                                "size": 0,
                                "mountOptions": [
                                    ""
                                ]
                            }
                        ],
                        "maxSwap": 0,
                        "swappiness": 0
                    },
                    "logConfiguration": {
                        "logDriver": "awslogs",
                        "options": {
                            "KeyName": ""
                        },
                        "secretOptions": [
                            {
                                "name": "",
                                "valueFrom": ""
                            }
                        ]
                    },
                    "secrets": [
                        {
                            "name": "",
                            "valueFrom": ""
                        }
                    ],
                    "networkConfiguration": {
                        "assignPublicIp": "DISABLED"
                    },
                    "fargatePlatformConfiguration": {
                        "platformVersion": ""
                    }
                }
            }
        ]
    },
    "retryStrategy": {
        "attempts": 0,
        "evaluateOnExit": [
            {
                "onStatusReason": "",
                "onReason": "",
                "onExitCode": "",
                "action": "RETRY"
            }
        ]
    },
    "propagateTags": true,
    "timeout": {
        "attemptDurationSeconds": 0
    },
    "tags": {
        "KeyName": ""
    },
    "platformCapabilities": [
        "EC2"
    ],
    "eksProperties": {
        "podProperties": {
            "serviceAccountName": "",
            "hostNetwork": true,
            "dnsPolicy": "",
            "containers": [
                {
                    "name": "",
                    "image": "",
                    "imagePullPolicy": "",
                    "command": [
                        ""
                    ],
                    "args": [
                        ""
                    ],
                    "env": [
                        {
                            "name": "",
                            "value": ""
                        }
                    ],
                    "resources": {
                        "limits": {
                            "KeyName": ""
                        },
                        "requests": {
                            "KeyName": ""
                        }
                    },
                    "volumeMounts": [
                        {
                            "name": "",
                            "mountPath": "",
                            "readOnly": true
                        }
                    ],
                    "securityContext": {
                        "runAsUser": 0,
                        "runAsGroup": 0,
                        "privileged": true,
                        "readOnlyRootFilesystem": true,
                        "runAsNonRoot": true
                    }
                }
            ],
            "volumes": [
                {
                    "name": "",
                    "hostPath": {
                        "path": ""
                    },
                    "emptyDir": {
                        "medium": "",
                        "sizeLimit": ""
                    },
                    "secret": {
                        "secretName": "",
                        "optional": true
                    }
                }
            ]
        }
    }
}
```

# [ContainerProperties] のジョブ定義のパラメータ
<a name="job_definition_parameters"></a>

[https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html) を使用するジョブ定義はいくつかの部分に分かれています。
+ ジョブ定義名
+ ジョブ定義のタイプ
+ パラメータ置換プレースホルダーのデフォルト
+ ジョブのコンテナプロパティ
+ Amazon EKS リソースで実行されるジョブに必要なジョブ定義の Amazon EKS プロパティ
+ マルチノード並列ジョブに必要なノードプロパティ
+ Fargate リソースで実行されるジョブに必要なプラットフォーム機能
+ ジョブ定義のデフォルトタグ伝達の詳細
+ ジョブ定義のデフォルト再試行戦略
+ ジョブ定義のデフォルトのスケジューリング優先度
+ ジョブ定義のデフォルトタグ
+ ジョブ定義のデフォルトタイムアウト

**Contents**
+ [ジョブ定義名](#jobDefinitionName)
+ [タイプ](#type)
+ [パラメータ](#parameters)
+ [コンテナプロパティ](#containerProperties)
+ [Amazon EKS プロパティ](#job-definition-parameters-eks-properties)
+ [プラットフォーム機能](#job-definition-parameters-platform-capabilities)
+ [タグの伝播](#job-definition-parameters-propagate-tags)
+ [ノードプロパティ](#nodeProperties)
+ [再試行戦略](#retryStrategy)
+ [スケジューリング優先順位](#job-definition-parameters-schedulingPriority)
+ [タグ](#job-definition-parameters-tags)
+ [タイムアウト](#timeout)

## ジョブ定義名
<a name="jobDefinitionName"></a>

`jobDefinitionName`  
ジョブ定義の登録時に名前を指定します。名前の最大長は 128 文字です。大文字および小文字の ASCII 文字、数字、ハイフン(-)、アンダースコア(\$1)を含めることができます。その名前で最初に登録するジョブ定義のリビジョン番号は 1 です。その名前で登録する後続のジョブ定義には、増分のリビジョン番号が付けられます。  
タイプ: 文字列  
必須: はい

## タイプ
<a name="type"></a>

`type`  
ジョブ定義の登録時にジョブのタイプを指定します。ジョブが Fargate リソースで実行されている場合、`multinode` はサポートされません。マルチノード並列ジョブの詳細については、[マルチノード並列ジョブ定義を作成する](create-multi-node-job-def.md) を参照してください。  
タイプ: 文字列  
有効な値: `container` \$1 `multinode`  
必須: はい

## パラメータ
<a name="parameters"></a>

`parameters`  
ジョブを送信時に、プレースホルダに代わるパラメータを指定したり、デフォルトのジョブ定義パラメータを上書きすることができます。ジョブ送信リクエストのパラメータは、ジョブ定義のデフォルトよりも優先されます。これにより、同じ形式を使用する複数のジョブに同じジョブ定義を使用できます。送信時にコマンドの値をプログラムで変更することもできます。  
タイプ: 文字列間のマッピング  
必須: いいえ  
ジョブ定義の登録時に、ジョブのコンテナプロパティの `command` フィールドでパラメータ置換プレースホルダーを使用できます。構文は次のとおりです。  

```
"command": [
    "ffmpeg",
    "-i",
    "Ref::inputfile",
    "-c",
    "Ref::codec",
    "-o",
    "Ref::outputfile"
]
```
上の例では、パラメータ置換プレースホルダーとして `Ref::inputfile`、`Ref::codec`、`Ref::outputfile` がコマンドで使用されています。ジョブ定義の `parameters` オブジェクトで、これらのプレースホルダーのデフォルト値を設定できます。例えば、`Ref::codec` プレースホルダーのデフォルトを設定するには、ジョブ定義で次のように指定します。  

```
"parameters" : {"codec" : "mp4"}
```
このジョブ定義を送信すると、実行時にコンテナのコマンドの `Ref::codec` 引数がデフォルト値の `mp4` に置き換えられます。

## コンテナプロパティ
<a name="containerProperties"></a>

ジョブ定義を登録する時に、ジョブの配置時にコンテナインスタンス上のDockerデーモンに渡されるコンテナプロパティのリストを指定します。ジョブ定義では、以下のコンテナプロパティを使用できます。単一のノードジョブでは、上記のプロパティはジョブ定義レベルに設定されます。マルチノード並列ジョブでは、コンテナプロパティは各ノードグループごとに [ノードプロパティ](#nodeProperties) レベルで設定されます。

`command`  
コンテナに渡されるコマンド。このパラメータは [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) を参照してください。  

```
"command": ["string", ...]
```
タイプ: 文字列配列  
必須: いいえ

`environment`  
コンテナに渡す環境変数。このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/) の[コンテナの作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)セクションに`Env`にマップされ、`--env`オプションは[https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)にマップされます。  
認証情報データなどの機密情報にプレーンテキストの環境変数を使用することはお勧めしません。
環境変数は `AWS_BATCH` で始まることはできません。この命名規則は、AWS Batch サービスで設定される変数のために予約されています。
タイプ: キーと値のペアの配列  
必須: いいえ    
`name`  
環境変数の名前。  
タイプ: 文字列  
必須: はい (`environment` を使用する場合)。  
`value`  
環境変数の値。  
タイプ: 文字列  
必須: はい (`environment` を使用する場合)。

```
"environment" : [
    { "name" : "envName1", "value" : "envValue1" },
    { "name" : "envName2", "value" : "envValue2" }
]
```

`executionRoleArn`  
ジョブ定義の登録時に IAM ロールを指定できます。Amazon ECS コンテナエージェントは、このロールから付与されるアクセス権限を使用して、関連するポリシーに指定されている API アクションをユーザーに代わって呼び出します。Fargateリソース上で実行されるジョブは、実行ロールを提供する必要があります。詳細については、[AWS Batch IAM 実行ロール](execution-IAM-role.md)を参照してください。  
型: 文字列  
必須: いいえ

`fargatePlatformConfiguration`  
Fargateリソース上で実行されるジョブのプラットフォーム構成。EC2 リソースで実行されているジョブでは、このパラメータを指定しないでください。  
タイプ: [FargatePlatformConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_FargatePlatformConfiguration.html) オブジェクト  
必須: いいえ    
`platformVersion`  
ジョブに使用される AWS Fargate プラットフォームバージョン、または最近承認されたAWS Fargate プラットフォーム のバージョンを使用するための `LATEST`。  
タイプ: 文字列  
デフォルト: `LATEST`  
必須: いいえ

`image`  
ジョブの開始に使用するイメージ。この文字列は Docker デーモンに直接渡されます。Docker Hub レジストリのイメージはデフォルトで使用できます。`repository-url/image:tag` で他のリポジトリを指定することもできます。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコア、コロン、ピリオド、スラッシュ、シャープ記号を使用できます。このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/)の[コンテナの作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)セクションと [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)の `Image` の `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 ハブの公式リポジトリのイメージでは、1 つの名前 (例: `ubuntu`、`mongo`) を使用します。
+ Docker ハブの他のリポジトリのイメージは、組織名で修飾されます (例: `amazon/amazon-ecs-agent`)。
+ 他のオンラインリポジトリのイメージは、さらにドメイン名で修飾されます (例: `quay.io/assemblyline/ubuntu`)。
タイプ: 文字列  
必須: はい

`instanceType`  
マルチノード並列ジョブに使用するインスタンスタイプ。マルチノード並列ジョブのすべてのノードグループは、同じインスタンスタイプを使用する必要があります。このパラメータは、シングルノード・コンテナ・ジョブやFargateリソース上で実行されるジョブには無効です。  
タイプ: 文字列  
必須: いいえ

`jobRoleArn`  
ジョブ定義の登録時に IAM ロールを指定できます。ジョブコンテナは、このロールから付与されるアクセス権限を使用して、関連するポリシーに指定されている API アクションをユーザーに代わって呼び出します。詳細については、*Amazon Elastic Container Service デベロッパーガイド*の[タスク用の IAM ロール](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)を参照してください。  
タイプ: 文字列  
必須: いいえ

`linuxParameters`  
コンテナに適用される Linux 固有の変更 (デバイスマッピングの詳細など)。  

```
"linuxParameters": {
    "devices": [
        {
            "hostPath": "string",
            "containerPath": "string",
            "permissions": [
                "READ", "WRITE", "MKNOD"
            ]
        }
    ],
    "initProcessEnabled": true|false,
    "sharedMemorySize": 0,
    "tmpfs": [
        {
            "containerPath": "string",
            "size": integer,
            "mountOptions": [
                "string"
            ]
        }
    ],
    "maxSwap": integer,
    "swappiness": integer
}
```
タイプ: [LinuxParameters](https://docs.aws.amazon.com/batch/latest/APIReference/API_LinuxParameters.html) オブジェクト  
必須: いいえ    
`devices`  
コンテナにマッピングされたデバイスのリスト。このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/) の[コンテナの作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)セクションの `Devices` にマップされ、`--device` オプションは [docker run]](https://docs.docker.com/engine/reference/run/) にマップされます。  
このパラメータは、Fargate リソースで実行されているジョブには適用されません。
タイプ: [デバイス](https://docs.aws.amazon.com/batch/latest/APIReference/API_Device.html)オブジェクト配列  
必須: いいえ    
`hostPath`  
ホストコンテナインスタンスで使用可能なデバイスがあるパス。  
タイプ: 文字列  
必須: はい  
`containerPath`  
コンテナでデバイスが公開されるパス。指定しない場合、デバイスはホストパスと同じパスで公開されます。  
タイプ: 文字列  
必須: いいえ  
`permissions`  
コンテナでのデバイスのアクセス許可。指定しない場合、アクセス許可は `READ`、`WRITE`、`MKNOD` に設定されます。  
タイプ: 文字列の配列  
必須: いいえ  
有効な値: `READ` \$1 `WRITE` \$1 `MKNOD`  
`initProcessEnabled`  
true の場合、信号を転送し、プロセスを利用するコンテナ内で `init` プロセスを実行します。このパラメータは、[docker run]](https://docs.docker.com/engine/reference/run/) の `--init` オプションにマッピングされます。このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.25 以上を使用する必要があります。コンテナインスタンスの Docker Remote API のバージョンを確認するには、コンテナインスタンスにログインし、`sudo docker version | grep "Server API version"` コマンドを実行します。  
タイプ: ブール値  
必須: いいえ  
`maxSwap`  
ジョブで使用可能なスワップメモリの合計容量 (単位: MiB) を指定します。このパラメータは、[docker run](https://docs.docker.com/engine/reference/run/) の `--memory-swap` オプションに変換されます。値はコンテナメモリの合計に `maxSwap` 値を加えた値です。詳細については、Docker ドキュメントの[`--memory-swap` 詳細](https://docs.docker.com/config/containers/resource_constraints/#--memory-swap-details)を参照してください。  
`maxSwap` の `0` 値を指定した場合、コンテナはスワップを使用しません。許容値は、`0` または任意の正の整数です。`maxSwap` パラメータが省略された場合、コンテナは実行するコンテナインスタンスのスワップ設定を使用します。`maxSwap` パラメータを使用するには、`swappiness` 値を設定する必要があります。  
このパラメータは、Fargate リソースで実行されているジョブには適用されません。
タイプ: 整数  
必須: いいえ  
`sharedMemorySize`  
`/dev/shm` ボリュームのサイズ値 (MiB) です。このパラメータは、[docker run](https://docs.docker.com/engine/reference/run/) の `--shm-size` オプションにマッピングされます。  
このパラメータは、Fargate リソースで実行されているジョブには適用されません。
タイプ: 整数  
必須: いいえ  
`swappiness`  
これにより、コンテナのメモリスワップ動作を調整できます。`swappiness` 値が `0` の場合、絶対に必要な場合を除きスワップは行われません。`swappiness` の値が `100` の場合は、ページが積極的にスワップされます。使用できる値は、`0` と `100` の間の整数です。`swappiness` パラメータを指定しない場合、デフォルト値の `60` が使用されます。`maxSwap` の値が指定されていない場合、このパラメータは無視されます。`maxSwap` が 0 に設定されている場合、コンテナはスワップを使用しません。このパラメータは、[docker run](https://docs.docker.com/engine/reference/run/) の `--memory-swappiness` オプションにマッピングされます。  
コンテナごとのスワップ構成を使用する場合は、次の点を考慮してください。  
+ スワップ領域を有効にし、コンテナが使用するコンテナインスタンスで割り当てる必要があります。
**注記**  
Amazon ECS 最適化 AMI では、スワップはデフォルトで有効になっていません。この機能を使用するには、インスタンスでスワップを有効にする必要があります。詳細については、「*Amazon EC2 ユーザーガイド*」の「[インスタンスストアスワップボリューム](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-store-swap-volumes.html)」または「[スワップファイルを使用して、Amazon EC2 インスタンスのスワップ領域として機能するようにメモリを割り当てる方法を教えてください。](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/)」を参照してください。
+ スワップ領域のパラメータは、EC2 リソースを使用するジョブ定義でのみサポートされます。
+ `maxSwap` および `swappiness` パラメータがジョブ定義から省略されている場合、各コンテナの `swappiness` には、デフォルト値の 60 が設定されます。スワップ使用量の合計は、コンテナのメモリ予約の2倍までに制限されます。
このパラメータは、Fargate リソースで実行されているジョブには適用されません。
タイプ: 整数  
必須: いいえ  
`tmpfs`  
tmpfs マウントのコンテナパス、マウントオプション、およびサイズ。  
タイプ: [Tmpfs](https://docs.aws.amazon.com/batch/latest/APIReference/API_Tmpfs.html) オブジェクト配列  
このパラメータは、Fargate リソースで実行されているジョブには適用されません。
必須: いいえ    
`containerPath`  
tmpfs ボリュームをマウントするコンテナ内のファイルの絶対パス。  
タイプ: 文字列  
必須: はい  
`mountOptions`  
tmpfs ボリュームのマウントオプションのリストです。  
有効な値:`defaults`\$1`ro`\$1`rw`\$1`suid`\$1`nosuid`\$1`dev`\$1`nodev`\$1`exec`\$1`noexec`\$1`sync`\$1`async`\$1`dirsync`\$1`remount`\$1`mand`\$1`nomand`\$1`atime`\$1`noatime`\$1`diratime`\$1`nodiratime`\$1`bind`\$1`rbind`\$1`unbindable`\$1`runbindable`\$1`private`\$1`rprivate`\$1`shared`\$1`rshared`\$1`slave`\$1`rslave`\$1`relatime`\$1`norelatime`\$1`strictatime`\$1`nostrictatime`\$1`mode`\$1`uid`\$1`gid`\$1`nr_inodes`\$1`nr_blocks`\$1`mpol`  
タイプ: 文字列の配列  
必須: いいえ  
`size`  
tmpfs ボリュームのサイズ (MiB) です。  
タイプ: 整数  
必須: はい

`logConfiguration`  
ジョブのログ設定の仕様。  
このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/) の[コンテナサービスを作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) セクションの `LogConfig` にマップされ、`--log-driver` オプションは [docker run](https://docs.docker.com/engine/reference/run/) にマップされます。デフォルトでは、コンテナは Docker デーモンで使用されるのと同じロギングドライバーを使用します。ただし、コンテナで Docker デーモンとは異なるログドライバーを使用するには、コンテナの定義内でこのパラメータを使用してログドライバーを指定します。コンテナに異なるロギングドライバーを使用するには、コンテナインスタンスまたはリモートログ記録オプションの別のログサーバーでログシステムを適切に設定する必要があります。サポートされているさまざまなログドライバーのオプションの詳細については、Docker ドキュメントの[ログドライバーの設定](https://docs.docker.com/engine/admin/logging/overview/)を参照してください。  
AWS Batch では現在、Docker デーモンの使用可能なログドライバーがいくつかサポートされています ([LogConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html)データ型を参照)。
このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.18 以上を使用する必要があります。コンテナインスタンスの Docker Remote API のバージョンを確認するには、コンテナインスタンスにログインし、`sudo docker version | grep "Server API version"` コマンドを実行します。  

```
"logConfiguration": {
    "devices": [
        {
            "logDriver": "string",
            "options": {
                "optionName1" : "optionValue1",
                "optionName2" : "optionValue2"
            }
            "secretOptions": [
              {
                  "name" : "secretOptionName1",
                  "valueFrom" : "secretOptionArn1"
              },
              {
                  "name" : "secretOptionName2",
                  "valueFrom" : "secretOptionArn2"
              }
            ]
        }
    ]
}
```
タイプ: [LogConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html) オブジェクト  
必須: いいえ    
`logDriver`  
ジョブに使用するログドライバー。デフォルトでは、AWS Batch が `awslogs` ログドライバーを有効にします。このパラメータの有効な値は、Amazon ECS コンテナエージェントがデフォルトで通信できるログドライバーです。  
このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/) の [コンテナサービスを作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)セクションの `LogConfig` にマップされ、`--log-driver` オプションは [docker run](https://docs.docker.com/engine/reference/run/) にマップされます。デフォルトでは、ジョブは Docker デーモンで使用されるのと同じロギングドライバーを使用します。ただし、ジョブで Docker デーモンとは異なるログドライバーを使用するには、コンテナの定義内でこのパラメータを使用してログドライバーを指定します。ジョブに別のログドライバーを指定する場合は、コンピュート環境のコンテナインスタンスでログシステムを設定する必要があります。または、別のログサーバーに設定して、リモートロギングオプションを提供する。サポートされているさまざまなログドライバーのオプションの詳細については、Docker ドキュメントの[ログドライバーの設定](https://docs.docker.com/engine/admin/logging/overview/)を参照してください。  
AWS Batch では現在、Docker デーモンに使用可能なログドライバーがいくつかサポートされています。Amazon ECS コンテナエージェントの今後のリリースで他のログドライバーが追加される可能性があります。
サポートされているログドライバーは `awslogs`、`fluentd`、`gelf`、`json-file`、`journald`、`logentries`、`syslog`、`splunk` です。  
Fargateリソース上で実行されるジョブは、`awslogs` および `splunk` のログドライバーに制限されます。
このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.18 以上を使用する必要があります。コンテナインスタンスの Docker Remote API のバージョンを確認するには、コンテナインスタンスにログインし、`sudo docker version | grep "Server API version"` コマンドを実行します。  
Amazon ECS コンテナエージェントは、そのインスタンス上で利用可能なロギングドライバーを環境変数 `ECS_AVAILABLE_LOGGING_DRIVERS` に登録する必要があります。そうしないと、そのインスタンスに配置されたコンテナはこれらのログ設定オプションを使用できません。詳細については、*Amazon Elastic Container Service デベロッパーガイド*の「[Amazon ECS コンテナエージェントの設定](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html)」を参照してください。  
`awslogs`  
Amazon CloudWatch Logs ロギングドライバーを指定します。詳細については、[awslogs ログドライバーを使用する](using_awslogs.md)、およびDocker ドキュメントの [Amazon CloudWatch Logs ロギングドライバー](https://docs.docker.com/config/containers/logging/awslogs/)を参照してください。  
`fluentd`  
Fluentd ロギングドライバーを指定します。使用方法やオプションなどの詳細については、Docker ドキュメントの[Fluentd logging driver](https://docs.docker.com/config/containers/logging/fluentd/) を参照してください。  
`gelf`  
Graylog 拡張形式 (GELF) ログ記録ドライバーを指定します。使用方法やオプションなどの詳細については、Docker ドキュメントの[Graylog Extended Format logging driver](https://docs.docker.com/config/containers/logging/gelf/) を参照してください。  
`journald`  
Journald ログ記録ドライバーを指定します。使用方法やオプションなどの詳細については、Docker ドキュメントの[Journald logging driver](https://docs.docker.com/config/containers/logging/journald/)(Journald logging driver) を参照してください。  
`json-file`  
JSON ファイルログ記録ドライバーを指定します。使用方法やオプションなどの詳細については、Docker ドキュメントの[JSON File logging driver](https://docs.docker.com/config/containers/logging/json-file/)(JSON ファイルlogging driver) を参照してください。  
`splunk`  
Splunk ログ記録ドライバーを指定します。使用方法やオプションなどの詳細については、Docker ドキュメントの[Splunk logging driver](https://docs.docker.com/config/containers/logging/splunk/) を参照してください。  
`syslog`  
syslog ログ記録ドライバーを指定します。使用方法やオプションなどの詳細については、Docker ドキュメントの[Syslog logging driver](https://docs.docker.com/config/containers/logging/syslog/)(Syslog logging driver) を参照してください。
タイプ: 文字列  
必須: はい  
有効な値: `awslogs` \$1 `fluentd` \$1 `gelf` \$1 `journald` \$1 `json-file` \$1 `splunk` \$1 `syslog`  
前述以外のカスタムドライバーを Amazon ECS コンテナエージェントで使用する場合は、[GitHub で入手](https://github.com/aws/amazon-ecs-agent)できる Amazon ECS コンテナエージェントプロジェクトをフォークし、そのドライバーを使用できるようにカスタマイズできます。含めたい変更については、プルリクエストを送信することをお勧めします。ただし、現在、Amazon Web Services では、このソフトウェアの変更されたコピーの実行をサポートしていません。  
`options`  
ジョブのログドライバーに送信するログ設定オプション。  
このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.19 以上を使用する必要があります。  
タイプ: 文字列間のマッピング  
必須: いいえ  
`secretOptions`  
ログ設定に渡すシークレットを示すオブジェクト。詳細については、[機密データを指定する](specifying-sensitive-data.md)を参照してください。  
タイプ: オブジェクト配列  
必須: いいえ    
`name`  
ジョブで設定するログドライバーオプションの名前。  
タイプ: 文字列  
必須: はい  
`valueFrom`  
コンテナのログ設定に公開するシークレットのAmazon Resource Name (ARN)。サポートされている値は、Secrets Manager シークレットの完全な ARN または SSN パラメータストア内のパラメータの完全な ARN のいずれかです。  
起動するタスクと同じリージョンに SSM パラメータストアのパラメータが存在する場合は、パラメータの完全な ARN または名前のどちらも使用できます。パラメータが別のリージョンに存在する場合は、完全な ARN を指定する必要があります。
タイプ: 文字列  
必須: はい

`memory`  
*このパラメータは廃止されました。代わりに `resourceRequirements` を使用してください。*  
ジョブ用に予約されたメモリの MiB 数。  
`resourceRequirements` の使い方の一例として、ジョブ定義に次のような行が含まれている場合は、次のようになります。  

```
"containerProperties": {
  "memory": 512
}
```
`resourceRequirements`を使用した同等のラインは以下の通りです。  

```
"containerProperties": {
  "resourceRequirements": [
    {
      "type": "MEMORY",
      "value": "512"
    }
  ]
}
```
タイプ: 整数  
必須: はい

`mountPoints`  
コンテナでのデータボリュームのマウントポイント。このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/) の[コンテナの作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)セクションに`Volumes`にマップされ、`--volume`オプションは[https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)にマップされます。  

```
"mountPoints": [
                {
                  "sourceVolume": "string",
                  "containerPath": "string",
                  "readOnly": true|false
                }
              ]
```
タイプ: オブジェクト配列  
必須: いいえ    
`sourceVolume`  
マウントするボリュームの名前。  
タイプ: 文字列  
必須: はい (`mountPoints` を使用する場合)。  
`containerPath`  
ホストボリュームをマウントするコンテナ上のパス。  
タイプ: 文字列  
必須: はい (`mountPoints` を使用する場合)。  
`readOnly`  
この値が `true` の場合、コンテナはボリュームへの読み取り専用アクセスを許可されます。この値が `false` の場合、コンテナはボリュームに書き込むことができます。  
タイプ: ブール値  
必須: いいえ  
デフォルト: False

`networkConfiguration`  
Fargate リソースで実行されているジョブのネットワーク構成。EC2 リソースで実行されているジョブでは、このパラメータを指定しないでください。  

```
"networkConfiguration": { 
   "assignPublicIp": "string"
}
```
タイプ: オブジェクト配列  
必須: いいえ    
`assignPublicIp`  
ジョブにパブリック IP アドレスがあるかどうかを示します。これは、ジョブがアウトバウンドネットワークアクセスが必要な場合に必要です。  
タイプ: 文字列  
有効な値: `ENABLED` \$1 `DISABLED`  
必須: いいえ  
デフォルト: `DISABLED`

`privileged`  
このパラメータが true のとき、コンテナには、ホストコンテナインスタンスに対する昇格されたアクセス許可 (`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/) にマップされます。このパラメータは、Fargate リソースで実行されているジョブには適用されません。これを指定したり、false と指定したりしないでください。  

```
"privileged": true|false
```
タイプ: ブール値  
必須: いいえ

`readonlyRootFilesystem`  
このパラメータが true のとき、コンテナはそのルートファイルシステムへの読み取り専用アクセスを許可されます。このパラメータは、[Docker Remote API ](https://docs.docker.com/engine/api/v1.38/)の [コンテナの作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)セクションの `ReadonlyRootfs` にマップされ、`--read-only` オプションは [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) にマップされます。  

```
"readonlyRootFilesystem": true|false
```
タイプ: ブール値  
必須: いいえ

`resourceRequirements`  
コンテナに割り当てるリソースのタイプと量。サポートされているリソースには `GPU`、`MEMORY` および `VCPU` などがあります。  

```
"resourceRequirements" : [
  {
    "type": "GPU",
    "value": "number"
  }
]
```
タイプ: オブジェクト配列  
必須: いいえ    
`type`  
コンテナに割り当てるリソースのタイプ。サポートされているリソースには `GPU`、`MEMORY` および `VCPU` などがあります。  
タイプ: 文字列  
必須: はい (`resourceRequirements` を使用する場合)。  
`value`  
コンテナ用に予約する指定されたリソースの量。値は、指定された `type` によって異なります。    
タイプ =GPU  
コンテナ用に予約する物理 GPU の数。ジョブ内のすべてのコンテナ用に予約されている GPUの数は、ジョブが起動されたコンピューティングリソースで使用できる GPU の数以下である必要があります。  
タイプ =MEMORY  
コンテナに適用されるメモリのハード制限 (MiB 単位)。コンテナは、ここで指定したメモリを超えようとすると、強制終了されます。このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/) の[コンテナサービスを作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) セクションの `Memory` にマップされ、`--memory` オプションは [docker run](https://docs.docker.com/engine/reference/run/) にマップされます。ジョブに対して少なくとも 4 MiB のメモリを指定する必要があります。これは必須ですが、マルチノード並列 (MNP) ジョブでは複数の場所で指定できます。各ノードに少なくとも 1 回指定する必要があります。このパラメータは、[Docker Remote API](https://docs.docker.com/engine/api/v1.38/) の[コンテナサービスを作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) セクションの `Memory` にマップされ、`--memory` オプションは [docker run](https://docs.docker.com/engine/reference/run/) にマップされます。  
特定のインスタンスタイプに対してできるだけ多くのメモリを提供してリソースの使用率を最大限に高めるには、[コンピューティングリソースメモリの管理](memory-management.md)を参照してください。
Fargate リソースで実行されているジョブの場合、`value` はサポートされている値の 1 つと一致する必要があります。さらに、`VCPU` の値は、そのメモリ値でサポートされている値の 1 つである必要があります。      
<a name="Fargate-memory-vcpu"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/batch/latest/userguide/job_definition_parameters.html)  
タイプ = 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` オプションは [docker run](https://docs.docker.com/engine/reference/run/) にマップされます。各 vCPU は 1,024 個の CPU 配分に相当します。EC2 リソースを実行しているジョブの場合、少なくとも 1 つの vCPU を指定する必要があります。これは必須ですが、複数の場所で指定できます。各ノードに少なくとも 1 回指定する必要があります。  
Fargate リソースで実行されているジョブの場合、`value` はサポートされている値のいずれかに一致し、`MEMORY` 値は VCPU 値でサポートされている値のいずれかである必要があります。サポートされている値は 0.25、0.5、1、2、4、8、および 16 です。  
デフォルトでは、Fargate オンデマンド vCPU リソース数のクォータは 6 vCPUs です。Fargate Quotas の詳細については、「*Amazon Web Services 全般のリファレンス*」の「[AWS Fargate quotas](https://docs.aws.amazon.com/general/latest/gr/ecs-service.html#service-quotas-fargate)」を参照してください。
タイプ: 文字列  
必須: はい (`resourceRequirements` を使用する場合)。

`secrets`  
環境変数として公開されるジョブのシークレット。詳細については、[機密データを指定する](specifying-sensitive-data.md)を参照してください。  

```
"secrets": [
    {
      "name": "secretName1",
      "valueFrom": "secretArn1"
    },
    {
      "name": "secretName2",
      "valueFrom": "secretArn2"
    }
    ...
]
```
タイプ: オブジェクト配列  
必須: いいえ    
`name`  
シークレットを含む環境変数の名前。  
タイプ: 文字列  
必須: はい (`secrets` を使用する場合)。  
  
`valueFrom`  
コンテナに公開するシークレット。サポートされている値は、Secrets Managerシークレットの完全なAmazon リソースネーム (ARN)、または SSMパラメータストアのパラメータの完全なARNです。  
起動するジョブと同じリージョンに SSM Parameter Store の パラメータが存在する場合は、パラメータの完全な ARN または名前のどちらも使用できます。パラメータが別のリージョンに存在する場合は、完全な ARN を指定する必要があります。
タイプ: 文字列  
必須: はい (`secrets` を使用する場合)。

`ulimits`  
コンテナで設定する `ulimits` 値のリスト。このパラメータは、[Docker Remote API ](https://docs.docker.com/engine/api/v1.38/)の [コンテナの作成](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)セクションの `Ulimits` にマップされ、`--ulimit` オプションは [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) にマップされます。  

```
"ulimits": [
  {
    "name": string,
    "softLimit": integer,
    "hardLimit": integer
  }
  ...
]
```
タイプ: オブジェクト配列  
必須: いいえ    
`name`  
`ulimit` の `type`。  
タイプ: 文字列  
必須: はい (`ulimits` を使用する場合)。  
  
`hardLimit`  
`ulimit` タイプのハード制限。  
タイプ: 整数  
必須: はい (`ulimits` を使用する場合)。  
  
`softLimit`  
`ulimit` タイプのソフト制限。  
タイプ: 整数  
必須: はい (`ulimits` を使用する場合)。  


`user`  
コンテナ内で使用するユーザー名。このパラメータは、[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/) にマップされます。  

```
"user": "string"
```
タイプ: 文字列  
必須: いいえ

`vcpus`  
*このパラメータは廃止されました。代わりに `resourceRequirements` を使用してください。*  
コンテナ用に予約された vCPU の数。  
`resourceRequirements` の使い方の一例として、ジョブ定義に次のような行が含まれている場合は、次のようになります。  

```
"containerProperties": {
  "vcpus": 2
}
```
`resourceRequirements` を使用した同等のラインは以下の通りです。  

```
"containerProperties": {
  "resourceRequirements": [
    {
      "type": "VCPU",
      "value": "2"
    }
  ]
}
```
タイプ: 整数  
必須: はい

`volumes`  
ジョブ定義の登録時に、コンテナインスタンスの Docker デーモンに渡すボリュームのリストを指定できます。コンテナプロパティでは、以下のパラメータを使用できます。  

```
"volumes": [
  {
    "name": "string",
    "host": {
      "sourcePath": "string"
    },
    "efsVolumeConfiguration": {
      "authorizationConfig": {
        "accessPointId": "string",
        "iam": "string"
      },
      "fileSystemId": "string",
      "rootDirectory": "string",
      "transitEncryption": "string",
      "transitEncryptionPort": number
    }
  }
]
```  
`name`  
ボリュームの名前。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。この名前は、コンテナ定義 `sourceVolume` の `mountPoints` パラメータで参照されます。  
タイプ: 文字列  
必須: いいえ  
`host`  
`host` パラメータの内容により、データボリュームがホストコンテナインスタンスで保持されるかどうか、保持される場合はその場所が決まります。`host` パラメータが空の場合は、Docker デーモンによってデータボリュームのホストパスが割り当てられます。ただし、関連付けられたコンテナが実行を停止した後も、データが保持されるという保証はありません。  
このパラメータは、Fargate リソースで実行されているジョブには適用されません。
タイプ: オブジェクト  
必須: いいえ    
`sourcePath`  
コンテナに渡されるホストコンテナインスタンス上のパス。このパラメータが空の場合は、Docker デーモンによってホストパスが割り当てられます。  
`host` パラメータに `sourcePath` の場所が含まれている場合、データボリュームは手動で削除するまでホストコンテナインスタンスの指定された場所に保持されます。`sourcePath` の値がホストコンテナインスタンスに存在しない場は、Docker デーモンによって作成されます。その場所が存在する場合は、ソースパスフォルダの内容がエクスポートされます。  
タイプ: 文字列  
必須: いいえ  
`efsVolumeConfiguration`  
このパラメータは、タスクストレージに Amazon Elastic File System を使用している場合に指定します。詳細については、[Amazon EFS ボリューム](efs-volumes.md)を参照してください。  
タイプ: オブジェクト  
必須: いいえ    
`authorizationConfig`  
Amazon EFS ファイルシステムに対する認可構成の詳細。  
型: 文字列  
必須: いいえ    
`accessPointId`  
使用する Amazon EFS アクセスポイントの ID。アクセスポイントを指定した場合、`EFSVolumeConfiguration` で指定されているルートディレクトリの値を省略するか、`/` に設定する必要があります。これにより、EFS アクセスポイントに設定されたパスが強制されます。アクセスポイントを使用する場合は、`EFSVolumeConfiguration` で転送中の暗号化を有効にする必要があります。詳細については、*Amazon Elastic ファイルシステムユーザーガイド*の [Amazon EFS アクセスポイントの使用](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html)を参照してください。  
タイプ: 文字列  
必須: いいえ  
`iam`  
Amazon EFS ファイルシステムのマウント時にジョブ定義で定義した AWS Batch ジョブの IAM ロールを使用するかどうかを指定します。使用する場合は、`EFSVolumeConfiguration` で転送中の暗号化を有効にする必要があります。このパラメータを省略すると、`DISABLED` のデフォルト値が使用されます。詳細については、[Amazon EFS アクセスポイントの使用](efs-volumes.md#efs-volume-accesspoints)を参照してください。  
タイプ: 文字列  
有効な値: `ENABLED` \$1 `DISABLED`  
必須: いいえ  
`fileSystemId`  
使用する Amazon EFS ファイルシステムの ID。  
型: 文字列  
必須: いいえ  
`rootDirectory`  
ホスト内にルートディレクトリとしてマウントする Amazon EFS ファイルシステム内のディレクトリ。このパラメータを省略すると、Amazon EFS ボリュームのルートが使用されます。`/` を指定すると、このパラメータを省略した場合と同じ結果になります。最大長は 4,096 文字です。  
`authorizationConfig` に EFS アクセスポイントを指定する場合は、ルートディレクトリパラメータを省略するか、または `/` に設定する必要があります。これにより、Amazon EFS アクセスポイントに設定されているパスが強制されます。
タイプ: 文字列  
必須: いいえ  
`transitEncryption`  
Amazon ECS ホストと Amazon EFS サーバー間で Amazon EFS データの転送中の暗号化を有効にするかどうかを指定します。Amazon EFS IAM 認可を使用する場合は、転送中の暗号化を有効にする必要があります。このパラメータを省略すると、`DISABLED` のデフォルト値が使用されます。詳細については、*Amazon Elastic File System ユーザーガイド*の[Encrypting data in transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html)を参照してください。  
タイプ: 文字列  
有効な値: `ENABLED` \$1 `DISABLED`  
必須: いいえ  
`transitEncryptionPort`  
Amazon ECS ホストと Amazon EFS サーバーとの間で、暗号化されたデータを送信するときに使用するポート。転送中の暗号化ポートを指定しないと、Amazon EFS マウントヘルパーが使用するポート選択方式が使用されます。この値は 0～65,535 の範囲の値にする必要があります。詳細については、*Amazon Elastic File System User Guide]* (Amazon Elastic File System ユーザーガイド) の[EFS Mount Helper]](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) (EFS マウントヘルパー) を参照してください。  
タイプ: 整数  
必須: いいえ

## Amazon EKS プロパティ
<a name="job-definition-parameters-eks-properties"></a>

Amazon EKS ベースのジョブに固有のさまざまなプロパティが用意されたオブジェクト。これは、Amazon ECSベースのジョブ定義には指定しないでください。

`podProperties`  
ジョブのKubernetesポッドリソースのプロパティ。  
タイプ:[EKSPodProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html) オブジェクト  
必須: いいえ    
`containers`  
Amazon EKS ポッドで使用されるコンテナのプロパティ。  
タイプ:[EKS コンテナオブジェクト](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainer.html)  
必須: いいえ    
`args`  
エントリポイントへの引数の配列。これを指定しない場合、コンテナイメージの `CMD` が使用されます。これは Kubernetes の[ポッド](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/)の[エントリポイント](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#entrypoint)部分の `args` メンバーに対応します。環境変数の参照は、コンテナの環境を使用して展開されます。  
参照先の環境変数が存在しない場合、コマンド内の参照は変更されません。例えば、参照先が`$(NAME1)`で、`NAME1` 環境変数が存在しない場合、コマンド文字列は`$(NAME1)`のままになります。`$$` が `$` に置き換えられ、結果の文字列は展開されません。例えば、`$$(VAR_NAME)` は `VAR_NAME` 環境変数が存在するかどうかに関係なく、`$(VAR_NAME)` として渡されます。詳細については、「*Dockerfile リファレンス*」の「[CMD](https://docs.docker.com/engine/reference/builder/#cmd)」と「*Kubernetes ドキュメンテーション*」の「[ポッドのコマンドと引数を定義する](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/)」を参照してください。  
タイプ: 文字列の配列  
必須: いいえ  
`command`  
コンテナのエントリポイント。これはシェル内では実行されません。これを指定しない場合、コンテナイメージの `ENTRYPOINT` が使用されます。環境変数の参照は、コンテナの環境を使用して展開されます。  
参照先の環境変数が存在しない場合、コマンド内の参照は変更されません。例えば、参照先が`$(NAME1)`で、`NAME1` 環境変数が存在しない場合、コマンド文字列は`$(NAME1)`のままになります。`$$` が `$` に置き換えられ、結果の文字列は展開されません。例えば、`$$(VAR_NAME)` は `VAR_NAME` 環境変数が存在するかどうかに関係なく、`$(VAR_NAME)` として渡されます。エントリポイントは更新できません。詳細については、「*Dockerfile リファレンス*」の「[エントリーポイント](https://docs.docker.com/engine/reference/builder/#entrypoint)」、「[コンテナのコマンドと引数を定義する](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/)」、「*Kubernetes ドキュメント*」の「[エントリーポイント](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#entrypoint)」を参照してください。  
タイプ: 文字列の配列  
必須: いいえ  
`env`  
コンテナに渡す環境変数。  
環境変数は`AWS_BATCH`で始まることはできません。この命名規則は、AWS Batch で設定される変数のために予約されています。
タイプ:[EKS コンテナ環境変数オブジェクトの配列](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerEnvironmentVariable.html)  
必須: いいえ    
`name`  
環境変数の名前。  
タイプ: 文字列  
必須: はい  
`value`  
環境変数の値。  
タイプ: 文字列  
必須: いいえ  
`image`  
コンテナの開始に使用する Docker イメージ。  
タイプ: 文字列  
必須: はい  
`imagePullPolicy`  
コンテナのイメージプルポリシー。サポートされている値は `Always`、`IfNotPresent`、`Never` です。このパラメータのデフォルトは `IfNotPresent` です。ただし、`:latest` タグが指定されている場合、デフォルトは `Always` です。詳細については、「*Kubernetes ドキュメント*」の「[イメージの更新](https://kubernetes.io/docs/concepts/containers/images/#updating-images)」を参照してください。  
タイプ: 文字列  
必須: いいえ  
`name`  
コンテナの名前。名前が指定されなかった場合、デフォルト名`Default`が使用されます。ポッド内の各コンテナには一意の名前が必要です。  
タイプ: 文字列  
必須: いいえ  
`resources`  
コンテナに割り当てるリソースのタイプと量。サポートされているリソースには `memory`、`cpu` および `nvidia.com/gpu` などがあります。詳細については、「*Kubernetes ドキュメント*」の「[ポッドとコンテナのリソース管理](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)」を参照してください。  
タイプ:[EKS コンテナリソース要件](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerResourceRequirements.html) オブジェクト  
必須: いいえ    
`limits`  
コンテナ用に予約する指定されたリソースのタイプと量。値は、指定された `name` によって異なります。リソースは、`limits` または `requests` オブジェクトを使用してリクエストできます。    
メモリ  
コンテナ用のメモリのハード制限 (MiB)。整数とMiサフィックスを使用します。コンテナが指定されたメモリを超えようとすると、強制終了されます。ジョブに対して少なくとも 4 MiB のメモリを指定する必要があります。`limits`、`requests`、または両方で `memory` を指定できます。`memory` が両方の場所で指定されている場合、`limits` で指定される値は、`requests` で指定されている値と等しくなければなりません。  
リソースの使用率を最大限に高めるには、使用している特定のインスタンスタイプに対して可能な限り多くのメモリをジョブに割り当てます。この方法の詳細は、[コンピューティングリソースメモリの管理](memory-management.md)を参照してください。  
cpu  
コンテナ用に予約された CPU の数。値は `0.25` の偶数の乗数でなければなりません。`limits`、`requests`、または両方で `cpu` を指定できます。`cpu` が両方の場所で指定されている場合、`limits` で指定される値は、`requests` で指定されている値以上でなければなりません。  
nvidia.com/gpu  
コンテナ用に予約された GPU の数。値は整数でなければなりません。`memory` は `limits`、`requests`、または両方で指定できます。`memory` が両方の場所で指定されている場合、`limits` で指定される値は、`requests` で指定されている値と等しくなければなりません。
タイプ: 文字列間のマッピング  
値の長さの制限: 最小長は 1。最大長は 256 です。  
必須: いいえ  
`requests`  
コンテナのリクエストに対するリソースのタイプと量。値は、指定された `name` によって異なります。リソースは、`limits` または `requests` オブジェクトを使用してリクエストできます。    
メモリ  
コンテナ用のメモリのハード制限 (MiB)。整数とMiサフィックスを使用します。コンテナが指定されたメモリを超えようとすると、強制終了されます。ジョブに対して少なくとも 4 MiB のメモリを指定する必要があります。`limits`、`requests`、または両方で `memory` を指定できます。`memory` が両方で指定されている場合、`requests` で指定される値は、`limits` で指定されている値と等しくなければなりません。  
特定のインスタンスタイプに対してできるだけ多くのメモリを提供してリソースの使用率を最大限に高めるには、[コンピューティングリソースメモリの管理](memory-management.md)を参照してください。  
cpu  
コンテナ用に予約された CPU の数。値は `0.25` の偶数の乗数でなければなりません。`limits`、`requests`、または両方で `cpu` を指定できます。`cpu` が両方で指定されている場合、`limits` で指定される値は、`requests` で指定されている値以上でなければなりません。  
nvidia.com/gpu  
コンテナ用に予約された GPU の数。値は整数でなければなりません。`nvidia.com/gpu` は `limits`、`requests`、または両方で指定できます。`nvidia.com/gpu` が両方で指定されている場合、`requests` で指定される値は、`limits` で指定されている値と等しくなければなりません。
タイプ: 文字列間のマッピング  
値の長さの制限: 最小長は 1。最大長は 256 です。  
必須: いいえ  
`securityContext`  
ジョブのセキュリティコンテキスト。詳細については、「*Kubernetes ドキュメント*」の「[ポッドまたはコンテナのセキュリティコンテキストを設定する](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)」を参照してください。  
タイプ:[EKS コンテナセキュリティコンテキスト](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerSecurityContext.html) オブジェクト  
必須: いいえ    
`privileged`  
このパラメータが `true` のとき、コンテナには、ホストコンテナインスタンスに対する昇格されたアクセス許可が付与されます。パーミッションのレベルは`root`ユーザーのパーミッションと同じです。デフォルト値は `false` です。このパラメータは、「*Kubernetes ドキュメント*」の「[特権ポッドのセキュリティポリシー](https://kubernetes.io/docs/concepts/security/pod-security-policy/#privileged)」の `privileged` ポリシーに対応しています。  
タイプ: ブール値  
必須: いいえ  
`readOnlyRootFilesystem`  
このパラメータが `true` のとき、コンテナはそのルートファイルシステムへの読み取り専用アクセスを許可されます。デフォルト値は `false` です。このパラメータは、「*Kubernetes ドキュメント*」の「[ボリュームとファイルシステムのポッドセキュリティポリシー](https://kubernetes.io/docs/concepts/security/pod-security-policy/#volumes-and-file-systems)」の `ReadOnlyRootFilesystem` ポリシーに対応しています。  
タイプ: ブール値  
必須: いいえ  
`runAsGroup`  
このパラメータを指定すると、コンテナは指定されたグループ ID (`gid`) で実行されます。このパラメータを指定しない場合、デフォルトはイメージメタデータに指定されているグループです。このパラメータは、「*Kubernetes ドキュメント*」の「[ユーザーとグループのポッドセキュリティポリシー](https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups)」の `RunAsGroup` および `MustRunAs` ポリシーに対応しています。  
タイプ: Long  
必須: いいえ  
`runAsNonRoot`  
このパラメータを指定すると、コンテナは 0 以外の `uid` のユーザーとして実行されます。このパラメータを指定しない場合、そのようなルールが適用されます。このパラメータは、「*Kubernetes ドキュメント*」の「[ユーザーとグループのポッドセキュリティポリシー](https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups)」の `RunAsUser` および `MustRunAsNonRoot` ポリシーに対応しています。  
タイプ: Long  
必須: いいえ  
`runAsUser`  
このパラメータを指定すると、コンテナは指定されたユーザー ID (`uid`) で実行されます。このパラメータを指定しない場合、デフォルトはイメージメタデータに指定されているユーザーです。このパラメータは、「*Kubernetes ドキュメント*」の「[ユーザーとグループのポッドセキュリティポリシー](https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups)」の `RunAsUser` および `MustRanAs` ポリシーに対応しています。  
タイプ: Long  
必須: いいえ  
`volumeMounts`  
Amazon EKS ジョブのコンテナのボリュームマウント。Kubernetes のボリュームとボリュームマウントの詳細については、「*Kubernetes ドキュメント*」の「[ボリューム](https://kubernetes.io/docs/concepts/storage/volumes/)」を参照してください。  
タイプ:[EKS コンテナボリュームマウント](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerVolumeMount.html) オブジェクトの配列  
必須: いいえ    
`mountPath`  
ボリュームをマウントするコンテナ上のパス。  
タイプ: 文字列  
必須: いいえ  
`name`  
ボリュームマウントの名前。これは、ポッド内のいずれかのボリュームの名前と一致する必要があります。  
タイプ: 文字列  
必須: いいえ  
`readOnly`  
この値が `true` の場合、コンテナはボリュームへの読み取り専用アクセスを許可されます。それ以外の場合、コンテナはボリュームに書き込むことができます。デフォルト値は `false` です。  
タイプ: ブール値  
必須: いいえ  
`dnsPolicy`  
ポッドの DNS ポリシー。デフォルト値は `ClusterFirst` です。`hostNetwork` パラメータが指定されていない場合、デフォルトは `ClusterFirstWithHostNet` です。`ClusterFirst` は、設定されたクラスタドメインサフィックスと一致しない DNS クエリが、ノードから継承されたアップストリームのネームサーバーに転送されることを示します。[[RegisterJobDefinition]](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html) API 操作で `dnsPolicy` に値が指定されなかった場合、[[DescribeJobDefinitions]](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobDefinitions.html) または [[DescribeJobs]](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobs.html) API 操作のいずれによっても `dnsPolicy` に値は返されません。ポッド仕様設定には、`hostNetwork` パラメータの値に応じて、`ClusterFirst` または `ClusterFirstWithHostNet` のいずれかが含まれます。詳細については、「*Kubernetes ドキュメント*」の「[ポッドの DNS ポリシー](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy)」を参照してください。  
有効な値: `Default` \$1 `ClusterFirst` \$1 `ClusterFirstWithHostNet`  
タイプ: 文字列  
必須: いいえ  
`hostNetwork`  
ポッドがホストのネットワーク IP アドレスを使用するかどうかを示します。デフォルト値は `true` です。これを に設定すると、Kubernetes ポッドネットワークモデルが有効になります。ほとんどの AWS Batch ワークロードは下り専用で、受信接続の各ポッドに IP を割り当てる際のオーバーヘッドは必要ありません。詳細については、「*Kubernetes ドキュメント*」の「[ホストの名前空間](https://kubernetes.io/docs/concepts/security/pod-security-policy/#host-namespaces)」と「[ポッドネットワーキング](https://kubernetes.io/docs/concepts/workloads/pods/#pod-networking)」を参照してください。  
タイプ: ブール値  
必須: いいえ  
`serviceAccountName`  
ポッドを実行するために使用されるサービスアカウントの名前。詳細については、「*Amazon EKS ユーザーガイド*」の「[Kubernetes サービスアカウント](https://docs.aws.amazon.com/eks/latest/userguide/service-accounts.html)」と「[IAM ロールを引き継ぐように Kubernetes サービスアカウントを設定する](https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html)」、「*Kubernetes ドキュメント*」の「[ポッドでのサービスアカウントを設定する](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/)」を参照してください。  
タイプ: 文字列  
必須: いいえ  
`volumes`  
Amazon EKS リソースを使用するジョブ定義のボリュームを指定します。  
タイプ:[EKS ボリュームオブジェクト](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksVolume.html) の配列  
必須: いいえ    
EmptyDir  
Kubernetes `emptyDir`ボリュームの設定を指定します。`emptyDir` ボリュームは、ポッドがノードに割り当てられるときに最初に作成されます。そのポッドがノードで実行されている限り存在します。`emptyDir` ボリュームは最初は空です。ポッド内のすべてのコンテナは、`emptyDir` ボリューム内のファイルを読み書きできます。ただし、`emptyDir` ボリュームは各コンテナの同じパスまたは異なるパスにマウントできます。何らかの理由でポッドがノードから削除されると、`emptyDir` のデータは完全に削除されます。詳細については、「*Kubernetes ドキュメント*」の「[emptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir)」を参照してください。  
[タイプ:ekSemptyDir](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksEmptyDir.html) オブジェクト  
必須: いいえ    
medium  
ボリュームを保存するメディア。デフォルト値は、ノードのストレージを使用する空の文字列です。    
""  
**(デフォルト)** ノードのディスクストレージを使用します。  
メモリ  
ノードの RAM にバックアップされている `tmpfs` ボリュームを使用します。ノードが再起動するとボリュームの内容は失われ、ボリューム上のストレージはコンテナのメモリ制限に対して計算されます。
タイプ: 文字列  
必須: いいえ  
サイズ制限  
ボリュームの最大サイズ。デフォルトでは、最大サイズは定義されていません。  
タイプ: 文字列  
長さの制約: 最小長は 1 です。最大長は 256 です。  
必須: いいえ  
hostPath  
Kubernetes `hostPath`ボリュームの設定を指定します。`hostPath` ボリュームは、ホストノードのファイルシステムから既存のファイルまたはディレクトリをポッドにマウントします。詳細については、「*Kubernetes ドキュメント*」の「[hostPath](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath)」を参照してください。  
タイプ:[EKShostPath](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksHostPath.html) オブジェクト  
必須: いいえ    
パス  
ポッドのコンテナにマウントするホスト上のファイルまたはディレクトリのパス。  
タイプ: 文字列  
必須: いいえ  
名前  
ボリュームの名前。名前は DNS サブドメイン名として許可されている必要があります。詳細については、「*Kubernetes ドキュメント*」の「[DNS サブドメイン名](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names)」を参照してください。  
タイプ: 文字列  
必須: はい  
シークレット  
Kubernetes `secret`ボリュームの設定を指定します。詳細については、「*Kubernetes ドキュメント*」の「[シークレット](https://kubernetes.io/docs/concepts/storage/volumes/#secret)」を参照してください。  
タイプ:[EKS シークレット](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksSecret.html) オブジェクト  
必須: いいえ    
オプション  
シークレットとシークレットのキーのどちらを定義する必要があるかを指定します。  
タイプ: ブール値  
必須: いいえ  
secretName  
シークレットの名前。名前は DNS サブドメイン名として許可されている必要があります。詳細については、「*Kubernetes ドキュメント*」の「[DNS サブドメイン名](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names)」を参照してください。  
タイプ: 文字列  
必須: はい

## プラットフォーム機能
<a name="job-definition-parameters-platform-capabilities"></a>

`platformCapabilities`  
ジョブ定義に必要なプラットフォーム機能。値が指定されていない場合、デフォルトは `EC2` になります。Fargate リソースで実行されるジョブの場合、`FARGATE` が指定されている。  
ジョブを Amazon EKS リソースで実行する場合は、`platformCapabilities` を指定してはならず、
タイプ: 文字列  
有効な値: `EC2` \$1 `FARGATE`  
必須: いいえ

## タグの伝播
<a name="job-definition-parameters-propagate-tags"></a>

`propagateTags`  
タグをジョブまたはジョブ定義から対応する Amazon ECS タスクに伝播するかどうかを指定します。値を指定しない場合、タグは伝播されません。タグは、タスクの作成時にのみタスクに伝播できます。同じ名前のタグの場合、ジョブタグはジョブ定義タグよりも優先されます。ジョブとジョブ定義から合わせたタグの合計数が 50 を超える場合、ジョブは `FAILED` 状態に移行します。  
ジョブを Amazon EKS リソースで実行する場合は、`propagateTags` を指定してはならず、
タイプ: ブール値  
必須: いいえ

## ノードプロパティ
<a name="nodeProperties"></a>

`nodeProperties`  
マルチノード並列ジョブ定義を登録する場合、ノードプロパティの一覧を指定する必要があります。これらのノード・プロパティは、ジョブで使用するノード数、メイン・ノード・インデックス、および使用する異なるノード範囲を定義します。ジョブを Fargate リソースで実行する場合は、`nodeProperties` を指定することはできません。代わりに `containerProperties` を使用してください。ジョブ定義では、以下のノードプロパティを使用できます。詳細については、[マルチノード並列ジョブ](multi-node-parallel-jobs.md)を参照してください。  
ジョブを Amazon EKS リソースで実行する場合は、`nodeProperties` を指定してはならず、
タイプ: [NodeProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_NodeProperties.html) オブジェクト  
必須: いいえ    
`mainNode`  
マルチノード並列ジョブの主要なノードにノードインデックスを指定します。このノードインデックス値は、ノード数未満である必要があります。  
タイプ: 整数  
必須: はい  
`numNodes`  
マルチノード並列ジョブに関連付けられたノードの数。  
タイプ: 整数  
必須: はい  
`nodeRangeProperties`  
マルチノード並列ジョブに関連付けられたノード範囲とそのプロパティの一覧。  
ノード・グループとは、すべて同じコンテナ・プロパティを共有するジョブ・ノードの同一グループです。AWS Batchを使用すると、各ジョブに最大5つの異なるノード・グループを指定できます。
タイプ: [NodeRangeProperty](https://docs.aws.amazon.com/batch/latest/APIReference/API_NodeRangeProperty.html) オブジェクトの配列  
必須: はい    
`targetNodes`  
ノードのインデックス値を使用したノードの範囲。`0:3` の範囲は、インデックス値が `0` から `3` のノードを示しています。開始範囲値が省略されている場合 (`:n`)、範囲の開始値に が使用されます。終了範囲値が省略されている場合 (`n:`)、範囲の終了値にはできるだけ高いノードインデックスが使用されます。累積ノード範囲は、すべてのノード (`0:n`) を考慮する必要があります。例えば、ノード範囲をネストできます。例: `0:10` および `4:5`。この場合は、`4:5` の範囲プロパティは、`0:10` プロパティを上書きします。  
タイプ: 文字列  
必須: いいえ  
`container`  
ノード範囲のコンテナの詳細。詳細については、[コンテナプロパティ](#containerProperties)を参照してください。  
タイプ: [ContainerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html) オブジェクト   
必須: いいえ

## 再試行戦略
<a name="retryStrategy"></a>

`retryStrategy`  
ジョブ定義の登録時に、オプションとして、このジョブ定義で送信したジョブが失敗したときの再試行戦略を指定できます。[SubmitJob]](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html) オペレーション中に指定されたリトライ戦略は、ここで定義されたリトライ戦略を上書きします。デフォルトでは、各ジョブは 1 回試行されます。複数の試行を指定すると、ジョブが失敗した場合、ジョブが再試行されます。失敗の例としては、ジョブがゼロ以外の終了コードが返した場合やコンテナインスタンスが終了した場合が含まれます。詳細については、[ジョブの再試行の自動化](job_retries.md)を参照してください。  
タイプ: [RetryStrategy](https://docs.aws.amazon.com/batch/latest/APIReference/API_RetryStrategy.html) オブジェクト  
必須: いいえ    
`attempts`  
ジョブを `RUNNABLE` ステータスに移行する回数。1〜10 回の試行を指定できます。`attempts` の回数が 1 より大きい場合、ジョブは `RUNNABLE` に移行するまでにその回数内で再試行されます。  

```
"attempts": integer
```
タイプ: 整数  
必須: いいえ  
`evaluateOnExit`  
ジョブの再試行または失敗の条件を指定する最大5つのオブジェクトの配列。このパラメータを指定する場合は、`attempts` パラメータも指定する必要があります。`evaluateOnExit`を指定しても一致するエントリがない場合、ジョブは再試行されます。  

```
"evaluateOnExit": [
   {
      "action": "string",
      "onExitCode": "string",
      "onReason": "string",
      "onStatusReason": "string"
   }
]
```
タイプ: [EvaluateOnExit](https://docs.aws.amazon.com/batch/latest/APIReference/API_EvaluateOnExit.html) オブジェクトの配列  
必須: いいえ    
`action`  
指定された条件 (`onStatusReason`、`onReason` および `onExitCode`) がすべて満たされた場合に実行するアクションを指定します。値は大文字と小文字が区別されません。  
タイプ: 文字列  
必須: はい  
有効な値: `RETRY` \$1 `EXIT`  
`onExitCode`  
ジョブに対して返された `ExitCode` の10進表現と照合する glob パターンが含まれています。パターンの最大長は 512 文字です。数字のみを含めることができます。文字や特殊文字を含めることはできません。必要に応じて末尾をアスタリスク (\$1) にでき、文字列の先頭だけが完全に一致する必要があります。  
タイプ: 文字列  
必須: いいえ  
`onReason`  
ジョブに対して返された `Reason` と照合する glob パターンが含まれます。パターンの最大長は 512 文字です。文字、数字、ピリオド (.)、コロン (:)、および空白 (スペースまたはタブを含む) を含めることができます。必要に応じて末尾をアスタリスク (\$1) にでき、文字列の先頭だけが完全に一致する必要があります。  
タイプ: 文字列  
必須: いいえ  
`onStatusReason`  
ジョブに対して返された `StatusReason` と照合する glob パターンが含まれます。パターンの最大長は 512 文字です。文字、数字、ピリオド (.)、コロン (:)、および空白 (スペースまたはタブを含む) を含めることができます。必要に応じて末尾をアスタリスク (\$1) にでき、文字列の先頭だけが完全に一致する必要があります。  
タイプ: 文字列  
必須: いいえ

## スケジューリング優先順位
<a name="job-definition-parameters-schedulingPriority"></a>

`schedulingPriority`  
このジョブ定義で投入されるジョブのスケジューリング優先度。これは、公平配分ポリシーが適用されたジョブキュー内のジョブにのみ影響します。スケジューリング優先度が高いジョブは、スケジューリング優先度の低いジョブの前にスケジュールされます。  
サポートされている最小値は 0 で、サポートされている最大値は 9999 です。  
タイプ: 整数  
必須: いいえ

## タグ
<a name="job-definition-parameters-tags"></a>

`tags`  
ジョブ定義に関連付けるキーバリューペアのタグ。詳細については、[AWS Batch リソースのタグ付け](using-tags.md)を参照してください。  
型: 文字列間のマッピング  
必須: いいえ

## タイムアウト
<a name="timeout"></a>

`timeout`  
この期間を超えてジョブが実行されると AWS Batch でジョブが終了するように、ジョブのタイムアウト期間を設定できます。詳細については、[ジョブのタイムアウト](job_timeouts.md)を参照してください。タイムアウトによりジョブが終了した場合、再試行は行われない。[SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html) オペレーション時にタイムアウト設定を指定した場合は、ここで定義されているタイムアウト設定が上書きされます。詳細については、[ジョブのタイムアウト](job_timeouts.md)を参照してください。  
タイプ: [JobTimeout](https://docs.aws.amazon.com/batch/latest/APIReference/API_JobTimeout.html) オブジェクト  
必須: いいえ    
`attemptDurationSeconds`  
`startedAt` によって未終了のジョブが終了されるまでの時間 (秒) (ジョブ試行の AWS Batch タイムスタンプから計測)。タイムアウトの最小値は 60 秒です。  
配列ジョブの場合、タイムアウトは親配列ジョブではなく子ジョブに適用されます。  
マルチノード並列 (MNP) ジョブの場合、タイムアウトは、ジョブ全体に適用され、個々のノードには適用されません。  
タイプ: 整数  
必須: いいえ

# EcsProperties を使用してジョブ定義を作成する
<a name="multi-container-jobs"></a>

を使用した AWS Batch ジョブ定義を使用すると[https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html)、ハードウェア、センサー、3D 環境、その他のシミュレーションを別々のコンテナでモデル化できます。この機能を使用することでワークロードコンポーネントを論理的に整理し、これらをメインアプリケーションから分離できます。この機能は、Amazon Elastic Container Service (Amazon ECS)、Amazon Elastic Kubernetes Service (Amazon EKS)、および AWS Batch の で使用できます AWS Fargate。

## `ContainerProperties` と `EcsProperties` のジョブ定義
<a name="containerpropertions-vs-ecsproperties"></a>

ユースケースに応じて、[https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html) または [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html) のジョブ定義の使用を選択できます。高レベルでは、 で実行中の AWS Batch ジョブ`EcsProperties`は、 で実行中のジョブと似ています`ContainerProperties`。

`ContainerProperties` を使用する従来のジョブ定義構造は引き続きサポートされます。現在この構造を使用するワークフローがある場合は引き続き実行できます。

主な違いは、`EcsProperties` ベースの定義に対応するため、ジョブ定義に新しいオブジェクトが追加されていることです。

例えば、Amazon ECS と Fargate で `ContainerProperties` を使用するジョブ定義は次のような構造になります。

```
{
   "containerProperties": {
     ...
     "image": "my_ecr_image1",
     ...
  },
...
}
```

Amazon ECS と Fargate で `EcsProperties` を使用するジョブ定義は次のような構造になります。

```
{
  "ecsProperties": {
    "taskProperties": [{
      "containers": [
        { 
          ...
          "image": "my_ecr_image1",
          ...
        },
        { 
          ...
          "image": "my_ecr_image2",
          ...
        },
```

## AWS Batch APIs の一般的な変更
<a name="multi-container-general"></a>

`ContainerProperties` と `EcsProperties` API データ型を使用する際の主な違いは以下のとおりです。
+ `ContainerProperties` で使用されるパラメータの多くは、`TaskContainerProperties` でも使用されます。例えば、`command`、`image`、`privileged`、`secrets`、`users` です。これらはすべて「[TaskContainerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html)」で説明しています。
+ 一部の `TaskContainerProperties` パラメータには従来の構造に機能的に同等なものがありません。例えば、`dependsOn`、`essential`、`name`、`ipcMode`、`pidMode` です。詳細は「[EcsTaskDetails](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskDetails.html)」と「[TaskContainerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html)」を参照してください。

  また、一部の `ContainerProperties` パラメータには `EcsProperties` 構造に機能的に同等なものやアプリケーションがありません。[https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html#Batch-Type-EcsProperties-taskProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html#Batch-Type-EcsProperties-taskProperties) では、新しいオブジェクトが最大 10 個の要素を受け入れることができるように、`container` が `containers` に置き換えられました。詳細は「[RegisterJobDefinition:containerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-containerProperties)」および「[EcsTaskProperties:containers](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html)」を参照してください。
+ `taskRoleArn` は機能的に `jobRoleArn` と同等です。詳細は「[EcsTaskProperties:taskRoleArn](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html)」および「[ContainerProperties:jobRoleArn](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html)」を参照してください。
+ `EcsProperties` 構造には 1～10 個のコンテナを含めることができます。詳細は「[EcsTaskProperties:containers](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html)」を参照してください。
+ `taskProperties` および instanceTypes オブジェクトは配列ですが、現在受け入れることができるのは 1 つの要素のみです。例えば、[EcsProperties:taskProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html) と [NodeRangeProperty:instanceTypes](https://docs.aws.amazon.com/batch/latest/APIReference/API_NodeRangeProperty.html) です。

## Amazon ECS のマルチコンテナのジョブ定義
<a name="multi-container-ecs-updates"></a>

Amazon ECS のマルチコンテナ構造に対応するため、API データ型が異なることがあります。例えば、
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-ecsProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-ecsProperties) は、単一コンテナ定義では `containerProperties` と同じレベルです。詳細については、「*AWS Batch API リファレンスガイド*」の「[EcsProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html)」を参照してください。
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html#Batch-Type-EcsProperties-taskProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html#Batch-Type-EcsProperties-taskProperties) には、Amazon ECS タスク用に定義されたプロパティが含まれます。詳細については、「*AWS Batch API リファレンスガイド*」の「[EcsProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html)」を参照してください。
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html#Batch-Type-EcsTaskProperties-containers](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html#Batch-Type-EcsTaskProperties-containers) には、単一コンテナ定義での `containerProperties` と同様の情報が含まれます。主な違いは、`containers` では最大 10 個のコンテナを定義できる点です。詳細については、「*AWS Batch API リファレンスガイド*」の「[ECSTaskProperties:containers](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html)」を参照してください。
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-essential](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-essential) パラメータは、そのコンテナがジョブにどのように影響するかを示します。ジョブを進行させるには、すべての essential コンテナが正常に完了 (0 で終了) する必要があります。essential としてマークされたコンテナが失敗した場合 (0 以外で終了)、ジョブは失敗します。

  デフォルト値は `true` で、少なくとも 1 つのコンテナを `essential` としてマークする必要があります。詳細については、[`essential` API リファレンスガイド](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-essential)の「*AWS Batch *」を参照してください。
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-dependsOn](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-dependsOn) パラメータを使用すると、コンテナの依存関係のリストを定義できます。詳細については、[`dependsOn` API リファレンスガイド](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-dependsOn)の「*AWS Batch *」を参照してください。
**注記**  
`dependsOn` リストの複雑さと、関連するコンテナランタイムはジョブの開始時間に影響する可能性があります。依存関係の実行に時間がかかる場合、ジョブは完了するまで `STARTING` 状態のままになります。

`ecsProperties` と構造の詳細については、「[RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#API_RegisterJobDefinition_RequestBody)」リクエスト構文で「[ecsProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-ecsProperties)」を参照してください。

## Amazon EKS のマルチコンテナのジョブ定義
<a name="multi-container-eks-updates"></a>

Amazon EKS のマルチコンテナ構造に対応するため、API データ型が異なることがあります。例えば、
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainer.html#Batch-Type-EksContainer-name](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainer.html#Batch-Type-EksContainer-name) は、コンテナに対する一意の識別子です。このオブジェクトは単一のコンテナには必要ありませんが、ポッド内の複数のコンテナを定義するときは必要です。`name` が単一のコンテナに定義されていない場合は、デフォルト名の `default` が適用されます。
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html#Batch-Type-EksPodProperties-initContainers](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html#Batch-Type-EksPodProperties-initContainers) は [eksPodProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html) データ型内で定義されます。これらはアプリケーションコンテナの前に、常に完了するまで実行されます。また、次のコンテナが起動する前に正常に完了する必要があります。

  これらのコンテナは Amazon EKS Connector エージェントを使用して登録され、登録情報は Amazon Elastic Kubernetes Service のバックエンドデータストアに保持されます。`initContainers` オブジェクトは最大 10 個の要素を受け入れることができます。詳細については、*Kubernetes ドキュメント*の「[Init Containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)」を参照してください。
**注記**  
`initContainers` オブジェクトは、ジョブの開始時刻に影響を与える可能性があります。`initContainers` の実行に時間がかかる場合、ジョブは完了するまで `STARTING` 状態のままになります。
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html#Batch-Type-EksPodProperties-shareProcessNamespace](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html#Batch-Type-EksPodProperties-shareProcessNamespace) は、ポッド内のコンテナが同じプロセス名前空間を共有できるかどうかを示します。デフォルト値は `false` です。これを `true` に設定すると、コンテナは同じポッドにある他のコンテナのプロセスを認識してシグナルを送信できるようになります。
+ どのコンテナにも重要性があり、ジョブが成功するにはすべてのコンテナが正常に完了 (0 で終了) する必要があります。1 つのコンテナが失敗すると (0 以外で終了)、ジョブは失敗します。

`eksProperties` および構造の詳細については、「[RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#API_RegisterJobDefinition_RequestBody)」リクエスト構文で「[eksProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-eksProperties)」を参照してください。

# リファレンス: EcsProperties を使用した AWS Batch ジョブのシナリオ
<a name="multi-container-jobs-scenarios"></a>

`EcsProperties` を使用する AWS Batch ジョブ定義をニーズに基づいて構造化する方法を説明するために、このトピックでは次の [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html) ペイロードを使用します。これらの例をファイルにコピーし、必要に応じてカスタマイズしてから AWS Command Line Interface (AWS CLI) を使用して `RegisterJobDefinition` を呼び出してください。

## Amazon EC2 での Amazon ECS の AWS Batch ジョブ
<a name="multi-container-scenario-on-ec2"></a>

以下は、Amazon Elastic Compute Cloud での Amazon Elastic Container Service の AWS Batch ジョブの例です。

```
{
    "jobDefinitionName": "multicontainer-ecs-ec2",
    "type": "container",
    "ecsProperties": {
        "taskProperties": [
          {
            "containers": [
              {
                "name": "c1",
                "essential": false,
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "2"
                  },
                  {
                    "type": "MEMORY",
                    "value": "4096"
                  }
                ]
              },
              {
                "name": "c2",
                "essential": false,
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "2"
                  },
                  {
                    "type": "MEMORY",
                    "value": "4096"
                  }
                ]
              },
              {
                "name": "c3",
                "essential": true,
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "firelensConfiguration": {
                  "type": "fluentbit",
                  "options": {
                    "enable-ecs-log-metadata": "true"
                  }
                 },
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "6"
                  },
                  {
                    "type": "MEMORY",
                    "value": "12288"
                  }
                ]
              }
            ]
          }
        ]
  }
}
```

## Fargate での Amazon ECS の AWS Batch ジョブ
<a name="multi-containers-ecs-on-fargate"></a>

以下は、AWS Fargate での Amazon Elastic Container Service の AWS Batch ジョブの例です。

```
{
    "jobDefinitionName": "multicontainer-ecs-fargate",
    "type": "container",
    "platformCapabilities": [
        "FARGATE"
    ],
    "ecsProperties": {
        "taskProperties": [
          {
            "containers": [
              {
                "name": "c1",
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "2"
                  },
                  {
                    "type": "MEMORY",
                    "value": "4096"
                  }
                ]
              },
              {
                "name": "c2",
                "essential": true,
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "6"
                  },
                  {
                    "type": "MEMORY",
                    "value": "12288"
                  }
                ]
              }
            ],
            "executionRoleArn": "arn:aws:iam::1112223333:role/ecsTaskExecutionRole"
          }
        ]
  }
}
```

## Amazon EKS の AWS Batch ジョブ
<a name="multi-containers-eks-example"></a>

以下は、Amazon Elastic Kubernetes Service の AWS Batch ジョブの例です。

```
{
  "jobDefinitionName": "multicontainer-eks",
  "type": "container",
  "eksProperties": {
    "podProperties": {
      "shareProcessNamespace": true,
      "initContainers": [
        {
          "name": "init-container",
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
          "command": [
            "echo"
          ],
          "args": [
            "hello world"
          ],
          "resources": {
            "requests": {
              "cpu": "1",
              "memory": "512Mi"
            }
          }
        },
        {
          "name": "init-container-2",
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
          "command": [
            "echo",
            "my second init container"
          ],
          "resources": {
            "requests": {
              "cpu": "1",
              "memory": "512Mi"
            }
          }
        }
      ],
      "containers": [
        {
          "name": "c1",
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
          "command": [
            "echo world"
         ],
          "resources": {
            "requests": {
              "cpu": "1",
              "memory": "512Mi"
            }
          }
        },
        {
          "name": "sleep-container",
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
          "command": [
            "sleep",
            "20"
          ],
          "resources": {
            "requests": {
              "cpu": "1",
              "memory": "512Mi"
            }
          }
        }
      ]
    }
  }
}
```

## ノードごとに複数のコンテナを持つ MNP AWS Batch ジョブ
<a name="multi-container-ecs-mnp"></a>

以下は、ノードごとに複数のコンテナを持つマルチノード並列 (MNP) AWS Batch ジョブの例です。

```
{
  "jobDefinitionName": "multicontainer-mnp",
  "type": "multinode",
  "nodeProperties": {
    "numNodes": 6,
    "mainNode": 0,
    "nodeRangeProperties": [
      {
        "targetNodes": "0:5",
        "ecsProperties": {
          "taskProperties": [
            {
              "containers": [
                {
                  "name": "range05-c1",
                  "command": [
                    "echo",
                    "hello world"
                  ],
                  "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                  "resourceRequirements": [
                    {
                      "type": "VCPU",
                      "value": "2"
                    },
                    {
                      "type": "MEMORY",
                      "value": "4096"
                    }
                  ]
                },
                {
                  "name": "range05-c2",
                  "command": [
                    "echo",
                    "hello world"
                  ],
                  "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                  "resourceRequirements": [
                    {
                      "type": "VCPU",
                      "value": "2"
                    },
                    {
                      "type": "MEMORY",
                      "value": "4096"
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    ]
  }
}
```

# awslogs ログドライバーを使用する
<a name="using_awslogs"></a>

デフォルトでは、 は`awslogs`ログドライバーが CloudWatch Logs にログ情報を送信 AWS Batch できるようにします。この機能により、コンテナからの異なるログを 1 か所で便利に表示できます。また、コンテナログがコンテナインスタンスのディスク容量を占めることも防止できます。このトピックでは、ジョブ定義で `awslogs` ログドライバーを設定する方法について説明します。

**注記**  
 AWS Batch コンソールでは、ジョブ定義を作成するときに、**ログ記録設定**セクションで`awslogs`ログドライバーを設定できます。

**注記**  
ジョブのコンテナによってログ記録される情報のタイプは、`ENTRYPOINT` コマンドによって大きく異なります。デフォルトでは、キャプチャされるログは、コンテナをローカルに実行した場合にインタラクティブターミナルに表示されるコマンド出力 (`STDOUT` および `STDERR` I/O ストリーム) を示します。`awslogs` ログドライバーは、これらのログを Docker から CloudWatch Logs に渡します。Docker ログの処理方法 (ファイルデータやストリームをキャプチャする別の方法) の詳細については、Docker ドキュメントの[コンテナまたはサービスのログを表示する](https://docs.docker.com/config/containers/logging/)を参照してください。

コンテナインスタンスから CloudWatch Logs にシステムログを送信するには、[での CloudWatch Logs の使用 AWS Batch](using_cloudwatch_logs.md)を参照してください。CloudWatch Logs の詳細については、*Amazon CloudWatch Logs ユーザーガイド*の[ログファイルのモニタリング](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)および [CloudWatch Logs クォータ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html)を参照してください。

## AWS Batch JobDefiniton データ型の awslogs ログドライバーオプション
<a name="create_awslogs_logdriver_options"></a>

`awslogs` ログドライバーは、 AWS Batch ジョブ定義で次のオプションをサポートしています。詳細については、Docker ドキュメントの[CloudWatch Logs ロギングドライバーの設定](https://docs.docker.com/config/containers/logging/awslogs/)を参照してください。

`awslogs-region`  
必須: いいえ  
`awslogs` ログドライバーが Docker ログを送信するリージョンを指定します。デフォルトでは、使用されるリージョンはジョブのリージョンと同じです。CloudWatch Logs では、異なるリージョンのジョブからすべてのログを 1 つのリージョンに送信するように選択できます。これにより、それらを 1 つの場所からすべて表示できます。または、より詳細なアプローチのために、リージョンごとにそれらを分離することもできます。ただし、このオプションを選択する場合は、指定したロググループが、指定したリージョンに存在することを確認してください。

`awslogs-group`  
必須：オプション  
この `awslogs-group` オプションを選択すると、`awslogs` ログドライバーがログストリームを送信するロググループを指定できます。これを指定しない場合、`aws/batch/job` が使用されます。

`awslogs-stream-prefix`  
必須：オプション  
`awslogs-stream-prefix` オプションを使用すると、ログストリームを指定されたプレフィックスと、コンテナが属する AWS Batch ジョブの Amazon ECS タスク ID に関連付けることができます。このオプションでプレフィックスを指定した場合、ログストリームの形式は以下のようになります。  

```
prefix-name/default/ecs-task-id
```

`awslogs-datetime-format`  
必須: いいえ  
このオプションは、Python `strftime` 形式で複数行起動パターンを定義します。ログメッセージは、パターンに一致する 1 行と、それに続くパターンに一致しない行で構成されます。したがって、一致した行はログメッセージ間の区切り文字です。  
この形式を使用する場合のユースケースの例としては、スタックダンプなどの解析された出力があり、これを使用しなければ、複数のエントリに記録されることになります。適切なパターンにより、単一のエントリにキャプチャさせます。  
詳細については、[awslogs-datetime-format](https://docs.docker.com/config/containers/logging/awslogs/#awslogs-datetime-format)を参照してください。  
`awslogs-datetime-format` と `awslogs-multiline-pattern` の両方が設定されている場合、このオプションは常に優先されます。  
複数行のログ記録は、すべてのログメッセージの正規表現の解析とマッチングを実行します。これによりログ記録のパフォーマンスに悪影響が及ぶ可能性があります。

`awslogs-multiline-pattern`  
必須: いいえ  
このオプションでは、正規表現を使用して複数行起動パターンを定義します。ログメッセージは、パターンに一致する 1 行と、それに続くパターンに一致しない行で構成されます。したがって、一致した行はログメッセージ間の区切り文字です。  
詳細については、Docker ドキュメントの[awslogs-multiline-pattern](https://docs.docker.com/config/containers/logging/awslogs/#awslogs-multiline-pattern)を参照してください。  
`awslogs-datetime-format` も設定されている場合は、このオプションは無視されます。  
複数行のログ記録は、すべてのログメッセージの正規表現の解析とマッチングを実行します。これによりログ記録のパフォーマンスに悪影響が及ぶ可能性があります。

`awslogs-create-group`  
必須: いいえ  
自動的に作成されたロググループが必要かどうかを指定します。このオプションを指定しない場合、デフォルトは `false` です。  
このオプションは推奨されません。各ジョブがロググループの作成を試みるため、ジョブが失敗する可能性が高くなるため、CloudWatch Logs [CreateLogGroup API](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html) アクションを使用して、事前にロググループを作成することをお勧めします。
`logs:CreateLogGroup` を使用しようとする前に、実行ロールの IAM ポリシーには `awslogs-create-group` アクセス権限が含まれている必要があります。

## ジョブ定義でログ設定を指定する
<a name="specify-log-config"></a>

デフォルトでは、 は`awslogs`ログドライバー AWS Batch を有効にします。ここでは、ジョブの `awslogs` ログ設定をカスタマイズする方法について説明します。詳細については、[シングルノードのジョブ定義を作成する](create-job-definition.md)を参照してください。

次のログ設定 JSON スニペットは、ジョブごとに `logConfiguration` オブジェクトが指定されています。1 つは `awslogs-wordpress` というロググループにログを送る WordPress のジョブで、もう 1 つは `awslogs-mysql` というロググループにログを送る MySQL コンテナのものです。どちらのコンテナも `awslogs-example` ログストリームプレフィックスを使用します。

```
"logConfiguration": {
    "logDriver": "awslogs",
    "options": {
        "awslogs-group": "awslogs-wordpress",
        "awslogs-stream-prefix": "awslogs-example"
    }
}
```

```
"logConfiguration": {
    "logDriver": "awslogs",
    "options": {
        "awslogs-group": "awslogs-mysql",
        "awslogs-stream-prefix": "awslogs-example"
    }
}
```

 AWS Batch コンソールでは、次の図に示すように、`wordpress`ジョブ定義のログ設定が指定されます。

![\[Log configuration interface showing awslogs driver with group and stream prefix options.\]](http://docs.aws.amazon.com/ja_jp/batch/latest/userguide/images/awslogs-console-config.png)


`awslogs` ログドライバーを使用するタスク定義をジョブ定義ログ設定に登録すると、ジョブ定義を使用してジョブを送信し、CloudWatch Logs へのログの送信をスタートできます。詳細については、[チュートリアル: ジョブを送信する](submit_job.md)を参照してください。

# 機密データを指定する
<a name="specifying-sensitive-data"></a>

を使用すると AWS Batch、機密データをシークレットまたは Parameter Store AWS Systems Manager パラメータに保存し、ジョブ定義で参照することで、ジョブに AWS Secrets Manager 機密データを挿入できます。

以下の方法でシークレットをジョブに公開できます。
+ 機密データを環境変数としてコンテナに挿入するには、`secrets` ジョブ定義パラメータを使用します。
+ ジョブのログ設定内の機密情報を参照するには、`secretOptions` ジョブ定義パラメータを使用します。

**Topics**
+ [Secrets Manager を使用して機密データを指定する](specifying-sensitive-data-secrets.md)
+ [Systems Manager Parameter Store を使用して機密データを指定する](specifying-sensitive-data-parameters.md)

# Secrets Manager を使用して機密データを指定する
<a name="specifying-sensitive-data-secrets"></a>

を使用すると AWS Batch、機密データを AWS Secrets Manager シークレットに保存し、ジョブ定義で参照することで、機密データをジョブに挿入できます。Secrets Manager シークレットに保存された機密データは、環境変数として、またはログ設定の一部としてジョブに公開できます。

シークレットを環境変数として挿入する場合は、挿入するシークレットの JSON キーまたはバージョンを指定できます。このプロセスは、ジョブに公開される機密データの制御に役立ちます。シークレットのバージョニングの詳細については、*AWS Secrets Manager ユーザーガイド*の「[AWS Secrets Managerの主な用語と概念](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret)」を参照してください。

## Secrets Manager を使用して機密データを指定する際の考慮事項
<a name="secrets-considerations"></a>

Secrets Manager を使用してジョブの機密データを指定する場合は、以下を考慮する必要があります。
+ シークレットの特定の JSON キーやバージョンを使用してシークレットを挿入するには、コンピューティング環境内のコンテナインスタンスに、 Amazon ECS コンテナエージェントのバージョン 1.37.0 以降が必要です。ただし、最新のコンテナエージェントバージョンを使用することをお勧めします。エージェントのバージョンの確認と最新バージョンへの更新の詳細については、*Amazon Elastic Container Service デベロッパーガイド*の[Amazon ECS コンテナエージェントの更新](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html)を参照してください。

  シークレットの内容全体を環境変数として挿入したり、ログ設定にシークレットを挿入したりするには、コンテナインスタンスにバージョン 1.23.0 以降のコンテナエージェントが必要です。
+ [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html) API の `SecretString` パラメータで作成されたシークレットであるテキストデータを格納するシークレットのみがサポートされます。[CreateSecret API](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html) の `SecretBinary` パラメータで作成されたシークレットであるバイナリデータを格納するシークレットはサポートされていません。
+ Secrets Manager シークレットを参照するジョブ定義を使用してジョブの機密データを取得する場合、インターフェイス VPC エンドポイントも使用している場合は、Secrets Manager のインターフェイス VPC エンドポイントを作成する必要があります 。詳細については、[AWS Secrets Manager ユーザーガイド](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)の「*VPC EndpointでSecrets Managerを使用する*」を参照してください。
+ 重要なデータは、ジョブが最初に開始されたときにジョブに挿入されます。シークレットを後で更新またはローテーションすると、ジョブには更新された値が自動的に送信されなくなります。更新されたシークレット値で新しいジョブを起動するようサービスに強制するには、新しいジョブの起動が必要です。

## AWS Batch シークレットに必要な IAM アクセス許可
<a name="secrets-iam"></a>

この機能を使用するには、実行ロールを持っていて、ジョブ定義でそのロールを参照する必要があります。これにより、コンテナエージェントは必要な Secrets Manager リソースをプルすることを許可されます。詳細については、「[AWS Batch IAM 実行ロール](execution-IAM-role.md)」を参照してください。

作成した Secrets Manager シークレットへのアクセスを許可するには、以下のアクセス許可をインラインポリシーとして実行ロールに手動で追加します。詳細については、*IAM ユーザーガイド*の「[IAM ポリシーの追加と削除 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。
+ `secretsmanager:GetSecretValue` – Secrets Manager シークレットを参照する場合に必須です。
+ `kms:Decrypt` – シークレットでカスタムの KMS キーを使用し、デフォルトのキーを使用しない場合にのみ必須です。そのカスタムキーの ARN はリソースとして追加されている必要があります。

次の例のインラインポリシーでは必須の アクセス許可を追加しています。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-2:777777777777:secret:<secret_name>",
                "arn:aws:kms:us-east-2:777777777777:key/<key_id>"
            ]
        }
    ]
}
```

------

## 環境変数としての機密データの挿入
<a name="secrets-envvar"></a>

以下の項目はジョブ定義内で指定できます。
+ ジョブに設定する環境変数の名前が含まれている `secrets` オブジェクト
+ Secrets Manager シークレットの Amazon リソースネーム (ARN)。
+ ジョブに渡す機密データが含まれている追加のパラメータ

次の例は、Secrets Manager シークレットに指定する必要がある完全な構文を示しています。

```
arn:aws:secretsmanager:region:aws_account_id:secret:secret-name:json-key:version-stage:version-id
```

次のセクションでは、追加のパラメータについて説明します。これらのパラメータは省略可能です。ただし、それらを使用しない場合は、デフォルト値を使用するためにコロン `:` が含まれている必要があります。以下の例でより詳細なコンテキストを示します。

`json-key`  
キーと値のペアのキーの名前を指定します。値は設定する環境変数の値です。JSON 形式の値のみがサポートされます。JSON キーを指定しないと、シークレットの内容全体が使用されます。

`version-stage`  
使用するシークレットのバージョンのステージングラベルを指定します。バージョンのステージングラベルを指定した場合、バージョン ID は指定できません。バージョンのステージを指定しないと、デフォルトの動作として、`AWSCURRENT` ステージングラベルのシークレットが取得されます。  
ステージングラベルは、シークレットが更新またはローテーションされたときに、シークレットのさまざまなバージョンを追跡するために使用します。シークレットの各バージョンには、1 つ以上のステージングラベルと 1 つの ID があります。詳細については、[「 ユーザーガイド」の AWS 「Secrets Manager の主要な用語と概念](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret)」を参照してください。 *AWS Secrets Manager *

`version-id`  
使用するシークレットのバージョンの固有 ID を指定します。バージョン ID を指定した場合、バージョンのステージングラベルは指定できません。バージョン ID を指定しないと、デフォルトの動作として、`AWSCURRENT` ステージングラベルのシークレットが取得されます。  
バージョン ID は、シークレットが更新またはローテーションされたときに、シークレットのさまざまなバージョンを追跡するために使用します。シークレットの各バージョンには ID があります。詳細については、[「 ユーザーガイド」の AWS 「Secrets Manager の主要な用語と概念](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret)」を参照してください。 *AWS Secrets Manager *

### コンテナの定義の例
<a name="secrets-examples"></a>

以下の例では、コンテナの定義で Secrets Manager シークレットを参照する方法を示します。

**Example シークレット全体を参照する**  
次に示すのは、Secrets Manager シークレットのテキスト全体を参照するときの形式を示すタスク定義のスニペットです。  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
    }]
  }]
}
```

**Example シークレット内の特定のキーを参照する**  
次に示すのは、シークレットの内容と、シークレットに関連付けられているバージョンのステージングラベルおよびバージョン ID を表示する [>get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html) コマンドの出力例です。  

```
{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "VersionId": "871d9eca-18aa-46a9-8785-981dd39ab30c",
    "SecretString": "{\"username1\":\"password1\",\"username2\":\"password2\",\"username3\":\"password3\"}",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": 1581968848.921
}
```
前のコンテナの定義の出力で特定のキーを参照するには、ARN の最後にキー名を指定します。  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::"
    }]
  }]
}
```

**Example 特定のシークレットバージョンを参照する**  
次に示すのは、シークレットの暗号化されていない内容と、シークレットのすべてのバージョンのメタデータを表示する [>describe-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html) コマンドの出力例です。  

```
{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "Description": "Example of a secret containing application authorization data.",
    "RotationEnabled": false,
    "LastChangedDate": 1581968848.926,
    "LastAccessedDate": 1581897600.0,
    "Tags": [],
    "VersionIdsToStages": {
        "871d9eca-18aa-46a9-8785-981dd39ab30c": [
            "AWSCURRENT"
        ],
        "9d4cb84b-ad69-40c0-a0ab-cead36b967e8": [
            "AWSPREVIOUS"
        ]
    }
}
```
前のコンテナの定義の出力で特定のバージョンのステージングラベルを参照するには、ARN の最後にキー名を指定します。  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::AWSPREVIOUS:"
    }]
  }]
}
```
前のコンテナの定義の出力で特定のバージョン ID を参照するには、ARN の最後にキー名を指定します。  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::9d4cb84b-ad69-40c0-a0ab-cead36b967e8"
    }]
  }]
}
```

**Example シークレットの特定のキーおよびバージョンのステージングラベルを参照する**  
シークレット内の特定のキーと特定のバージョンのステージングラベルの両方を参照する方法は次のとおりです。  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1:AWSPREVIOUS:"
    }]
  }]
}
```
特定のキーとバージョン ID を指定するには、次の構文を使用します。  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::9d4cb84b-ad69-40c0-a0ab-cead36b967e8"
    }]
  }]
}
```

## ログ設定に機密データを挿入する
<a name="secrets-logconfig"></a>

ジョブの定義内で `logConfiguration` を指定するときに、コンテナに設定するログドライバーオプションの名前と、コンテナに提示する機密データが含まれている Secrets Manager シークレットの完全な ARN を使用して `secretOptions` を指定できます。

以下に示すのは、Secrets Manager シークレットを参照するときの形式を示すジョブ定義のスニペットです。

```
{
  "containerProperties": [{
    "logConfiguration": [{
      "logDriver": "splunk",
      "options": {
        "splunk-url": "https://cloud.splunk.com:8080"
      },
      "secretOptions": [{
        "name": "splunk-token",
        "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
      }]
    }]
  }]
}
```

## AWS Secrets Manager シークレットを作成する
<a name="secrets-create-secret"></a>

Secrets Manager コンソールを使用して、機密データ用のシークレットを作成できます。詳細については、*AWS Secrets Manager ユーザーガイド*の 「[ベーシックシークレットの作成](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) を参照してください。

**基本的なシークレットを作成するには**

機密データのシークレットを作成するには、Secrets Manager を使用します。

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) から Secrets Manager コンソールを開きます。

1. **[Store a new secret]** (新しいシークレットの保存) を選択します｡

1. **[Select secret type]** (シークレットタイプの選択) で、**[Other type of secrets]** (他の種類のシークレット) を選択します。

1. カスタムシークレットの詳細を **[Key]** (キー) と **[Value]** (値) のペアの形式で指定します。例えば、`UserName` のキーを指定し、その値として適切なユーザー名を指定できます。`Password` の名前とパスワードのテキストを値として持つ 2 番目のキーを追加します。データベース名、サーバーアドレス、TCP ポートなどのエントリを追加することもできます。必要な情報を格納するのに必要な数だけペアを追加できます。

   または、**[Plaintext]** (プレーンテキスト) タブを選択して、任意の方法でシークレット値を入力することもできます。

1. シークレット内の保護されたテキストの AWS KMS 暗号化に使用する暗号化キーを選択します。選択しない場合、Secrets Manager は、アカウントのデフォルトキーが存在するかどうかを調べ、存在する場合はそれを使用します。デフォルトのキーが存在しない場合は、Secrets Manager が自動的に作成します。また、[**Add new key**(新しいキーの追加)] を選択して､このシークレット専用のカスタム KMS キーを作成します。独自の KMS キーを作成するには、アカウントに KMS キーを作成するアクセス権限が必要です。

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

1. **[Secret name]** (シークレット名) に、オプションのパスと名前 (例: **production/MyAwesomeAppSecret** または **development/TestSecret**) を入力し、**[Next]** (次) を選択します。オプションで説明を追加することもできます。後でこのシークレットを思い出すのに役立ちます。

   シークレット名に使用できるのは、ASCII 文字、数字、または次の記号のみです: /\$1\$1=.@-

1. (オプション) この時点で、シークレットのローテーションを設定することができます。この手順では、**[Disable automatic rotation]** (自動ローテーションを無効化) は無効のままにし、[**次**] を選択します。

   新規または既存のシークレットのローテーションを設定する方法については、「シーク[AWS Secrets Manager レットのローテーション](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)」を参照してください。

1. 設定を確認し、次に **[Store secret]** (シークレットの保存) を選択して入力した内容すべてを Secrets Manager の新しいシークレットとして保存します。

# Systems Manager Parameter Store を使用して機密データを指定する
<a name="specifying-sensitive-data-parameters"></a>

を使用すると AWS Batch、機密データを Parameter Store パラメータに保存し、コンテナ定義で参照することで、コンテナに機密データ AWS Systems Manager を挿入できます。

**Topics**
+ [Systems Manager Parameter Store を使用した機密データの指定に関する考慮事項](#secrets--parameterstore-considerations)
+ [AWS Batch シークレットに必要な IAM アクセス許可](#secrets-iam-parameters)
+ [環境変数として機密データを挿入する](#secrets-envvar-parameters)
+ [ログ設定に機密データを挿入する](#secrets-logconfig-parameters)
+ [Parameter Store AWS Systems Manager パラメータを作成する](#secrets-create-parameter)

## Systems Manager Parameter Store を使用した機密データの指定に関する考慮事項
<a name="secrets--parameterstore-considerations"></a>

Systems Manager パラメータストアのパラメータを使用してコンテナの機密データを指定する場合は、以下を考慮する必要があります。
+ この機能では、コンテナインスタンスに、バージョン 1.23.0 以降のコンテナエージェントが必要です。ただし、最新のコンテナエージェントバージョンを使用することをお勧めします。エージェントのバージョンの確認と最新バージョンへの更新の詳細については、*Amazon Elastic Container Service デベロッパーガイド*の[Amazon ECS コンテナエージェントの更新](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html)を参照してください。
+ 機密データは、コンテナが最初に開始されたときにジョブのコンテナに挿入されます。シークレットまたは Parameter Store パラメータが後で更新またはローテーションされたときに、コンテナは更新された値を自動的に受け取りません。更新されたシークレットを使用して新しいジョブを強制的に起動するには、新しいジョブを起動する必要があります。

## AWS Batch シークレットに必要な IAM アクセス許可
<a name="secrets-iam-parameters"></a>

この機能を使用するには、実行ロールを持っていて、ジョブ定義でそのロールを参照する必要があります。これにより、Amazon ECS コンテナエージェントは必要な AWS Systems Manager リソースをプルできます。詳細については、「[AWS Batch IAM 実行ロール](execution-IAM-role.md)」を参照してください。

作成した Parameter Store AWS Systems Manager パラメータへのアクセスを許可するには、以下のアクセス許可をインラインポリシーとして実行ロールに手動で追加します。詳細については、*IAM ユーザーガイド*の[IAM ポリシーの追加と削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)を参照してください。
+ `ssm:GetParameters`— Systems Managerパラメータストアのパラメータをタスク定義で参照する場合は必須です。
+ `secretsmanager:GetSecretValue` — Secrets Manager シークレットを直接参照するか、Systems Manager パラメータストアのパラメータがタスク定義で Secrets Manager シークレットを参照している場合は必須です。
+ `kms:Decrypt` – シークレットでカスタムの KMS キーを使用し、デフォルトのキーを使用しない場合にのみ必須です。そのカスタムキーの ARN はリソースとして追加されている必要があります。

次の例のインラインポリシーでは必須許可を追加しています。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters",
                "secretsmanager:GetSecretValue",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-2:999999999999:parameter/<parameter_name>",
                "arn:aws:secretsmanager:us-east-2:999999999999:secret:<secret_name>",
                "arn:aws:kms:us-east-2:999999999999:key/<key_id>"
            ]
        }
    ]
}
```

------

## 環境変数として機密データを挿入する
<a name="secrets-envvar-parameters"></a>

コンテナの定義内で、コンテナに設定する環境変数の名前と、コンテナに渡す機密データが含まれている Systems Manager パラメータストアのパラメータの ARN 全体を使用して `secrets` を指定できます。

以下に示すのは、Systems Manager パラメータストアのパラメータを参照するときの形式を示すタスク定義のスニペットです。起動するタスクと同じリージョンに、Systems Manager パラメータストアのパラメータが存在する場合は、パラメータの完全な ARN または名前のどちらも使用できます。パラメータが別のリージョンに存在する場合は、完全な ARN を指定する必要があります。

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }]
  }]
}
```

## ログ設定に機密データを挿入する
<a name="secrets-logconfig-parameters"></a>

コンテナの定義内で `logConfiguration` を指定するときに、コンテナに設定するログドライバーオプションの名前と、コンテナに渡す機密データが含まれている Systems Manager パラメータストアのパラメータの ARN 全体を使用して `secretOptions` を指定できます。

**重要**  
起動するタスクと同じリージョンに、Systems Manager パラメータストアのパラメータが存在する場合は、パラメータの完全な ARN または名前のどちらも使用できます。パラメータが別のリージョンに存在する場合は、完全な ARN を指定する必要があります。

以下に示すのは、Systems Manager パラメータストアのパラメータを参照するときの形式を示すタスク定義のスニペットです。

```
{
  "containerProperties": [{
    "logConfiguration": [{
      "logDriver": "fluentd",
      "options": {
        "tag": "fluentd demo"
      },
      "secretOptions": [{
        "name": "fluentd-address",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
      }]
    }]
  }]
}
```

## Parameter Store AWS Systems Manager パラメータを作成する
<a name="secrets-create-parameter"></a>

 AWS Systems Manager コンソールを使用して、機密データの Systems Manager パラメータストアパラメータを作成できます。詳細については、*AWS Systems Manager ユーザーガイド*の[コマンドでパラメータを作成して使用する (コンソール)](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-console.html)を参照してください。

**パラメータストアのパラメータを作成するには**

1. [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) で AWS Systems Manager コンソールを開きます。

1. ナビゲーションペインで **パラメータストア**、**パラメータの作成** の順に選択します。

1. **名前** に、階層とパラメータ名を入力します。例えば、`test/database_password` と入力します。

1. **Description]** (説明) に説明を入力します (省略可能)。

1. **Type]** (タイプ) として、**String]**、**StringList]**、**SecureString]** のいずれかを選択します。
**注記**  
**SecureString]** を選択すると、**KMS Key ID]** フィールドが表示されます。KMS キー ID、KMS キー ARN、エイリアス名、またはエイリアス ARN が指定されていない場合、システムは `alias/aws/ssm` を使用します。これは、Systems Manager 用のデフォルトの KMS キーです。このキーを使用しない場合は、カスタムキーを選択します。詳細については、*AWS Systems Manager ユーザーガイド*の[Secure String パラメータを使用する](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-about.html)を参照してください。
コンソールで `key-id` パラメータにカスタム KMS キーエイリアス名またはエイリアス ARN のいずれかを指定して Secure String パラメータを作成する場合は、そのエイリアスの前にプレフィックス `alias/` を指定する必要があります。ARN の例を次に示します。  

     ```
     arn:aws:kms:us-east-2:123456789012:alias/MyAliasName
     ```
エイリアス名の例を次に示します。  

     ```
     alias/MyAliasName
     ```

1. **Value]** (値) に値を入力します。例えば、`MyFirstParameter` です。**SecureString]** を選択している場合、入力した値は必ずマスクされます。

1. **パラメータの作成** を選択します。

# ジョブのプライベートレジストリの認証
<a name="private-registry"></a>

を使用するジョブのプライベートレジストリ認証 AWS Secrets Manager を使用すると、認証情報を安全に保存し、ジョブ定義で参照できます。これにより、ジョブ定義で認証 AWS を必要とする 外のプライベートレジストリに存在するコンテナイメージを参照できます。この機能は、Amazon EC2 インスタンスと Fargate でホストされるジョブに対応しています。

**重要**  
ジョブ定義で Amazon ECR に保存されたイメージを参照している場合、このトピックは適用されません。詳細については、*Amazon Elastic Container Registry ユーザーガイド*の「[Amazon ECS で Amazon ECR イメージを使用する](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html)」を参照してください。

Amazon EC2 インスタンスでホストされるジョブの場合は、この機能のためにコンテナエージェントのバージョン `1.19.0` 以降が必要です。ただし、最新のコンテナエージェントバージョンを使用することをお勧めします。エージェントのバージョンの確認と最新バージョンへの更新の方法の詳細については、「*Amazon Elastic Container Service 開発者ガイド*」の「[Amazon ECS コンテナエージェントをアップデートする](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html)」を参照してください。

Fargate でホストされているジョブの場合、この機能にはプラットフォームバージョン `1.2.0` 以降が必要です。詳細については、「*Amazon Elastic Container Service 開発者ガイド*」の「[AWS Amazon ECS 向け Fargate プラットフォームバージョン](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform-linux-fargate.html)」を参照してください。

コンテナの定義内で、作成したシークレットの詳細 で `repositoryCredentials` オブジェクトを指定します。参照するシークレットは、それを使用するジョブとは異なる AWS リージョン アカウントから取得することも、別のアカウントから取得することもできます。

**注記**  
 AWS Batch API AWS CLIまたは AWS SDK を使用する場合、起動するジョブ AWS リージョン と同じ にシークレットが存在する場合は、シークレットの完全な ARN または名前を使用できます。シークレットが別のアカウントに存在する場合は、シークレットの完全な ARN を指定する必要があります。を使用する場合 AWS マネジメントコンソール、シークレットの完全な ARN を常に指定する必要があります。

必要なパラメータが含まれるジョブ定義のスニペットを以下に示します。

```
"containerProperties": [
  {
    "image": "private-repo/private-image",
    "repositoryCredentials": {
      "credentialsParameter": "arn:aws:secretsmanager:region:123456789012:secret:secret_name"
    }
  }
]
```

# プライベートレジストリの認証で必須の IAM アクセス許可
<a name="private-auth-iam"></a>

この機能を使用するには、ジョブの実行ロールが必要です。このロールを使用して、コンテナエージェントでコンテナイメージをプルできます。詳細については、「[AWS Batch IAM 実行ロール](execution-IAM-role.md)」を参照してください。

作成したシークレットにアクセスできるようにするには、以下のアクセス許可を、インラインポリシーとしてジョブの実行ロールに追加します。詳細については、「[IAM ポリシーの追加と削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。
+ `secretsmanager:GetSecretValue`
+ `kms:Decrypt` - カスタムの KMS キーを使用するが、デフォルトのキーは使用しない場合にのみ必須。カスタムキーの Amazon リソースネーム (ARN) は、リソースとして追加する必要があります。

次の例では、インラインポリシーによりアクセス許可を追加しています。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:secret_name",
                "arn:aws:kms:us-east-1:123456789012:key/key_id"
            ]
        }
    ]
}
```

------

# チュートリアル: プライベートレジストリ認証のシークレットを作成する
<a name="private-auth-enable"></a>

を使用してプライベートレジストリ認証情報のシークレットを作成するには、次の手順を実行します AWS Secrets Manager。

**基本的なシークレットを作成する**

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

1. **[Store a new secret]** (新しいシークレットの保存) を選択します｡

1. **[Select secret type]** (シークレットタイプの選択) で、**[Other type of secrets]** (他の種類のシークレット) を選択します。

1. [**プレーンテキスト**] を選択し、次の形式でプライベートレジストリ認証情報を入力します。

   ```
   {
     "username" : "privateRegistryUsername",
     "password" : "privateRegistryPassword"
   }
   ```

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

1. **[Secret name]** (シークレット名) に､オプションのパスと名前 (例: **production/MyAwesomeAppSecret** または **development/TestSecret**) を入力し、**[Next]** (次へ) を選択します。オプションで説明を追加することもできます。後でこのシークレットを思い出すのに役立ちます。

   シークレット名に使用できるのは、ASCII 文字、数字、または以下の記号のみです: `/_+=.@-`。

1. (オプション) この時点で、シークレットのローテーションを設定することができます。この手順では、**[Disable automatic rotation]** (自動ローテーションを無効化) は無効のままにし、[**次**] を選択します。

   新規または既存のシークレットのローテーションを設定する方法については、「シーク[AWS Secrets Manager レットのローテーション](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)」を参照してください。

1. 設定を確認した上で、**[Store secret]** (シークレットの保存) を選択し、入力した全内容を Secrets Manager の新しいシークレットとして保存します。

ジョブ定義を登録し、**[プライベートレジストリ]** で **[プライベートレジストリ認証]** をオンにします。その後、**[Secrets Manager ARN または名前]** で、シークレットの Amazon リソースネーム (ARN) を入力します。詳細については、「[プライベートレジストリの認証で必須の IAM アクセス許可](private-auth-iam.md)」を参照してください。

# Amazon EFS ボリューム
<a name="efs-volumes"></a>

Amazon Elastic File System (Amazon EFS) では、AWS Batch ジョブで使用するためのシンプルでスケーラブルなファイルストレージを提供します。Amazon EFSでは、ストレージ容量は伸縮性があります。ファイルの追加や削除時に、自動的にスケールされます。アプリケーションでは、必要なときに必要なストレージを確保できます。

Amazon EFS ファイルシステムを AWS Batch で使用して、コンテナインスタンスのフリート全体のファイルシステムデータをエクスポートできます。これにより、ジョブは、同じ永続的ストレージにアクセスできます。ただし、Docker デーモンが起動する前に、Amazon EFS ファイルシステムをマウントするように、コンテナインスタンス AMI を設定する必要があります。また、ファイルシステムを使用するには、ジョブ定義でコンテナインスタンスのボリュームマウントを参照する必要があります。以下のセクションは、AWS Batch でAmazon EFSの使用を開始するのに役立ちます。

## Amazon EFS ボリュームに関する考慮事項
<a name="efs-volume-considerations"></a>

Amazon EFS ボリュームを使用する際には、以下の点を考慮する必要があります:
+ EC2 リソースを使用するジョブの場合、Amazon ECS に最適化された AMI バージョン `20191212`、コンテナエージェントバージョン 1.35.0 で、Amazon EFS ファイルシステムのサポートがパブリックプレビューとして追加されました。ただし、Amazon EFS ファイルシステムのサポートは、コンテナエージェントバージョンが 1.38.0 の Amazon ECS 最適化 AMI バージョン `20200319` (Amazon EFS アクセスポイントと IAM 認可機能が含まれるもの) で一般提供されています。これらの機能を利用するには、Amazon ECS に最適化された AMI バージョン `20200319` 以降を使用することをお勧めします。詳細については、*Amazon Elastic Container Service デベロッパーガイド*の「[Amazon ECS に最適化された AMI バージョン](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html)」を参照してください。
**注記**  
独自の AMI を作成する場合、コンテナエージェント 1.38.0 以降、`ecs-init` バージョン 1.38.0-1 以降を使用し、Amazon EC2 インスタンスで以下のコマンドを実行する必要があります。これが Amazon ECS ボリュームプラグインを有効にするためのものです。コマンドは、ベースイメージとして Amazon Linux 2 と Amazon Linux のどちらを使用しているかによって異なります。  

Amazon Linux 2  

  ```
  $ yum install amazon-efs-utils
  systemctl enable --now amazon-ecs-volume-plugin
  ```

Amazon Linux  

  ```
  $ yum install amazon-efs-utils
  sudo shutdown -r now
  ```
+ Fargate リソースを使用するジョブの場合、プラットフォームバージョン 1.4.0 以降で Amazon EFS ファイルシステムのサポートが追加されました。詳細については、*Amazon Elastic Container Service デベロッパーガイド*の「[AWS Fargate プラットフォームのバージョン](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html)」を参照してください。
+ Fargate リソースで使用されるジョブに Amazon EFS ボリュームを指定する場合、Fargate は Amazon EFS ボリュームの管理を担当するスーパーバイザーコンテナを作成します。スーパーバイザーコンテナは、ジョブのメモリを少しだけ使用します。スーパーバイザーコンテナは、タスクメタデータバージョン 4 エンドポイントにクエリを実行するときに表示されます。詳細については、*Amazon Elastic Container Service ユーザーガイドAWS Fargate*用の[タスクメタデータエンドポイントバージョン 4](https://docs.aws.amazon.com/AmazonECS/latest/userguide/task-metadata-endpoint-v4-fargate.html) を参照してください。

## Amazon EFS アクセスポイントの使用
<a name="efs-volume-accesspoints"></a>

Amazon EFS アクセスポイントは、EFS ファイルシステムへのアプリケーション固有のエントリポイントです。これにより、共有データセットへのアプリケーションアクセスが管理しやすくなります。Amazon EFS アクセスポイントの詳細およびアクセス制御方法については、*Amazon Elastic File System ユーザーガイド*の「[Amazon EFS アクセスポイントの使用](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html)」を参照してください。

アクセスポイントを使用すると、アクセスポイントを介したすべてのファイルシステム要求に対してユーザーアイデンティティ (ユーザーの POSIX グループなど) を適用できます。また、ファイルシステムに対して別のルートディレクトリを適用し、このディレクトリまたはそのサブディレクトリ内のデータに対してのみ、クライアントにアクセスを許可することもできます。

**注記**  
EFS アクセスポイントを作成するときは、ルートディレクトリとして機能するファイルシステム上のパスを指定します。AWS Batch ジョブ定義でアクセスポイント ID を持つ EFS ファイルシステムを参照する場合、ルートディレクトリを省略するか、EFS アクセスポイントに設定されたパスを強制する `/` に設定する必要があります。

AWS Batch ジョブの IAM ロールを使用して、特定のアプリケーションで使用するアクセスポイントを限定できます。IAM ポリシーとアクセスポイントを組み合わせると、アプリケーションから特定のデータセットへのアクセスを簡単に保護できます。この機能では、タスク用の Amazon ECS IAM ロールを使用します。詳細については、*Amazon Elastic Container Service デベロッパーガイド*の[タスク用の IAM ロール](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)を参照してください。

## ジョブ定義内で Amazon EFS ファイルシステムを指定する
<a name="specify-efs-config"></a>

コンテナに Amazon EFS ファイルシステムボリュームを使用するには、ジョブ定義でボリュームとマウントポイントの設定を指定する必要があります。次のジョブ定義の JSON スニペットは、コンテナの [`volumes`] と [`mountPoints`] オブジェクトの構文を示します。

```
{
    "containerProperties": [
        {
            "image": "amazonlinux:2",
            "command": [
                "ls",
                "-la",
                "/mount/efs"
            ],
            "mountPoints": [
                {
                    "sourceVolume": "myEfsVolume",
                    "containerPath": "/mount/efs",
                    "readOnly": true
                }
            ],
            "volumes": [
                {
                    "name": "myEfsVolume",
                    "efsVolumeConfiguration": {
                        "fileSystemId": "fs-12345678",
                        "rootDirectory": "/path/to/my/data",
                        "transitEncryption": "ENABLED",
                        "transitEncryptionPort": integer,
                        "authorizationConfig": {
                            "accessPointId": "fsap-1234567890abcdef1",
                            "iam": "ENABLED"
                        }
                    }
                }
            ]
        }
    ]
}
```

`efsVolumeConfiguration`  
タイプ: オブジェクト  
必須: いいえ  
このパラメータは、Amazon EFS ボリュームを使用する場合に指定します。    
`fileSystemId`  
型: 文字列  
必須: はい  
使用する Amazon EFS ファイルシステムの ID。  
`rootDirectory`  
型: 文字列  
必須: いいえ  
ホスト内にルートディレクトリとしてマウントする Amazon EFS ファイルシステム内のディレクトリ。このパラメータを省略すると、Amazon EFS ボリュームのルートが使用されます。`/` を指定すると、このパラメータを省略した場合と同じ結果になります。最大 4,096 文字を使用できます。  
[`authorizationConfig`] に EFS アクセスポイントを指定する場合は、ルートディレクトリパラメータを省略するか、または [`/`] に設定する必要があります。これにより、EFS アクセスポイントに設定されたパスが強制されます。  
`transitEncryption`  
タイプ: 文字列  
有効な値: `ENABLED` \$1 `DISABLED`  
必須: いいえ  
AWS Batch ホストと Amazon EFS サーバー間で Amazon EFS データの転送中の暗号化を有効にするかどうかをします。Amazon EFS IAM 認可を使用する場合は、転送中の暗号化を有効にする必要があります。このパラメータを省略すると、`DISABLED` のデフォルト値が使用されます。詳細については、*Amazon Elastic File System ユーザーガイド*の「[トランジット中のデータの暗号化](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html)」を参照してください。  
`transitEncryptionPort`  
タイプ: 整数  
必須: いいえ  
AWS Batch ホストと Amazon EFS サーバーの間で暗号化されたデータを送信するときに使用するポート。転送中の暗号化ポートを指定しないと、Amazon EFS マウントヘルパーが使用するポート選択方式が使用されます。この値は 0～65,535 の範囲の値にする必要があります。詳細については、*[Amazon Elastic File System User Guide]* (Amazon Elastic File System ユーザーガイド) の[[EFS Mount Helper]](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) (EFS マウントヘルパー) を参照してください。  
`authorizationConfig`  
タイプ: オブジェクト  
必須: いいえ  
Amazon EFS ファイルシステムに対する認可構成の詳細。    
`accessPointId`  
型: 文字列  
必須: いいえ  
使用するアクセスポイント ID。アクセスポイントを指定する場合は、[`efsVolumeConfiguration`] のルートディレクトリ値を省略するか、これを [`/`] に設定する必要があります。これにより、EFS アクセスポイントに設定されたパスが強制されます。アクセスポイントを使用する場合は、`EFSVolumeConfiguration` で転送中の暗号化を有効にする必要があります。詳細については、*Amazon Elastic ファイルシステムユーザーガイド*の [Amazon EFS アクセスポイントの使用](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html)を参照してください。  
`iam`  
型: 文字列  
有効な値: `ENABLED` \$1 `DISABLED`  
必須: いいえ  
Amazon EFS ファイルシステムのマウント時にジョブ定義で定義した AWS Batch ジョブの IAM ロールを使用するかどうかを決定します。使用する場合は、`EFSVolumeConfiguration` で転送中の暗号化を有効にする必要があります。このパラメータを省略すると、`DISABLED` のデフォルト値が使用されます。IAM 実行ロールの詳細については、「[AWS Batch IAM 実行ロール](execution-IAM-role.md)」を参照してください。

# ジョブ定義の例
<a name="example-job-definitions"></a>

次のトピックのジョブ定義の例では、環境変数、パラメータ置換やボリュームのマウントなどの一般的なパターンを使用する方法を示しています。

**Topics**
+ [環境変数](example-use-envvars.md)
+ [パラメータ置換](example-use-parameters.md)
+ [GPU 機能のテスト](example-test-gpu.md)
+ [マルチノード並列ジョブ](example-mnp-job-definition.md)

# 環境変数
<a name="example-use-envvars"></a>

次のジョブ定義の例では、環境変数を使用してファイルタイプと Amazon S3 URL を指定します。この用例は、「[簡単な "Fetch & Run" AWS Batch ジョブを作成する](https://aws.amazon.com/blogs/compute/creating-a-simple-fetch-and-run-aws-batch-job/)」コンピュータブログポストから引用しています。このブログポストで説明される [https://github.com/awslabs/aws-batch-helpers/blob/master/fetch-and-run/fetch_and_run.sh](https://github.com/awslabs/aws-batch-helpers/blob/master/fetch-and-run/fetch_and_run.sh) スクリプトでは、S3から `myjob.sh` スクリプトをダウンロードし、そのファイルタイプを指定するための環境変数を使用します。

この例では、コマンドと環境変数はジョブ定義でハードコード化されていますが、さらに柔軟性のあるジョブ定義を作成するためにコマンドと環境変数を指定することもできます。

```
{
    "jobDefinitionName": "fetch_and_run",
    "type": "container",
    "containerProperties": {
        "image": "123456789012.dkr.ecr.us-east-1.amazonaws.com/fetch_and_run",
        "resourceRequirements": [
            {
                "type": "MEMORY",
                "value": "2000"
            },
            {
                "type": "VCPU",
                "value": "2"
            }
        ],
        "command": [
            "myjob.sh",
            "60"
        ],
        "jobRoleArn": "arn:aws:iam::123456789012:role/AWSBatchS3ReadOnly",
        "environment": [
            {
                "name": "BATCH_FILE_S3_URL",
                "value": "s3://amzn-s3-demo-source-bucket/myjob.sh"
            },
            {
                "name": "BATCH_FILE_TYPE",
                "value": "script"
            }
        ],
        "user": "nobody"
    }
}
```

# パラメータ置換
<a name="example-use-parameters"></a>

次の例では、パラメータ置換とデフォルト値を設定するためのジョブ定義を説明しています。

`Ref::` セクションの `command` 宣言は、パラメータ置換のためにプレースホルダーを設定するときに使用します。このジョブ定義でジョブを送信する場合、`inputfile` や `outputfile` のような値に上書きしてパラメータを指定します。`parameters` セクションは `codec` のためのデフォルト設定ですが、必要に応じてパラメータを上書きできます。

詳細については、「[パラメータ](job_definition_parameters.md#parameters)」を参照してください。

```
{
    "jobDefinitionName": "ffmpeg_parameters",
    "type": "container",
    "parameters": {"codec": "mp4"},
    "containerProperties": {
        "image": "my_repo/ffmpeg",
        "resourceRequirements": [
            {
                "type": "MEMORY",
                "value": "2000"
            },
            {
                "type": "VCPU",
                "value": "2"
            }
        ],
        "command": [
            "ffmpeg",
            "-i",
            "Ref::inputfile",
            "-c",
            "Ref::codec",
            "-o",
            "Ref::outputfile"
        ],
        "jobRoleArn": "arn:aws:iam::123456789012:role/ECSTask-S3FullAccess",
        "user": "nobody"
    }
}
```

# GPU 機能のテスト
<a name="example-test-gpu"></a>

次のジョブ定義の例では、[GPU ワークロードの AMI を使用する](batch-gpu-ami.md) で説明されている GPU ワークロード AMI が適切に設定されているかどうかをテストします。このジョブ定義の例では、GitHub から TensorFlow ディープ MNIST 分類子の[例](https://github.com/tensorflow/tensorflow/blob/r1.8/tensorflow/examples/tutorials/mnist/mnist_deep.py)を実行します。

```
{
    "containerProperties": {
        "image": "tensorflow/tensorflow:1.8.0-devel-gpu",
        "resourceRequirements": [
            {
                "type": "MEMORY",
                "value": "32000"
            },
            {
                "type": "VCPU",
                "value": "8"
            }
        ],
        "command": [
            "sh",
            "-c",
            "cd /tensorflow/tensorflow/examples/tutorials/mnist; python mnist_deep.py"
        ]
    },
    "type": "container",
    "jobDefinitionName": "tensorflow_mnist_deep"
}
```

上の JSON テキストで [`tensorflow_mnist_deep.json`] という名前のファイルを作成し、次のコマンドを使用して AWS Batch ジョブ定義を登録できます。

```
aws batch register-job-definition --cli-input-json file://tensorflow_mnist_deep.json
```

# マルチノード並列ジョブ
<a name="example-mnp-job-definition"></a>

以下のジョブ定義の例では、マルチノード並列ジョブを示しています。詳細については、*AWS Compute* ブログの「[AWS Batch のマルチノード並列ジョブによる緊密に結合した分子動力学ワークフローの構築](https://aws.amazon.com/blogs/compute/building-a-tightly-coupled-molecular-dynamics-workflow-with-multi-node-parallel-jobs-in-aws-batch/)」を参照してください。

```
{
  "jobDefinitionName": "gromacs-jobdef",
  "jobDefinitionArn": "arn:aws:batch:us-east-2:123456789012:job-definition/gromacs-jobdef:1",
  "revision": 6,
  "status": "ACTIVE",
  "type": "multinode",
  "parameters": {},
  "nodeProperties": {
    "numNodes": 2,
    "mainNode": 0,
    "nodeRangeProperties": [
      {
        "targetNodes": "0:1",
        "container": {
          "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/gromacs_mpi:latest",
          "resourceRequirements": [
              {
                  "type": "MEMORY",
                  "value": "24000"
              },
              {
                  "type": "VCPU",
                  "value": "8"
              }
          ],
          "command": [],
          "jobRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
          "ulimits": [],
          "instanceType": "p3.2xlarge"
        }
      }
    ]
  }
}
```