

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

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