ジョブ定義の例 - AWS Batch

ジョブ定義の例

次のジョブ定義の例では、環境変数、パラメータ置換やボリュームのマウントなどの一般的なパターンを使用する方法を示しています。

環境変数を使用します。

次のジョブ定義の例では、環境変数を使用してファイルタイプと Amazon S3 URL を指定します。この用例は、「簡単な "Fetch & Run" AWS Batch ジョブを作成する」コンピュータブログポストから引用しています。このブログポストで説明される fetch_and_run.sh スクリプトでは、S3から myjob.sh スクリプトをダウンロードし、そのファイルタイプを指定するための環境変数を使用します。

この例では、コマンドと環境変数はジョブ定義でハードコード化されていますが、さらに柔軟性のあるジョブ定義を作成するためにコマンドと環境変数を指定することもできます。

{ "jobDefinitionName": "fetch_and_run", "type": "container", "containerProperties": { "image": "123456789012.dkr.ecr.us-east-1.amazonaws.com/fetch_and_run", "resourceRequirements": [ { "type": "MEMORY", "value": "2000" }, { "type": "VCPU", "value": "2" } ], "command": [ "myjob.sh", "60" ], "jobRoleArn": "arn:aws:iam::123456789012:role/AWSBatchS3ReadOnly", "environment": [ { "name": "BATCH_FILE_S3_URL", "value": "s3://my-batch-scripts/myjob.sh" }, { "name": "BATCH_FILE_TYPE", "value": "script" } ], "user": "nobody" } }

パラメータ置換の使用

次の例では、パラメータ置換とデフォルト値を設定するためのジョブ定義を説明しています。

Ref:: セクションの command 宣言は、パラメータ置換のためにプレースホルダ―を設定するときに使用します。このジョブ定義でジョブを送信する場合、inputfileoutputfileのような値に上書きしてパラメータを指定します。parameters セクションは codec のためのデフォルト設定ですが、必要に応じてパラメータを上書きできます。

詳細については、「Parameters」を参照してください。

{ "jobDefinitionName": "ffmpeg_parameters", "type": "container", "parameters": {"codec": "mp4"}, "containerProperties": { "image": "my_repo/ffmpeg", "resourceRequirements": [ { "type": "MEMORY", "value": "2000" }, { "type": "VCPU", "value": "2" } ], "command": [ "ffmpeg", "-i", "Ref::inputfile", "-c", "Ref::codec", "-o", "Ref::outputfile" ], "jobRoleArn": "arn:aws:iam::123456789012:role/ECSTask-S3FullAccess", "user": "nobody" } }

GPU 機能のテスト

次のジョブ定義の例では、GPU ワークロードの AMI の使用 で説明されている GPU ワークロード AMI が適切に設定されているかどうかをテストします。このジョブ定義の例では、GitHub から TensorFlow ディープ MNIST 分類子のを実行します。

{ "containerProperties": { "image": "tensorflow/tensorflow:1.8.0-devel-gpu", "resourceRequirements": [ { "type": "MEMORY", "value": "32000" }, { "type": "VCPU", "value": "8" } ], "command": [ "sh", "-c", "cd /tensorflow/tensorflow/examples/tutorials/mnist; python mnist_deep.py" ] }, "type": "container", "jobDefinitionName": "tensorflow_mnist_deep" }

上の JSON テキストで tensorflow_mnist_deep.json という名前のファイルを作成し、次のコマンドを使用して AWS Batch ジョブ定義を登録できます。

aws batch register-job-definition --cli-input-json file://tensorflow_mnist_deep.json

マルチノードの並列ジョブ

以下のジョブ定義の例では、マルチノードの並列ジョブを示しています。詳細については、AWS Compute ブログのBuilding a tightly coupled molecular dynamics workflow with multi-node parallel jobs in AWS Batch を参照してください。

{ "jobDefinitionName": "gromacs-jobdef", "jobDefinitionArn": "arn:aws:batch:us-east-2:123456789012:job-definition/gromacs-jobdef:1", "revision": 6, "status": "ACTIVE", "type": "multinode", "parameters": {}, "nodeProperties": { "numNodes": 2, "mainNode": 0, "nodeRangeProperties": [ { "targetNodes": "0:1", "container": { "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/gromacs_mpi:latest", "resourceRequirements": [ { "type": "MEMORY", "value": "24000" }, { "type": "VCPU", "value": "8" } ], "command": [], "jobRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole", "ulimits": [], "instanceType": "p3.2xlarge" } } ] } }