翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: Amazon EC2 リソースに複数のコンテナを持つ単一ノードジョブ定義を作成する
Amazon Elastic Compute Cloud (Amazon EC2) リソースに複数のコンテナを持つ単一ノードジョブ定義を作成するには、次の手順を実行します。
Amazon EC2 リソースに新しいジョブ定義を作成するには:
-
https://console.aws.amazon.com/batch/
で AWS Batch コンソールを開きます。 -
ナビゲーションバーから、使用する AWS リージョン を選択します。
-
左側のナビゲーションペインで ジョブ定義 を選択します。
-
[作成] を選択します。
-
オーケストレーションタイプ には、Amazon Elastic Compute Cloud (Amazon EC2) を選択します。
-
ジョブ定義構造の場合は、「レガシー containerProperties 構造処理を使用する」をオフにします。
-
EC2 プラットフォームの設定で、マルチノード並列を有効にする をオフにします。
-
[次へ] を選択します。
全般設定セクションで、次のように入力します。
-
名前 に、一意のジョブ定義名を入力します。名前の最大長は 128 文字です。大文字、小文字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。
-
実行タイムアウト - オプションで、タイムアウト値 (秒単位) を入力します。実行タイムアウトは、未完了のジョブが終了するまでの時間です。試行時間がこの秒数を超過すると、試行は停止し、
FAILED
ステータスに移行します。詳細については、ジョブのタイムアウトを参照してください。最小値は 60 秒です。 -
スケジューリングの優先度を有効にする - オプション。0 ~ 100 の値でスケジューリング優先度を入力します。値が大きいほど優先度が高くなります。
-
タグを展開 - オプションで、タグを追加を選択してリソースにタグを追加します。キーとオプショナル値を入力し、新しいタグを追加を選択します。
-
タグの伝播をオンにして、ジョブとジョブ定義から Amazon ECS タスクにタグを伝播します。
-
再試行戦略 - オプションセクションで、次のように入力します。
-
ジョブの試行では、 が AWS Batch ジョブを
RUNNABLE
ステータスに移行しようとする回数を入力します。1 ~ 10 の整数を入力します。 -
再試行戦略条件 で、終了時に評価を追加 を選択します。少なくとも 1 つのパラメータ値を入力し、アクション を選択します。条件セットごとに、アクション を 再試行 または 終了 に設定する必要があります。これらのアクションは、以下のことを意味します。
-
再試行 — 指定したジョブ試行回数に達するまで AWS Batch 再試行します。
-
終了 – ジョブの再試行を AWS Batch 停止します。
重要
終了時に評価を追加 を選択した場合は、少なくとも 1 つのパラメータを設定して アクション] を選択するか、終了時に評価を削除] を選択します。
-
-
「タスクプロパティ」セクションに、次のように入力します。
-
実行ロール - 条件付きで、Amazon ECS エージェントがユーザーに代わって AWS API コールを実行できるようにするロールを選択します。実行ロールの作成の詳細については、「」を参照してくださいチュートリアル: IAM 実行ロールを作成する。
-
ECS 実行コマンドを有効にするを選択して、Amazon ECS コンテナシェルへのアクセスを直接有効にし、ホスト OS をバイパスします。タスクロールを選択する必要があります。
重要
ECS execute コマンドでは、ファイルシステムが書き込み可能である必要があります。
-
タスクロールで、Amazon ECS Identity and Access Management (IAM) ロールを選択して、コンテナがユーザーに代わって AWS API コールを実行できるようにします。詳細については、「Amazon Elastic Container Service デベロッパーガイド」の「Amazon ECS タスク IAM ロール」を参照してください。
-
IPC モードの場合は
host
、、task
、または を選択しますnone
。host
が指定されている場合、同じコンテナインスタンスでホスト IPC モードを指定したタスク内にあるすべてのコンテナは、ホスト Amazon EC2 インスタンスと同じ IPC リソースを共有します。タスクが指定されている場合、指定されたタスク内のすべてのコンテナが同じ IPC リソースを共有します。何も指定しない場合、タスクのコンテナ内の IPC リソースはプライベートであり、タスクまたはコンテナインスタンス内の他のコンテナと共有されません。値を指定しない場合、IPC リソース名前空間の共有はコンテナインスタンスの Docker デーモンの設定によって異なります。 PID モードの場合は、
host
または を選択しますtask
。例えば、サイドカーのモニタリングでは、pidMode
が同じタスクで実行されている他のコンテナに関する情報にアクセスする必要となる場合があります。host
を指定した場合、同じコンテナインスタンスでホスト PID モードを指定したタスク内のすべてのコンテナは、ホスト Amazon EC2 インスタンスと同じプロセス名前空間を共有します。task
が指定されている場合、指定したタスク内のすべてのコンテナは同じプロセス名前空間を共有します。値が指定されていない場合、デフォルトは各コンテナのプライベート名前空間です。
-
「消費可能なリソース」セクションに、次のように入力します。
-
一意の名前とリクエストされた値を入力します。
消費可能なリソースの追加 を選択すると、消費可能なリソースを追加できます。
-
「ストレージ」セクションに次のように入力します。
-
ボリュームの名前とソースパスを入力し、ボリュームの追加を選択します。[EFS を有効にする] オプションを選択することもできます。
ボリュームの追加 を選択すると、ボリュームを追加できます。
-
-
[パラメータ] で [パラメータを追加] を選択し、パラメータ代替プレースホルダーを [キー] とオプションの [値] のペアとして追加します。
-
次のページ を選択します。
-
コンテナの設定 セクションで次の操作を行います。
[Name] (名前) に、コンテナの名前を入力します。
必須コンテナの場合、コンテナが必須の場合は を有効にします。
-
イメージ で、ジョブに使用する Docker イメージを選択します。デフォルトでは、Docker Hub レジストリのイメージを使用できます。
で他のリポジトリを指定することもできます。名前の最大長は 225 文字です。大文字、小文字、数字、ハイフン (-)、アンダースコア (_)、コロン (:)、スラッシュ (/)、およびシャープ (#) を含めることができます。このパラメータは、Docker Remote APIrepository-url
/image
:tag
の コンテナの作成 セクションにある Image
および docker 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
)。
-
リソース要件には、以下をそれぞれ設定します。
vCPUs、コンテナの CPUs数を選択します。
Memory で、コンテナのメモリ量を選択します。
GPU の場合 - オプションで、コンテナの GPUsの数を選択します。
ユーザー] には、コンテナ内で使用するユーザー名を入力します。
読み取り専用ファイルシステムを有効にする をオンにして、ボリュームへの書き込みアクセスを削除します。
特権 をオンにして、ルートユーザーと同様に、ホストインスタンスに対する昇格されたアクセス許可をジョブコンテナに付与します。
-
コマンド では、JSON 文字列配列に相当するコマンドを フィールドに入力します。
このパラメータは、Docker Remote API
の コンテナの作成 セクションにある Cmd
にマッピングされ、COMMAND
パラメータは docker runにマッピングされます。Docker CMD
パラメータの詳細については、https://docs.docker.com/engine/reference/builder/#cmdを参照してください。 注記
コマンドには、パラメータ置換のデフォルト値とプレースホルダーを使用できます。詳細については、「パラメータ」を参照してください。
リポジトリ認証情報 - オプションで、認証情報を含むシークレットの ARN を入力します。
環境変数 - オプションで、環境変数を追加 を選択して、コンテナに渡す環境変数を追加します。
Linux パラメータ - オプションセクション:
init プロセスを有効にする をオンにすると、コンテナ内で init プロセスを実行できます。
共有メモリサイズには、/dev/shm ボリュームのサイズ (MiB) を入力します。
最大スワップサイズ では、コンテナが使用できるスワップメモリの合計容量 (MiB 単位) を入力します。
スワップ動作 では、コンテナのスワップ動作を示す 0 ~ 100 の値を入力します。値を指定せず、スワップが有効になっている場合、この値はデフォルトで 60 に設定されます。
-
デバイス で、デバイスを追加 を選択してデバイスを追加します。
-
コンテナパス] では、コンテナインスタンスでのデバイスのパスを指定します。このパスは、ホストインスタンスにマッピングされたデバイスを公開するために使用されます。空白のままにすると、ホストパスがコンテナで使用されます。
-
ホストパス] では、ホストインスタンスでのデバイスのパスを指定します。
-
アクセス許可] では、デバイスに適用する 1 つ以上のアクセス許可を選択します。使用できる権限は、読み取り、書き込み、MKNOD です。
-
-
Tmpfs では、tmpfs を追加 を選択して
tmpfs
マウントを追加します。
注記
Firelens のログ記録は、専用コンテナで行う必要があります。Firelens ログ記録を設定するには:
専用 Firelens コンテナを除くすべてのコンテナで、ロギングドライバーを に設定します。
awsfirelens
Firelens コンテナで、Firelens 設定 - オプション、ログ記録設定 - オプションをログ記録先に設定します。
Firelens 設定 - オプションセクション:
重要
AWS Batch は、非 MNP、非 FARGATE Amazon ECS ジョブに
host
ネットワークモードを適用します。Amazon ECS Firelens にはルートユーザーが必要です。 host
ネットワークモードを使用するタスクを実行する場合、Amazon ECS はセキュリティを向上させるために、ルートユーザー (UID 0) を使用してコンテナを実行しないようにお勧めします。したがって、Firelens ログ記録を使用する非 MNP および非 FARGATE ECS ジョブはすべて、セキュリティのベストプラクティスを満たしていません。-
Type で、
fluentd
または を選択しますfluentbit
。 -
オプション に、オプションの名前と値のペアを入力します。追加オプションを使用してオプションを追加できます。
-
ログ記録設定 - オプションセクション:
-
[ログドライバー] で、使用するログドライバーを選択します。使用できるログドライバーの詳細については、「LogConfiguration:logDriver」を参照してください。
注記
デフォルトでは、
awslogs
ログドライバーが使用されます。 -
[オプション] では、[オプションを追加] を選択してオプションを追加します。名前と値のペアを入力し、[オプションを追加] を選択します。
-
[シークレット] で、[シークレットを追加] を選択します。名前と値のペアを入力し、[シークレットを追加] を選択してシークレットを追加します。
ヒント
詳細については、「LogConfiguration:secretOptions」を参照してください。
-
マウントポイント - オプションで、マウントポイントの追加を選択してデータボリュームのマウントポイントを追加します。ソースボリュームとコンテナパスを指定する必要があります。
-
シークレット - オプションで、シークレットを追加を選択してシークレットを追加します。名前と値のペアを入力し、シークレットを追加 を選択します。
ヒント
詳細については、「LogConfiguration:secretOptions」を参照してください。
Ulimits - オプションで、ulimit を追加 を選択してコンテナ
ulimits
の値を追加します。名前、ソフトリミット、ハードリミット の値を入力し、ulimit を追加 を選択します。依存関係 - オプションで、コンテナ依存関係の追加を選択します。コンテナの名前と状態を選択して、このコンテナがいつ起動するかを決定します。
コンテナが 1 つしか設定されていない場合は、コンテナの追加を選択し、新しいコンテナの設定を完了する必要があります。それ以外の場合は、次へを選択して確認します。