AWS Batch
ユーザーガイド

ジョブ定義のパラメータ

ジョブ定義は、ジョブ定義名、ジョブ定義のタイプ、パラメータ置換プレースホルダーのデフォルト、ジョブのコンテナプロパティの 4 つの基本部分に分かれています。

ジョブ定義名

jobDefinitionName

ジョブ定義の登録時に名前を指定します。最大 128 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。その名前で最初に登録するジョブ定義のリビジョン番号は 1 です。その名前で登録する後続のジョブ定義には、増分のリビジョン番号が付けられます。

型: 文字列

必須: はい

タイプ

type

ジョブ定義の登録時にジョブのタイプを指定します。現時点では、コンテナジョブのみがサポートされています。

型: 文字列

有効な値: container

必須: はい

パラメータ

parameters

ジョブの送信時に、プレースホルダーを置き換えるパラメータやジョブ定義のデフォルトパラメータを上書きするパラメータを指定できます。ジョブ送信リクエストのパラメータは、ジョブ定義のデフォルトよりも優先されます。これにより、同じ形式を使用する複数のジョブに同じジョブ定義を使用し、送信時にプログラムでコマンドの値を変更することができます。

型: 文字列から文字列へのマッピング

必須: いいえ

ジョブ定義の登録時に、ジョブのコンテナプロパティの command フィールドでパラメータ置換プレースホルダーを使用できます。以下に例を示します。

"command": [ "ffmpeg", "-i", "Ref::inputfile", "-c", "Ref::codec", "-o", "Ref::outputfile" ]

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

"parameters" : {"codec" : "mp4"}

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

コンテナプロパティ

ジョブを配置するときにコンテナインスタンスの Docker デーモンに渡すコンテナプロパティのリストを、ジョブ定義の登録時に指定する必要があります。ジョブ定義では、以下のコンテナプロパティを使用できます。単一のノードジョブでは、上記のプロパティはジョブ定義レベルに設定されます。複数ノードの並列ジョブでは、コンテナプロパティは各ノードグループごとに ノードプロパティ レベルで設定されます。

command

コンテナに渡すコマンド。このパラメータは、Docker Remote APIコンテナを作成する セクションの Cmd にマッピングし、 COMMAND パラメータを docker run にマッピングします。Docker CMD パラメータの詳細については、https://docs.docker.com/engine/reference/builder/#cmd を参照してください。

"command": ["string", ...]

型: 文字列配列

必須: いいえ

environment

コンテナに渡す環境変数。このパラメータは、Docker Remote APIコンテナを作成する セクションの Env にマッピングし、--env オプションを docker run にマッピングします。

重要

認証情報データなどの機密情報にプレーンテキストの環境変数を使用することはお勧めしません。

型: キーと値のペアの配列

必須: いいえ

name

環境変数の名前。

型: 文字列

必須: はい (environment を使用する場合)

value

環境変数の値。

型: 文字列

必須: はい (environment を使用する場合)

"environment" : [ { "name" : "string", "value" : "string" }, { "name" : "string", "value" : "string" } ]
image

コンテナの開始に使用するイメージ。この文字列は Docker デーモンに直接渡されます。Docker Hub レジストリのイメージはデフォルトで使用できます。repository-url/image:tag で他のリポジトリを指定することもできます。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコア、コロン、ピリオド、スラッシュ、シャープ記号を使用できます。 このパラメータは、Docker Remote APIコンテナを作成する セクションの Imagedocker runIMAGE パラメータにマッピングします。

注記

Docker イメージのアーキテクチャは、スケジュールされているコンピューティングリソースのプロセッサアーキテクチャと一致している必要があります。たとえば、ARM ベースの Docker イメージは、ARM ベースのコンピューティングリソースでのみ実行することができます。

  • Amazon ECR リポジトリ内のイメージには、完全な registry/repository:tag 命名規則が使用されます。例: aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app:latest

  • Docker ハブの公式リポジトリのイメージでは、1 つの名前 (例: ubuntumongo) を使用します。

  • Docker ハブの他のリポジトリのイメージは、組織名で修飾されます (例: amazon/amazon-ecs-agent)。

  • 他のオンラインリポジトリのイメージは、さらにドメイン名で修飾されます (例: quay.io/assemblyline/ubuntu)。

型: 文字列

必須: はい

jobRoleArn

