ジョブ定義のパラメータ - AWS Batch

ジョブ定義のパラメータ

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

ジョブ定義名

jobDefinitionName

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

型: 文字列

必須: はい

Type

type

ジョブ定義の登録時にジョブのタイプを指定します。ジョブが Fargate リソースで実行されている場合、multinode はサポートされません。マルチノードの並列ジョブの詳細については、「マルチノードの並列ジョブ定義を作成する」を参照してください。

型: 文字列

有効な値: container | multinode

必須: はい

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

プラットフォーム機能

platformCapabilities

ジョブ定義に必要なプラットフォーム機能。値が指定されていない場合、デフォルトは EC2 になります。Fargate リソースで実行されるジョブの場合、FARGATEが指定されている。

型: 文字列

有効な値: EC2 | FARGATE

必須: いいえ

タグの伝播

propagateTags

タグをジョブまたはジョブ定義から対応する Amazon ECS タスクに伝播するかどうかを指定します。値を指定しない場合、タグは伝播されません。タグは、タスクの作成時にのみタスクに伝播できます。同じ名前のタグの場合、ジョブタグはジョブ定義タグよりも優先されます。ジョブとジョブ定義から合わせたタグの合計数が 50 を超える場合、ジョブは FAILED 状態に移行します。

タイプ: ブール

必須: いいえ

コンテナプロパティ

ジョブを配置するときにコンテナインスタンスの 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 Create a container (コンテナを作成する)セクションにEnvにマップされ、--envオプションはdocker runにマップされます。

重要

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

注記

環境変数は AWS_BATCH で始まることはできません。この命名規則は、AWS Batch サービスで設定される変数のために予約されています。

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

必須: いいえ

name

環境変数の名前。

型: 文字列

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

value

環境変数の値。

型: 文字列

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

"environment" : [ { "name" : "envName1", "value" : "envValue1" }, { "name" : "envName2", "value" : "envValue2" } ]
executionRoleArn

ジョブ定義の登録時に IAM ロールを指定できます。Amazon ECS コンテナエージェントは、このロールから付与されるアクセス権限を使用して、関連するポリシーに指定されている API アクションをユーザーに代わって呼び出します。Fargate リソースで実行されるジョブの場合、実行ロールを指定する必要があります。詳細については、「AWS Batch タスク実行 IAM ロール」を参照してください。

型: 文字列

必須: いいえ

fargatePlatformConfiguration

Fargate リソースで実行されているジョブのプラットフォーム設定。EC2 リソースで実行されているジョブでは、このパラメータを指定しないでください。

タイプ:FargatePlatformConfiguration オブジェクト

必須: いいえ

platformVersion

ジョブに使用される AWS Fargate プラットフォームバージョン、または最近承認されたAWS Fargate プラットフォーム のバージョンを使用するための LATEST

型: 文字列

デフォルト: LATEST

必須: いいえ

image

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

注記

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)。

型: 文字列

必須: はい

instanceType

マルチノード並列ジョブに使用するインスタンスタイプ。マルチノードの並列ジョブのすべてのノードグループは、同じインスタンスタイプを使用する必要があります。このパラメータは、単一ノードのコンテナジョブ、または Fargate リソースで実行されるジョブでは無効です。

型: 文字列

必須: いいえ

jobRoleArn

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

型: 文字列

必須: いいえ

linuxParameters

コンテナに適用される Linux 固有の変更 (デバイスマッピングの詳細など)。

"linuxParameters": { "devices": [ { "hostPath": "string", "containerPath": "string", "permissions": [ "READ", "WRITE", "MKNOD" ] } ], "initProcessEnabled": true|false, "sharedMemorySize": 0, "tmpfs": [ { "containerPath": "string", "size": integer, "mountOptions": [ "string" ] } ], "maxSwap": integer, "swappiness": integer }

型: LinuxParameters オブジェクト

必須: いいえ

devices

コンテナにマッピングされたデバイスのリスト。このパラメータは、Docker Remote APICreate a container セクションの Devices にマップされ、--device オプションは docker run にマップされます。

