

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan template pekerjaan
<a name="job-templates"></a>

Template pekerjaan menyimpan nilai yang dapat dibagikan di seluruh pemanggilan `StartJobRun` API saat memulai menjalankan pekerjaan. Ini mendukung dua kasus penggunaan:
+ Untuk mencegah nilai permintaan `StartJobRun` API berulang berulang.
+ Untuk menegakkan aturan bahwa nilai tertentu harus disediakan melalui permintaan `StartJobRun` API.

Job templates memungkinkan Anda untuk menentukan template yang dapat digunakan kembali untuk menjalankan pekerjaan untuk menerapkan kustomisasi tambahan, misalnya:
+ Mengkonfigurasi kapasitas komputasi eksekutor dan driver
+ Menetapkan properti keamanan dan tata kelola seperti peran IAM
+ Menyesuaikan image docker untuk digunakan di beberapa aplikasi dan pipeline data

Topik berikut memberikan informasi terperinci tentang penggunaan templat, termasuk cara menggunakannya untuk memulai pekerjaan dan cara mengubah parameter templat.

**Topics**
+ [Membuat dan menggunakan template pekerjaan untuk memulai pekerjaan](create-job-template.md)
+ [Mendefinisikan parameter template pekerjaan](use-job-template-parameters.md)
+ [Mengontrol akses ke templat pekerjaan](iam-job-template.md)

# Membuat dan menggunakan template pekerjaan untuk memulai pekerjaan
<a name="create-job-template"></a>

Bagian ini menjelaskan pembuatan template pekerjaan dan menggunakan template untuk memulai pekerjaan dengan AWS Command Line Interface (AWS CLI).

**Untuk membuat template pekerjaan**

1. Buat `create-job-template-request.json` file dan tentukan parameter yang diperlukan untuk template pekerjaan Anda, seperti yang ditunjukkan dalam contoh file JSON berikut. Untuk informasi tentang semua parameter yang tersedia, lihat [CreateJobTemplate](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/Welcome.html)API.

   Sebagian besar nilai yang diperlukan untuk `StartJobRun` API juga diperlukan untuk`jobTemplateData`. Jika Anda ingin menggunakan placeholder untuk parameter apa pun dan memberikan nilai saat memanggil StartJobRun menggunakan templat pekerjaan, silakan lihat bagian selanjutnya pada parameter templat pekerjaan.

   ```
   {
      "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. Gunakan `create-job-template` perintah dengan path ke `create-job-template-request.json` file yang disimpan secara lokal.

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

**Untuk memulai pekerjaan dengan menggunakan template pekerjaan**

Berikan id cluster virtual, id template pekerjaan, dan nama pekerjaan dalam `StartJobRun` perintah, seperti yang ditunjukkan pada contoh berikut.

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

# Mendefinisikan parameter template pekerjaan
<a name="use-job-template-parameters"></a>

Parameter template Job memungkinkan Anda untuk menentukan variabel dalam template pekerjaan. Nilai untuk variabel parameter ini perlu ditentukan saat memulai pekerjaan yang dijalankan menggunakan template pekerjaan itu. Parameter template Job ditentukan dalam `${parameterName}` format. Anda dapat memilih untuk menentukan nilai apa pun di `jobTemplateData` bidang sebagai parameter template pekerjaan. Untuk setiap variabel parameter template pekerjaan, tentukan tipe datanya (`STRING`atau`NUMBER`) dan secara opsional nilai default. Contoh di bawah ini menunjukkan bagaimana Anda dapat menentukan parameter template pekerjaan untuk lokasi titik masuk, kelas utama, dan nilai lokasi log S3.

**Untuk menentukan lokasi titik masuk, kelas utama, dan lokasi log Amazon S3 sebagai parameter templat pekerjaan**

1. Buat `create-job-template-request.json` file dan tentukan parameter yang diperlukan untuk template pekerjaan Anda, seperti yang ditunjukkan dalam contoh file JSON berikut. Untuk informasi selengkapnya tentang parameter, lihat [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. Gunakan perintah `create-job-template` dengan jalur ke file `create-job-template-request.json` yang disimpan secara lokal atau di Amazon S3.

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

**Untuk memulai pekerjaan dengan menggunakan template pekerjaan dengan parameter template pekerjaan**

Untuk memulai pekerjaan dengan template pekerjaan yang berisi parameter template pekerjaan, tentukan id templat pekerjaan serta nilai untuk parameter template pekerjaan dalam permintaan `StartJobRun` API seperti yang ditunjukkan di bawah ini.

```
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/"}'
```

# Mengontrol akses ke templat pekerjaan
<a name="iam-job-template"></a>

`StartJobRun`policy memungkinkan Anda menegakkan bahwa pengguna atau peran hanya dapat menjalankan pekerjaan menggunakan templat pekerjaan yang Anda tentukan dan tidak dapat menjalankan `StartJobRun` operasi tanpa menggunakan templat pekerjaan yang ditentukan. Untuk mencapai hal ini, pertama-tama pastikan bahwa Anda memberi pengguna atau peran izin baca ke templat pekerjaan yang ditentukan seperti yang ditunjukkan di bawah ini.

------
#### [ 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"
    }
  ]
}
```

------

Untuk menegakkan bahwa pengguna atau peran hanya dapat menjalankan `StartJobRun` operasi saat menggunakan templat pekerjaan tertentu, Anda dapat menetapkan izin `StartJobRun` kebijakan berikut ke pengguna atau peran tertentu.

------
#### [ 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"
    }
  ]
}
```

------

Jika template pekerjaan menentukan parameter template pekerjaan di dalam bidang ARN peran eksekusi, maka pengguna akan dapat memberikan nilai untuk parameter ini dan dengan demikian dapat `StartJobRun` memanggil menggunakan peran eksekusi arbitrer. Untuk membatasi peran eksekusi yang dapat diberikan pengguna, lihat **Mengontrol akses ke peran eksekusi**. [Menggunakan peran eksekusi tugas dengan Amazon EMR di EKS](iam-execution-role.md) 

Jika tidak ada kondisi yang ditentukan dalam kebijakan `StartJobRun` tindakan di atas untuk pengguna atau peran tertentu, pengguna atau peran tersebut akan diizinkan untuk memanggil `StartJobRun` tindakan pada klaster virtual yang ditentukan menggunakan templat pekerjaan arbitrer yang telah mereka baca akses atau menggunakan peran eksekusi arbitrer.