

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 작업 템플릿 사용
<a name="job-templates"></a>

작업 템플릿은 작업 실행 시작 시 `StartJobRun` API 간접 호출 간에 공유할 수 있는 값을 저장합니다. 다음과 같은 두 가지 사용 사례를 지원합니다.
+ 반복되는 `StartJobRun` API 요청 값을 방지하려는 경우.
+ `StartJobRun` API 요청을 통해 특정 값을 제공해야 한다는 규칙을 적용하려는 경우.

작업 템플릿을 사용하면 작업 실행에서 재사용 가능한 템플릿을 정의하여 추가 사용자 지정을 적용할 수 있습니다. 예를 들어, 다음과 같습니다.
+ 실행기 및 드라이버 컴퓨팅 용량 구성
+ IAM 역할과 같은 보안 및 거버넌스 속성 설정
+ 여러 애플리케이션 및 데이터 파이프라인에서 사용하도록 도커 이미지 사용자 지정

다음 주제에서는 템플릿을 사용하여 작업 실행을 시작하는 방법 및 템플릿 파라미터를 변경하는 방법을 포함하여 템플릿 사용에 대한 자세한 정보를 제공합니다.

**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. 다음 예제 JSON 파일에서 볼 수 있듯이 `create-job-template-request.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>

작업 템플릿 파라미터를 사용하면 작업 템플릿에서 변수를 지정할 수 있습니다. 해당 작업 템플릿을 사용하여 작업 실행을 시작할 때 이러한 파라미터 값을 지정해야 합니다. Job 템플릿 파라미터는 `${parameterName}` 형식으로 지정됩니다. `jobTemplateData` 필드의 값을 작업 템플릿 파라미터로 지정하도록 선택할 수 있습니다. 각 작업 템플릿 파라미터 변수에 대해 해당 데이터 유형(`STRING` 또는 `NUMBER`)과 기본값(선택 사항)을 지정합니다. 아래 예제에서는 진입점 위치, 기본 클래스 및 S3 로그 위치 값에 대한 작업 템플릿 파라미터를 지정하는 방법을 보여줍니다.

**진입점 위치, 기본 클래스 및 Amazon S3 로그 위치를 작업 템플릿 파라미터로 지정하는 방법**

1. 다음 예제 JSON 파일에서 볼 수 있듯이 `create-job-template-request.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` 작업을 간접 호출할 수 있습니다.