注記

このパラメータは、Fargate リソースで実行されているジョブには適用されないため、提供できません。

型: デバイスオブジェクト配列

必須: いいえ

hostPath

ホストコンテナインスタンスで使用可能なデバイスがあるパス。

型: 文字列

必須: はい

containerPath

コンテナでデバイスが公開されるパス。指定しない場合、デバイスはホストパスと同じパスで公開されます。

型: 文字列

必須: いいえ

permissions

コンテナでのデバイスのアクセス許可。指定しない場合、アクセス許可は READWRITEMKNOD に設定されます。

タイプ: 文字列の配列

必須: いいえ

有効な値: READ | WRITE | MKNOD

initProcessEnabled

true の場合、信号を転送し、プロセスを利用するコンテナ内で init プロセスを実行します。このパラメータは、docker run--init オプションにマッピングされます。このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.25 以上を使用する必要があります。コンテナインスタンスの Docker Remote API のバージョンを確認するには、コンテナインスタンスにログインし、sudo docker version | grep "Server API version" コマンドを実行します。

タイプ: ブール

必須: いいえ

maxSwap

ジョブで使用可能なスワップメモリの合計容量 (単位: MiB) を指定します。このパラメータは、docker run--memory-swap オプションに変換されます。値はコンテナメモリの合計に maxSwap 値を加えた値です。詳細については、Docker ドキュメントの「--memory-swap 詳細」を参照してください。

maxSwap0 値を指定した場合、コンテナはスワップを使用しません。許容値は、0 または任意の正の整数です。maxSwap パラメータを省略すると、コンテナは実行中のコンテナインスタンスのスワップ設定を使用します。maxSwap パラメータを使用するには、swappiness 値を設定する必要があります。

注記

このパラメータは、Fargate リソースで実行されているジョブには適用されないため、提供できません。

タイプ: 整数

必須: いいえ

sharedMemorySize

/dev/shm ボリュームのサイズ値 (MiB) です。このパラメータは、docker run--shm-size オプションにマッピングされます。

注記

このパラメータは、Fargate リソースで実行されているジョブには適用されないため、指定できません。

タイプ: 整数

必須: いいえ

swappiness

これにより、コンテナのメモリスワップ動作を調整できます。swappiness 値が 0 の場合、絶対に必要な場合を除きスワップは行われません。swappiness 値が 100 の場合、ページは非常に積極的にスワップされます。使用できる値は、0100 の間の整数です。swappiness パラメータを指定しない場合、デフォルト値の 60 が使用されます。maxSwap の値が指定されていない場合、このパラメータは無視されます。maxSwap が 0 に設定されている場合、コンテナはスワップを使用しません。このパラメータは、docker run--memory-swappiness オプションにマッピングされます。

コンテナごとのスワップ設定を使用する場合は、次の点を考慮してください。

  • スワップ領域を有効にし、コンテナが使用するコンテナインスタンスで割り当てる必要があります。

    注記

    Amazon ECS 最適化 AMI では、スワップはデフォルトで有効になっていません。この機能を使用するには、インスタンスでスワップを有効にする必要があります。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「インスタンスストアのスワップボリューム」または「スワップファイルを使用して Amazon EC2 インスタンスのスワップ領域として動作するようにメモリを割り当てるには?」を参照してください。

  • スワップ領域のパラメータは、EC2 リソースを使用するジョブ定義でのみサポートされます。

  • maxSwap および swappiness パラメータがジョブ定義から省略されると、各コンテナのデフォルトの swappiness 値が 60 になり、合計スワップ使用量はコンテナのメモリ予約の 2 倍に制限されます。

注記

このパラメータは、Fargate リソースで実行されているジョブには適用されないため、提供できません。

タイプ: 整数

必須: いいえ

tmpfs

tmpfs マウントのコンテナパス、マウントオプション、およびサイズ。

型: Tmpfs オブジェクト配列

注記

このパラメータは、Fargate リソースで実行されているジョブには適用されないため、提供できません。

必須: いいえ

containerPath

