EcsProperties を使用してジョブ定義を作成する
EcsProperties を使用して AWS Batch のジョブ定義を行うと、ハードウェア、センサー、3D 環境、その他のシミュレーションを個別のコンテナでモデル化できます。この機能を使用することでワークロードコンポーネントを論理的に整理し、これらをメインアプリケーションから分離できます。この機能は、Amazon Elastic Container Service (Amazon ECS)、Amazon Elastic Kubernetes Service (Amazon EKS)、AWS Fargate の AWS Batch で使用できます。
ContainerProperties と EcsProperties のジョブ定義
ユースケースに応じて、ContainerProperties または EcsProperties のジョブ定義の使用を選択できます。大まかに言って、EcsProperties を使用した AWS Batch ジョブの実行は 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 API への変更の概要
ContainerProperties と EcsProperties API データ型を使用する際の主な違いは以下のとおりです。
-
ContainerPropertiesで使用されるパラメータの多くは、TaskContainerPropertiesでも使用されます。例えば、command、image、privileged、secrets、usersです。これらはすべて「TaskContainerProperties」で説明しています。 -
一部の
TaskContainerPropertiesパラメータには従来の構造に機能的に同等なものがありません。例えば、dependsOn、essential、name、ipcMode、pidModeです。詳細は「EcsTaskDetails」と「TaskContainerProperties」を参照してください。また、一部の
ContainerPropertiesパラメータにはEcsProperties構造に機能的に同等なものやアプリケーションがありません。taskPropertiesでは、新しいオブジェクトが最大 10 個の要素を受け入れることができるように、containerがcontainersに置き換えられました。詳細は「RegisterJobDefinition:containerProperties」および「EcsTaskProperties:containers」を参照してください。 -
taskRoleArnは機能的にjobRoleArnと同等です。詳細は「EcsTaskProperties:taskRoleArn」および「ContainerProperties:jobRoleArn」を参照してください。 -
EcsProperties構造には 1~10 個のコンテナを含めることができます。詳細は「EcsTaskProperties:containers」を参照してください。 -
taskPropertiesおよび instanceTypes オブジェクトは配列ですが、現在受け入れることができるのは 1 つの要素のみです。例えば、EcsProperties:taskProperties と NodeRangeProperty:instanceTypes です。
Amazon ECS のマルチコンテナのジョブ定義
Amazon ECS のマルチコンテナ構造に対応するため、API データ型が異なることがあります。例えば、
-
ecsPropertiesは、単一コンテナ定義ではcontainerPropertiesと同じレベルです。詳細については、「AWS Batch API リファレンスガイド」の「EcsProperties」を参照してください。 -
taskPropertiesには、Amazon ECS タスク用に定義されたプロパティが含まれます。詳細については、「AWS Batch API リファレンスガイド」の「EcsProperties」を参照してください。 -
containersには、単一コンテナ定義でのcontainerPropertiesと同様の情報が含まれます。主な違いは、containersでは最大 10 個のコンテナを定義できる点です。詳細については、「AWS Batch API リファレンスガイド」の「ECSTaskProperties:containers」を参照してください。 -
essentialパラメータは、そのコンテナがジョブにどのように影響するかを示します。ジョブを進行させるには、すべての essential コンテナが正常に完了 (0 で終了) する必要があります。essential としてマークされたコンテナが失敗した場合 (0 以外で終了)、ジョブは失敗します。デフォルト値は
trueで、少なくとも 1 つのコンテナをessentialとしてマークする必要があります。詳細については、essentialAPI リファレンスガイドの「AWS Batch」を参照してください。 -
dependsOnパラメータを使用すると、コンテナの依存関係のリストを定義できます。詳細については、dependsOnAPI リファレンスガイドの「AWS Batch」を参照してください。注記
dependsOnリストの複雑さと、関連するコンテナランタイムはジョブの開始時間に影響する可能性があります。依存関係の実行に時間がかかる場合、ジョブは完了するまでSTARTING状態のままになります。
ecsProperties と構造の詳細については、「RegisterJobDefinition」リクエスト構文で「ecsProperties」を参照してください。
Amazon EKS のマルチコンテナのジョブ定義
Amazon EKS のマルチコンテナ構造に対応するため、API データ型が異なることがあります。例えば、
-
nameは、コンテナに対する一意の識別子です。このオブジェクトは単一のコンテナには必要ありませんが、ポッド内の複数のコンテナを定義するときは必要です。nameが単一のコンテナに定義されていない場合は、デフォルト名のdefaultが適用されます。 -
initContainersは eksPodProperties データ型内で定義されます。これらはアプリケーションコンテナの前に、常に完了するまで実行されます。また、次のコンテナが起動する前に正常に完了する必要があります。これらのコンテナは Amazon EKS Connector エージェントを使用して登録され、登録情報は Amazon Elastic Kubernetes Service のバックエンドデータストアに保持されます。
initContainersオブジェクトは最大 10 個の要素を受け入れることができます。詳細については、Kubernetes ドキュメントの「Init Containers」を参照してください。 注記
initContainersオブジェクトは、ジョブの開始時刻に影響を与える可能性があります。initContainersの実行に時間がかかる場合、ジョブは完了するまでSTARTING状態のままになります。 -
shareProcessNamespaceは、ポッド内のコンテナが同じプロセス名前空間を共有できるかどうかを示します。デフォルト値はfalseです。これをtrueに設定すると、コンテナは同じポッドにある他のコンテナのプロセスを認識してシグナルを送信できるようになります。 -
どのコンテナにも重要性があり、ジョブが成功するにはすべてのコンテナが正常に完了 (0 で終了) する必要があります。1 つのコンテナが失敗すると (0 以外で終了)、ジョブは失敗します。
eksProperties および構造の詳細については、「RegisterJobDefinition」リクエスト構文で「eksProperties」を参照してください。