

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ジョブテンプレートの使用
<a name="job-templates"></a>

ジョブテンプレートには、ジョブ実行の開始時に `StartJobRun` API 呼び出し間で共有できる値が格納されます。以下の 2 つのユースケースをサポートしています。
+ `StartJobRun` API リクエスト値が繰り返し発生するのを防ぐため。
+ `StartJobRun` API リクエストを通じて特定の値を指定する必要があるというルールを適用するため。

ジョブテンプレートを使用すると、ジョブ実行用の再利用可能なテンプレートを定義して、以下のような追加のカスタマイズを適用できます。
+ エグゼキューターとドライバーのコンピューティング性能の設定
+ IAM ロールなどのセキュリティとガバナンスのプロパティの設定
+ 複数のアプリケーションやデータパイプラインで使用するための Docker イメージのカスタマイズ

以下のトピックでは、テンプレートを使用してジョブ実行を開始する方法やテンプレートパラメータを変更する方法など、テンプレートの使用に関する詳細な情報を提供します。

**Topics**
+ [ジョブ実行を開始するためのジョブテンプレートの作成と使用](create-job-template.md)
+ [ジョブテンプレートパラメータの定義](use-job-template-parameters.md)
+ [ジョブテンプレートへのアクセスの制御](iam-job-template.md)

# ジョブ実行を開始するためのジョブテンプレートの作成と使用
<a name="create-job-template"></a>

このセクションでは、ジョブテンプレートを作成し、テンプレートを使用して AWS Command Line Interface () でジョブ実行を開始する方法について説明しますAWS CLI。

**ジョブテンプレートを作成するには**

1. `create-job-template-request.json` ファイルを作成し、以下の JSON ファイルの例に示すように、ジョブテンプレートに必要なパラメータを指定します。使用可能なすべてのパラメータの詳細については、「[CreateJobTemplate](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/Welcome.html) API」を参照してください。

   `StartJobRun` API に必要なほとんどの値は `jobTemplateData` にも必要です。パラメータにプレースホルダーを使用し、ジョブテンプレートを使用して StartJobRun を呼び出すときに値を指定する場合は、ジョブテンプレートのパラメータに関する次のセクションを参照してください。

   ```
   {
      "name": "mytemplate",
      "jobTemplateData": {
           "executionRoleArn": "iam_role_arn_for_job_execution", 
           "releaseLabel": "emr-6.7.0-latest",
           "jobDriver": {
               "sparkSubmitJobDriver": { 
                   "entryPoint": "entryPoint_location",
                   "entryPointArguments": [ "argument1","argument2",...],
                   "sparkSubmitParameters": "--class <main_class> --conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1"
               }
           },
           "configurationOverrides": {
               "applicationConfiguration": [
                   {
                       "classification": "spark-defaults", 
                       "properties": {
                            "spark.driver.memory":"2G"
                       }
                   }
               ], 
               "monitoringConfiguration": {
                   "persistentAppUI": "ENABLED", 
                   "cloudWatchMonitoringConfiguration": {
                       "logGroupName": "my_log_group", 
                       "logStreamNamePrefix": "log_stream_prefix"
                   }, 
                   "s3MonitoringConfiguration": {
                       "logUri": "s3://my_s3_log_location/"
                   }
               }
           }
        }
   }
   ```

1. ローカルに保存されている `create-job-template-request.json` ファイルへのパスを指定して、`create-job-template` コマンドを使用します。

   ```
   aws emr-containers create-job-template \ 
   --cli-input-json file://./create-job-template-request.json
   ```

**ジョブテンプレートを使用してジョブ実行を開始するには**

以下の例に示すように、`StartJobRun` コマンドで、仮想クラスター ID、ジョブテンプレート ID、ジョブ名を指定します。

```
aws emr-containers start-job-run \
--virtual-cluster-id 123456 \
--name myjob \
--job-template-id 1234abcd
```

# ジョブテンプレートパラメータの定義
<a name="use-job-template-parameters"></a>

ジョブテンプレートパラメータを使用すると、ジョブテンプレート内の変数を指定できます。これらのパラメータ変数の値は、そのジョブテンプレートを使用してジョブ実行を開始するときに指定する必要があります。ジョブテンプレートパラメータは `${parameterName}` フォーマットで指定されます。`jobTemplateData` フィールド内の任意の値をジョブテンプレートパラメータとして指定できます。ジョブテンプレートパラメータ変数ごとに、データタイプ (`STRING` または `NUMBER`) を指定し、オプションでデフォルト値を指定します。以下の例は、エントリポイントロケーション、メインクラス、S3 ログロケーション値のジョブテンプレートパラメータを指定する方法を示しています。

**エントリポイントの場所、メインクラス、Amazon S3 ログの場所をジョブテンプレートパラメータとして指定するには**