tmpfs ボリュームをマウントするコンテナ内のファイルの絶対パス。

型: 文字列

必須: はい

mountOptions

tmpfs ボリュームのマウントオプションのリストです。

有効な値:「defaults」|「ro」|「rw」|「suid」|「nosuid」|「dev」|「nodev」|「exec」|「noexec」|「sync」|「async」|「dirsync」|「remount」|「mand」|「nomand」|「atime」|「noatime」|「diratime」|「nodiratime」|「bind」|「rbind」|「unbindable」|「runbindable」|「private」|「rprivate」|「shared」|「rshared」|「slave」|「rslave」|「relatime」|「norelatime」|「strictatime」|「nostrictatime」|「mode」|「uid」|「gid」|「nr_inodes」|「nr_blocks」|「mpol

タイプ: 文字列の配列

必須: いいえ

size

tmpfs ボリュームのサイズ (MiB) です。

タイプ: 整数

必須: はい

logConfiguration

ジョブのログ設定の仕様。

このパラメータは、Docker Remote APICreate a container セクションの LogConfig にマップされ、--log-driver オプションは docker run にマップされます。デフォルトでは、コンテナは Docker デーモンで使用されるのと同じロギングドライバーを使用します。ただし、コンテナで Docker デーモンとは異なるログドライバーを使用するには、コンテナの定義内でこのパラメータを使用してログドライバーを指定します。コンテナに異なるロギングドライバーを使用するには、コンテナインスタンス またはリモートログ記録オプションの別のログサーバーでログシステムを適切に設定する必要があります。サポートされているさまざまなログドライバーのオプションの詳細については、Docker ドキュメントの「ログドライバーの設定」を参照してください。

注記

AWS Batch では現在、Docker デーモンの使用可能なログドライバーがいくつかサポートされています (「LogConfiguration」データ型を参照)。

このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.18 以上を使用する必要があります。コンテナインスタンスの Docker Remote API のバージョンを確認するには、コンテナインスタンスにログインし、sudo docker version | grep "Server API version" コマンドを実行します。

"logConfiguration": { "devices": [ { "logDriver": "string", "options": { "optionName1" : "optionValue1", "optionName2" : "optionValue2" } "secretOptions": [ { "name" : "secretOptionName1", "valueFrom" : "secretOptionArn1" }, { "name" : "secretOptionName2", "valueFrom" : "secretOptionArn2" } ] } ] }

タイプ: LogConfiguration オブジェクト

必須: いいえ

logDriver

ジョブに使用するログドライバー。デフォルトでは、AWS Batch が awslogsログドライバーを有効にします。このパラメータの有効な値は、Amazon ECS コンテナエージェントがデフォルトで通信できるログドライバーです。

このパラメータは、Docker Remote APICreate a container セクションの LogConfig にマップされ、--log-driver オプションは docker run にマップされます。デフォルトでは、ジョブは Docker デーモンで使用されるのと同じロギングドライバーを使用します。ただし、ジョブで Docker デーモンとは異なるログドライバーを使用するには、コンテナの定義内でこのパラメータを使用してログドライバーを指定します。ジョブに別のログドライバを指定する場合は、コンピューティング環境のコンテナインスタンスでログシステムを設定する必要があります。または、別のログサーバーでリモートログオプションを提供するように設定する必要があります。サポートされているさまざまなログドライバーのオプションの詳細については、Docker ドキュメントの「ログドライバーの設定」を参照してください。

注記

AWS Batch では現在、Docker デーモンに使用可能なログドライバーがいくつかサポートされています。Amazon ECS コンテナエージェントの今後のリリースで他のログドライバーが追加される可能性があります。

サポートされているログドライバーは awslogsfluentdgelfjson-filejournaldlogentriessyslogsplunk です。

注記

Fargate リソースで実行されているジョブでは、awslogs および splunk ログドライバーに制限されます。

このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.18 以上を使用する必要があります。コンテナインスタンスの Docker Remote API のバージョンを確認するには、コンテナインスタンスにログインし、sudo docker version | grep "Server API version" コマンドを実行します。

注記