ジョブ定義の登録時に IAM ロールを指定できます。ジョブコンテナは、このロールから付与されるアクセス権限を使用して、関連するポリシーに指定されている API アクションをユーザーに代わって呼び出します。詳細については、Amazon Elastic Container Service Developer Guideの「タスク用の IAM ロール」を参照してください。

型: 文字列

必須: いいえ

memory

コンテナに適用されるメモリのハード制限 (MiB 単位)。コンテナは、ここで指定したメモリを超えようとすると、強制終了されます。このパラメータは、Docker Remote APIコンテナを作成する セクションの Memory にマッピングし、--memory オプションを docker run にマッピングします。ジョブに対して少なくとも 4 MiB のメモリを指定する必要があります。

注記

特定のインスタンスタイプに対してできるだけ多くのメモリを提供してリソースの使用率を最大限に高めるには、「 メモリ管理」を参照してください。

タイプ: 整数

必須: はい

resourceRequirements

コンテナ用に予約される GPU の数を示します。

"resourceRequirements" : [ { "type": "GPU", "value": "number" } ]

型: オブジェクト配列

必須: いいえ

type

GPU はサポートされる唯一の値です。

型: 文字列

必須: はい (resourceRequirements を使用する場合)。

value

各コンテナが必要とする物理的な GPU の数です。

型: 文字列

必須: はい (resourceRequirements を使用する場合)。

mountPoints

コンテナでのデータボリュームのマウントポイント。このパラメータは、Docker Remote APIコンテナを作成する セクションの Volumes にマッピングし、--volume オプションを docker run にマッピングします。

"mountPoints": [ { "sourceVolume": "string", "containerPath": "string", "readOnly": true|false } ]

型: オブジェクト配列

必須: いいえ

sourceVolume

マウントするボリュームの名前。

型: 文字列

必須: はい (mountPoints を使用する場合)

containerPath

ホストボリュームをマウントするコンテナ上のパス。

型: 文字列

必須: はい (mountPoints を使用する場合)

readOnly

この値が true の場合、コンテナはボリュームへの読み取り専用アクセスを許可されます。この値が false の場合、コンテナはボリュームに書き込むことができます。デフォルト値は false です。

タイプ: ブール値

必須: いいえ

privileged

このパラメーターが true のとき、コンテナには、ホストコンテナインスタンスに対する昇格されたアクセス権限 (root ユーザーと同様) が付与されます。このパラメータは、Docker Remote APIコンテナを作成する セクションの Privileged にマッピングし、--privileged オプションを docker run にマッピングします。

"privileged": true|false

型: ブール値

必須: いいえ

readonlyRootFilesystem

このパラメーターが true のとき、コンテナはそのルートファイルシステムへの読み取り専用アクセスを許可されます。このパラメータは、Docker Remote APIコンテナを作成する セクションの ReadonlyRootfs にマッピングし、--read-only オプションを docker run にマッピングします。

"readonlyRootFilesystem": true|false

型: ブール値

必須: いいえ

ulimits

コンテナで設定する ulimits 値のリスト。このパラメータは、Docker Remote APIコンテナを作成する セクションの Ulimits にマッピングし、--ulimit オプションを docker run にマッピングします。

"ulimits": [ { "name": string, "softLimit": integer, "hardLimit": integer } ... ]

型: オブジェクト配列

必須: いいえ

name

ulimittype

型: 文字列

必須: はい (ulimits を使用する場合)

hardLimit

ulimit タイプのハード制限。

タイプ: 整数

必須: はい (ulimits を使用する場合)

softLimit

ulimit タイプのソフト制限。

タイプ: 整数

必須: はい (ulimits を使用する場合)

user

コンテナ内で使用するユーザー名。このパラメータは、Docker Remote APIコンテナを作成する セクションの User にマッピングし、--user オプションを docker run にマッピングします。

"user": "string"

型: 文字列

必須: いいえ

vcpus

コンテナ用に予約された vCPU の数。このパラメータは、Docker Remote APIコンテナを作成する セクションの CpuShares にマッピングし、--cpu-shares オプションを docker run にマッピングします。各 vCPU は 1,024 個の CPU 配分に相当します。少なくとも 1 つの vCPU を指定する必要があります。

タイプ: 整数

必須: はい

volumes

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

