

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

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