コンテナインスタンスで実行される Amazon ECS コンテナエージェントは、そのインスタンスで利用可能なロギングドライバを ECS_AVAILABLE_LOGGING_DRIVERS 環境変数に登録する必要があります。そうしないと、そのインスタンスに配置されたコンテナはこれらのログ設定オプションを使用できません。詳細については、Amazon Elastic Container Service デベロッパーガイドの「Amazon ECS コンテナエージェントの設定」を参照してください。

awslogs

Amazon CloudWatch Logs ログ記録ドライバーを指定します。詳細については、awslogs ログドライバーを使用する、およびDocker ドキュメントの Amazon CloudWatch Logs ロギングドライバーを参照してください。

fluentd

Fluentd ログ記録ドライバーを指定します。使用方法やオプションなどの詳細については、Docker ドキュメントの「Fluentd logging driver」を参照してください。

gelf

Graylog 拡張形式 (GELF) ログ記録ドライバーを指定します。使用方法やオプションなどの詳細については、Docker ドキュメントの「Graylog Extended Format logging driver」を参照してください。

journald

Journald ログ記録ドライバーを指定します。使用方法やオプションなどの詳細については、Docker ドキュメントの「JJournald logging driver」を参照してください。

json-file

JSON ファイルログ記録ドライバーを指定します。使用方法やオプションなどの詳細については、Docker ドキュメントの「JSON File logging driver」を参照してください。

splunk

Splunk ログ記録ドライバーを指定します。使用方法やオプションなどの詳細については、Docker ドキュメントの「Splunk logging driver」を参照してください。

syslog

syslog ログ記録ドライバーを指定します。使用方法やオプションなどの詳細については、Docker ドキュメントの「Syslog logging driver」を参照してください。

型: 文字列

必須: はい

有効な値: awslogs | fluentd | gelf | journald | json-file | splunk | syslog

注記

前述以外のカスタムドライバーを Amazon ECS コンテナエージェントで使用する場合は、GitHub で入手できる Amazon ECS コンテナエージェントプロジェクトをフォークし、そのドライバーを使用できるようにカスタマイズできます。含めることを希望する変更について、プルリクエストを送信することをお勧めします。ただし、現在、Amazon Web Services では、このソフトウェアの変更されたコピーの実行をサポートしていません。

options

ジョブのログドライバーに送信するログ設定オプション。

このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.19 以上を使用する必要があります。

タイプ: 文字列間のマッピング

必須: いいえ

secretOptions

ログ設定に渡すシークレットを表すオブジェクト。詳細については、「機密データの指定」を参照してください。

タイプ: オブジェクト配列

必須: いいえ

name

ジョブで設定するログドライバーオプションの名前。

型: 文字列

必須: はい

valueFrom

コンテナのログ設定に公開するシークレットの ARN。サポートされている値は、Secrets Manager シークレットの完全な ARN または SSN パラメータストア内のパラメータの完全な ARN のいずれかです。

注記

起動するタスクと同じリージョンに SSM パラメータストアのパラメータが存在する場合は、パラメータの完全な ARN または名前のどちらも使用できます。パラメータが別のリージョンに存在する場合は、完全な ARN を指定する必要があります。

型: 文字列

必須: はい

memory

このパラメータは廃止されました。代わりに resourceRequirements を使用してください。

ジョブ用に予約されたメモリの MiB 数。

resourceRequirements の使い方の一例として、ジョブ定義に次のような行が含まれている場合は、次のようになります。

"containerProperties": { "memory": 512 }

resourceRequirements を使用した同等のラインは以下の通りです。

"containerProperties": { "resourceRequirements": [ { "type": "MEMORY", "value": "512" } ] }

タイプ: 整数

必須: はい

mountPoints

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

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

タイプ: オブジェクト配列

必須: いいえ

sourceVolume

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

型: 文字列

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

containerPath

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

型: 文字列

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

readOnly

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

タイプ: ブール

必須: いいえ

デフォルト: False

networkConfiguration

Fargate リソースで実行されているジョブのネットワーク設定。EC2 リソースで実行されているジョブでは、このパラメータを指定しないでください。