[ { "name": "string", "host": { "sourcePath": "string" } } ]
name

ボリュームの名前。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。 この名前は、コンテナ定義 mountPointssourceVolume パラメータで参照されます。

型: 文字列

必須: はい

host

host パラメーターの内容により、データボリュームがホストコンテナインスタンスで保持されるかどうか、保持される場合はその場所が決まります。host パラメータが空の場合は、Docker デーモンによってデータボリュームのホストパスが割り当てられます。ただし、関連付けられたコンテナが実行を停止した後にデータが保持されるとは限りません。

型: オブジェクト

必須: いいえ

sourcePath

コンテナに渡すホストコンテナインスタンス上のパス。このパラメータが空の場合は、Docker デーモンによってホストパスが割り当てられます。

host パラメータに sourcePath の場所が含まれている場合、データボリュームは手動で削除するまでホストコンテナインスタンスの指定された場所に保持されます。sourcePath の場所がホストコンテナインスタンスに存在しない場は、Docker デーモンによって作成されます。その場所が存在する場合は、ソースパスフォルダの内容がエクスポートされます。

型: 文字列

必須: いいえ

ノードプロパティ

nodeProperties

複数ノードの並列ジョブ定義を登録する場合、ジョブで使用するノード数、主要なノードのインデックスおよび使用する別のノード範囲を定義するノードプロパティの一覧を指定する必要があります。ジョブ定義では、以下のノードプロパティを使用できます。詳細については、「マルチノードの並列ジョブ」を参照してください。

型: NodeProperties オブジェクト

必須: いいえ

mainNode

複数ノードの並列ジョブの主要なノードにノードインデックスを指定します。

タイプ: 整数

必須: はい

numNodes

複数ノードの並列ジョブに関連付けられたノードの数。

タイプ: 整数

必須: はい

nodeRangeProperties

複数ノードの並列ジョブに関連付けられたノード範囲とそのプロパティの一覧。

型: NodeRangeProperty オブジェクトの配列

必須: はい

targetNodes

ノードのインデックス値を使用したノードの範囲。0:3 の範囲は、インデックス値が 0 から 3 のノードを示しています。開始範囲値が省略されている場合 (:n)、開始範囲に 0 が使用されます。終了範囲値が省略されている場合 (:n)、終了範囲にできるだけ高いノードインデックスが使用されます。累積ノード範囲は、すべてのノード (0:n) を考慮する必要があります。ノード範囲をネストする場合 (たとえば、0:10 と 4:5)、4:5 範囲のプロパティが 0:10 プロパティを上書きします。

型: 文字列

必須: いいえ

container

ノード範囲のコンテナの詳細。詳細については、「コンテナプロパティ」を参照してください。

型: ContainerProperties オブジェクト

必須: いいえ

再試行戦略

retryStrategy

ジョブ定義の登録時に、オプションとして、このジョブ定義で送信したジョブが失敗したときの再試行戦略を指定できます。デフォルトでは、各ジョブは 1 回試行されます。複数の試行を指定すると、ジョブが失敗した場合 (ゼロ以外の終了コードが返された場合やコンテナインスタンスが終了した場合) に再試行されます。詳細については、「ジョブの再試行の自動化」を参照してください。

型: RetryStrategy オブジェクト

必須: いいえ

attempts

ジョブを RUNNABLE ステータスに移行する回数。1〜10 回の試行を指定できます。attempts の回数が 1 より大きい場合、ジョブは RUNNABLE に移行するまでにその回数内で再試行されます。

"attempts": integer

タイプ: 整数

必須: いいえ

タイムアウト

timeout

この期間を超えてジョブが実行されると AWS Batch でジョブが終了するように、ジョブのタイムアウト期間を設定できます。詳細については、「ジョブのタイムアウト」を参照してください。タイムアウトが原因でジョブが終了した場合は、再試行されません。SubmitJob オペレーション時にタイムアウト設定を指定した場合は、ここで定義されているタイムアウト設定が上書きされます。詳細については、「ジョブのタイムアウト」を参照してください。

型: JobTimeout オブジェクト

必須: いいえ

attemptDurationSeconds

AWS Batch によって未終了のジョブが終了されるまでの時間 (秒) (ジョブ試行の startedAt タイムスタンプから計測)。タイムアウトの最小値は 60 秒です。

タイプ: 整数

必須: いいえ