AWS Batch
ユーザーガイド

ジョブ定義のパラメータ

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

ジョブ定義名

jobDefinitionName

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

型: 文字列

必須: はい

タイプ

type

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

型: 文字列

有効な値: container

必須: はい

Parameters

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 に置き換えられます。

再試行戦略

retryStrategy

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

型: RetryStrategy オブジェクト

必須: いいえ

attempts

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

"attempts": integer

タイプ: 整数

必須: いいえ

Timeout

timeout

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

型: JobTimeout オブジェクト

必須: いいえ

attemptDurationSeconds

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

タイプ: 整数

必須: いいえ

コンテナプロパティ

ジョブを配置するときにコンテナインスタンスの Docker デーモンに渡すコンテナプロパティのリストを、ジョブ定義の登録時に指定する必要があります。ジョブ定義では、以下のコンテナプロパティを使用できます。

command

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

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

型: 文字列配列

必須: いいえ

environment

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

重要

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

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

必須: いいえ

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コンテナを作成する セクションの Image と、IMAGEdocker run パラメーターにマッピングされます。

  • 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 アクションをユーザーに代わって呼び出します。詳細については、「タスク用の IAM ロール」 (Amazon Elastic Container Service Developer Guide) を参照してください。

型: 文字列

必須: いいえ

memory

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

注記

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

タイプ: 整数

必須: はい

mountPoints

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

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

型: オブジェクト配列

必須: いいえ

sourceVolume

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

型: 文字列

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

containerPath

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

型: 文字列

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

readOnly

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

タイプ: ブール値

必須: いいえ

privileged

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

"privileged": true|false

タイプ: ブール値

必須: いいえ

readonlyRootFilesystem

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

"readonlyRootFilesystem": true|false

タイプ: ブール値

必須: いいえ

ulimits

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

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

型: オブジェクト配列

必須: いいえ

name

ulimittype

型: 文字列

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

hardLimit

ulimit タイプのハード制限。

タイプ: 整数

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

softLimit

ulimit タイプのソフト制限。

タイプ: 整数

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

user

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

"user": "string"

型: 文字列

必須: いいえ

vcpus

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

タイプ: 整数

必須: はい

volumes

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

name

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

型: 文字列

必須: はい

host

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

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

型: オブジェクト

必須: いいえ

sourcePath

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

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

型: 文字列

必須: いいえ