"networkConfiguration": { "assignPublicIp": "string" }

タイプ: オブジェクト配列

必須: いいえ

assignPublicIp

ジョブにパブリック IP アドレスがある必要があるかどうかを示します。これは、ジョブがアウトバウンドネットワークアクセスが必要な場合に必要です。

型: 文字列

有効な値: ENABLED | DISABLED

必須: いいえ

デフォルト: DISABLED

privileged

このパラメータが true のとき、コンテナには、ホストコンテナインスタンスに対する昇格されたアクセス許可 (root ユーザーと同様) が付与されます。このパラメータは、Docker Remote API Create a container (コンテナを作成する)セクションにPrivilegedにマップされ、--privilegedオプションはdocker runにマップされます。このパラメータは、Fargate リソースで実行されているジョブには適用できません。また、false として指定することもできません。

"privileged": true|false

タイプ: ブール

必須: いいえ

readonlyRootFilesystem

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

"readonlyRootFilesystem": true|false

タイプ: ブール

必須: いいえ

resourceRequirements

コンテナに割り当てるリソースのタイプと量。サポートされているリソースには GPUMEMORY および VCPU などがあります。

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

タイプ: オブジェクト配列

必須: いいえ

type

コンテナに割り当てるリソースのタイプ。サポートされているリソースには GPUMEMORY および VCPU などがあります。

型: 文字列

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

value

コンテナ用に予約する指定されたリソースの量。値は、指定された type によって異なります。

タイプ =「GPU」

コンテナ用に予約する物理 GPU の数。ジョブ内のすべてのコンテナ用に予約されている GPU の数は、ジョブが起動されたコンピューティングリソースで使用できる GPU の数以下である必要があります。

タイプ =「MEMORY」

コンテナに適用されるメモリのハード制限 (MiB 単位)。コンテナは、ここで指定したメモリを超えようとすると、強制終了されます。このパラメータは、Docker Remote APICreate a container セクションの Memory にマップされ、--memory オプションは docker run にマップされます。ジョブに対して少なくとも 4 MiB のメモリを指定する必要があります。これは必須ですが、マルチノードパラレル (MNP) ジョブでは複数の場所で指定できます。各ノードに少なくとも 1 回指定する必要があります。このパラメータは、Docker Remote APICreate a container セクションの Memory にマップされ、--memory オプションは docker run にマップされます。

注記

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

Fargate リソースで実行されているジョブの場合、value はサポートされている値の 1 つと一致する必要があります。さらに、VCPU の値は、そのメモリ値でサポートされている値の 1 つである必要があります。

VCPU MEMORY

0.25 vCPU

512、1024、2048 MiB

0.5 vCPU

1024、2048、3072、4096 MiB

1 vCPU

2048、3072、4096、5120、6144、7168、8192 MiB

2 vCPU

4096、5120、6144、7168、8192、9216、10240、11264、12288、13312、14336、15360、16384 MiB

4 vCPU

8192、9216、10240、11264、12288、13312、14336、15360、16384、17408、18432、19456、20480、21504、22528、23552、24576、25600、26624、27648、28672、29696、30720 MiB

タイプ = 「vCPU」

ジョブ用に予約された vCPU の数。このパラメータは、Docker Remote APICreate a container セクションの CpuShares にマップされ、--cpu-shares オプションは docker run にマップされます。各 vCPU は 1,024 個の CPU 配分に相当します。EC2 リソースを実行しているジョブの場合、少なくとも 1 つの vCPU を指定する必要があります。これは必須ですが、複数の場所で指定できます。各ノードに少なくとも 1 回指定する必要があります。

Fargate リソースで実行されているジョブの場合、value はサポートされている値のいずれかに一致し、MEMORY 値は VCPU 値でサポートされている値のいずれかである必要があります。サポートされている値は 0.25、0.5、1、2、4 です。

型: 文字列

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

secrets

環境変数として公開されるジョブのシークレット。詳細については、「機密データの指定」を参照してください。