1. `create-job-template-request.json` ファイルを作成し、以下の JSON ファイルの例に示すように、ジョブテンプレートに必要なパラメータを指定します。パラメータの詳細については、「[CreateJobTemplate](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/Welcome.html) API」を参照してください。

   ```
   {
      "name": "mytemplate",
      "jobTemplateData": {
           "executionRoleArn": "iam_role_arn_for_job_execution", 
           "releaseLabel": "emr-6.7.0-latest",
           "jobDriver": {
               "sparkSubmitJobDriver": { 
                   "entryPoint": "${EntryPointLocation}",
                   "entryPointArguments": [ "argument1","argument2",...],
                   "sparkSubmitParameters": "--class ${MainClass} --conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1"
               }
           },
           "configurationOverrides": {
               "applicationConfiguration": [
                   {
                       "classification": "spark-defaults", 
                       "properties": {
                            "spark.driver.memory":"2G"
                       }
                   }
               ], 
               "monitoringConfiguration": {
                   "persistentAppUI": "ENABLED", 
                   "cloudWatchMonitoringConfiguration": {
                       "logGroupName": "my_log_group", 
                       "logStreamNamePrefix": "log_stream_prefix"
                   }, 
                   "s3MonitoringConfiguration": {
                       "logUri": "${LogS3BucketUri}"
                   }
               }
           },
           "parameterConfiguration": {
               "EntryPointLocation": {
                   "type": "STRING"
               },
               "MainClass": {
                   "type": "STRING",
                   "defaultValue":"Main"
               },
               "LogS3BucketUri": {
                   "type": "STRING",
                   "defaultValue":"s3://my_s3_log_location/"
               }
           }
       }
   }
   ```

1. ローカルまたは Amazon S3 に保存されている `create-job-template-request.json` ファイルへのパスを指定して、`create-job-template` コマンドを使用します。

   ```
   aws emr-containers create-job-template \ 
   --cli-input-json file://./create-job-template-request.json
   ```

**ジョブテンプレートパラメータを指定したジョブテンプレートを使用してジョブ実行を開始するには**

ジョブテンプレートパラメータを含むジョブテンプレートを使用してジョブ実行を開始するには、以下に示すように `StartJobRun` API リクエストでジョブテンプレート ID とジョブテンプレートパラメータの値を指定します。

```
aws emr-containers start-job-run \
--virtual-cluster-id 123456 \
--name myjob \
--job-template-id 1234abcd \
--job-template-parameters '{"EntryPointLocation": "entry_point_location","MainClass": "ExampleMainClass","LogS3BucketUri": "s3://example_s3_bucket/"}'
```

# ジョブテンプレートへのアクセスの制御
<a name="iam-job-template"></a>

`StartJobRun` ポリシーにより、ユーザーまたはロールは、指定したジョブテンプレートを使用してジョブのみを実行でき、指定されたジョブテンプレートを使用しないと `StartJobRun` 操作を実行できないように強制できます。そのためには、まず、以下に示すように、指定したジョブテンプレートに対する読み取り権限をユーザーまたはロールに付与してください。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "emr-containers:DescribeJobRun"
      ],
      "Resource": [
        "arn:aws:emr-containers:*:*:jobtemplate/job_template_1_id",
        "arn:aws:emr-containers:*:*:jobtemplate/job_template_2_id"
      ],
      "Sid": "AllowEMRCONTAINERSDescribejobtemplate"
    }
  ]
}
```

------

指定したジョブテンプレートを使用する場合にのみユーザーまたはロールが `StartJobRun` 操作を呼び出せるようにするには、特定のユーザーまたはロールに以下の `StartJobRun` ポリシー権限を割り当てます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "emr-containers:StartJobRun"
      ],
      "Resource": [
        "arn:aws:emr-containers:*:*:/virtualclusters/virtual_cluster_id"
      ],
      "Condition": {
        "ArnLike": {
          "emr-containers:JobTemplateArn": [
            "arn:aws:emr-containers:*:*:jobtemplate/job_template_1_id",
            "arn:aws:emr-containers:*:*:jobtemplate/job_template_2_id"
          ]
        }
      },
      "Sid": "AllowEMRCONTAINERSStartjobrun"
    }
  ]
}
```

------

ジョブテンプレートが実行ロール ARN フィールド内にジョブテンプレートパラメータを指定している場合、ユーザーはこのパラメータに値を指定できるため、任意の実行ロールを使用して `StartJobRun` を呼び出すことができます。ユーザーが指定できる実行ロールを制限するには、「[Amazon EMR on EKS でのジョブ実行ロールの使用](iam-execution-role.md)」 の「**実行ロールへのアクセスの制御**」を参照してください。

特定のユーザーまたはロールに対して上記の `StartJobRun` アクションポリシーで条件が指定されていない場合、ユーザーまたはロールは、読み取りアクセス権のある任意のジョブテンプレートを使用するか、任意の実行ロールを使用して、指定された仮想クラスター上で `StartJobRun` アクションを呼び出すことができます。