"secrets": [ { "name": "secretName1", "valueFrom": "secretArn1" }, { "name": "secretName2", "valueFrom": "secretArn2" } ... ]

タイプ: オブジェクト配列

必須: いいえ

name

シークレットを含む環境変数の名前。

型: 文字列

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

valueFrom

コンテナに公開するシークレット。サポートされている値は、Secrets Manager シークレットの完全な ARN または SSN パラメータストア内のパラメータの完全な ARN のいずれかです。

注記

起動するジョブと同じリージョンに SSM Parameter Store の パラメータが存在する場合は、パラメータの完全な ARN または名前のどちらも使用できます。パラメータが別のリージョンに存在する場合は、完全な ARN を指定する必要があります。

型: 文字列

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

ulimits

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

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

タイプ: オブジェクト配列

必須: いいえ

name

typeulimit

型: 文字列

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

hardLimit

ulimit タイプのハード制限。

タイプ: 整数

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

softLimit

ulimit タイプのソフト制限。

タイプ: 整数

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

user

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

"user": "string"

型: 文字列

必須: いいえ

vcpus

このパラメータは廃止されました。代わりに resourceRequirements を使用してください。

コンテナ用に予約された vCPU の数。

resourceRequirements の使い方の一例として、ジョブ定義に次のような行が含まれている場合は、次のようになります。

"containerProperties": { "vcpus": 2 }

resourceRequirements を使用した同等のラインは以下の通りです。

"containerProperties": { "resourceRequirements": [ { "type": "VCPU", "value": "2" } ] }

タイプ: 整数

必須: はい

volumes

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

[ { "name": "string", "host": { "sourcePath": "string" } }, "efsVolumeConfiguration": { "authorizationConfig": { "accessPointId": "string", "iam": "string" }, "fileSystemId": "string", "rootDirectory": "string", "transitEncryption": "string", "transitEncryptionPort": number } } ]
name

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

型: 文字列

必須: いいえ

host

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

注記

このパラメータは、Fargate リソースで実行されているジョブには適用されないため、提供できません。

タイプ: オブジェクト

必須: いいえ

sourcePath

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

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

型: 文字列

必須: いいえ

efsVolumeConfiguration

このパラメータは、タスクストレージに Amazon Elastic File System を使用している場合に指定します。詳細については、 AWS Batch ユーザーガイドAmazon EFS Volumes を参照してください。

タイプ: オブジェクト

必須: いいえ

authorizationConfig

Amazon EFS ファイルシステムの認証設定の詳細。

型: 文字列

必須: いいえ

accessPointId

使用する Amazon EFS アクセスポイントの ID。アクセスポイントを指定した場合、EFSVolumeConfiguration で指定されているルートディレクトリの値を省略するか、/ に設定する必要があります。これにより、EFS アクセスポイントに設定されたパスが強制されます。アクセスポイントを使用する場合は、EFSVolumeConfiguration で転送中の暗号化を有効にする必要があります。詳細については、Amazon Elastic File System ユーザーガイドの「Amazon EFS アクセスポイントの使用」を参照してください。

型: 文字列

必須: いいえ

iam

Amazon EFS ファイルシステムのマウント時にジョブ定義で定義した AWS Batch ジョブの IAM ロールを使用するかどうかを指定します。使用する場合は、EFSVolumeConfiguration で転送中の暗号化を有効にする必要があります。このパラメータを省略すると、DISABLED のデフォルト値が使用されます。詳細については、AWS Batch ユーザーガイドの 「Amazon EFS アクセスポイントの使用」を参照してください。

型: 文字列

有効な値: ENABLED | DISABLED

必須: いいえ

fileSystemId

使用する Amazon EFS ファイルシステムの ID。

型: 文字列

必須: いいえ

rootDirectory

ホスト内にルートディレクトリとしてマウントする Amazon EFS ファイルシステム内のディレクトリ。このパラメータを省略すると、Amazon EFS ボリュームのルートが使用されます。/ を指定すると、このパラメータを省略した場合と同じ結果になります。最大長は 4,096 文字です。

重要

authorizationConfig に EFS アクセスポイントを指定する場合は、ルートディレクトリパラメータを省略するか、または / に設定する必要があります。これにより、Amazon EFS アクセスポイントに設定されているパスが強制されます。

型: 文字列

必須: いいえ

transitEncryption

Amazon ECS ホストと Amazon EFS サーバー間で Amazon EFS データの転送中の暗号化を有効にするかどうかを指定します。Amazon EFS IAM 認証を使用する場合は、転送中の暗号化を有効にする必要があります。このパラメータを省略すると、DISABLED のデフォルト値が使用されます。詳細については、Amazon Elastic File System ユーザーガイドEncrypting data in transit を参照してください。

型: 文字列

有効な値: ENABLED | DISABLED

必須: いいえ

transitEncryptionPort

Amazon ECS ホストと Amazon EFS サーバーの間で暗号化されたデータを送信するときに使用するポート。転送中の暗号化ポートを指定しないと、Amazon EFS マウントヘルパーが使用するポート選択方式が使用されます。この値は 0~65,535 の範囲の値にする必要があります。詳細については、Amazon Elastic File System ユーザーガイドの「EFS マウントヘルパー」を参照してください。

タイプ: 整数

必須: いいえ

ノードプロパティ

nodeProperties

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

型: NodeProperties オブジェクト

必須: いいえ

mainNode

複数ノードの並列ジョブの主要なノードにノードインデックスを指定します。このノードインデックス値は、ノード数未満である必要があります。

タイプ: 整数

必須: はい

numNodes

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

タイプ: 整数

必須: はい

nodeRangeProperties

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

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

必須: はい

targetNodes

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

型: 文字列

必須: いいえ

container

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

型: ContainerProperties オブジェクト

必須: いいえ

再試行戦略

retryStrategy

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

型: RetryStrategy オブジェクト

必須: いいえ

attempts

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

"attempts": integer

タイプ: 整数

必須: いいえ

evaluateOnExit

ジョブの再試行または失敗の条件を指定する、最大 5 つのオブジェクトの配列。このパラメータを指定する場合は、attempts パラメータも指定する必要があります。

"evaluateOnExit": [ { "action": "string", "onExitCode": "string", "onReason": "string", "onStatusReason": "string" } ]

タイプ:EvaluateOnExitオブジェクトの配列

必須: いいえ

action

指定された条件 (onStatusReasononReason および onExitCode)がすべて満たされた場合に実行するアクションを指定します。値は大文字と小文字が区別されません。

型: 文字列

必須: はい

有効な値: RETRY | EXIT

onExitCode

ジョブに対して返された ExitCode の10進表現と照合する glob パターンが含まれています。パターンの最大長は 512 文字です。数字のみを含めることができます。文字や特殊文字を含めることはできません。必要に応じて末尾をアスタリスク (*) にでき、文字列の先頭だけが完全に一致する必要があります。

型: 文字列

必須: いいえ

onReason

ジョブに対して返された Reason と照合する glob パターンが含まれます。パターンの最大長は 512 文字です。文字、数字、ピリオド (.)、コロン (:)、および空白 (スペースまたはタブを含む) を含めることができます。必要に応じて末尾をアスタリスク (*) にでき、文字列の先頭だけが完全に一致する必要があります。

型: 文字列

必須: いいえ

onStatusReason

ジョブに対して返された StatusReason と照合する glob パターンが含まれます。パターンの最大長は 512 文字です。文字、数字、ピリオド (.)、コロン (:)、および空白 (スペースまたはタブを含む) を含めることができます。必要に応じて末尾をアスタリスク (*) にでき、文字列の先頭だけが完全に一致する必要があります。

型: 文字列

必須: いいえ

Tags

tags

ジョブ定義に関連付けるキーバリューペアのタグ。詳細については、「AWS Batch リソースのタグ付け」を参照してください。

タイプ: 文字列間のマッピング

必須: いいえ

Timeout

timeout

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

型: JobTimeout オブジェクト

必須: いいえ

attemptDurationSeconds

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

タイプ: 整数

必須: いいえ