

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Uso de modelos de trabalho
<a name="job-templates"></a>

Um modelo de trabalho armazena valores que podem ser compartilhados entre invocações da API `StartJobRun` ao iniciar uma execução de trabalho. Ele oferece suporte a dois casos de uso:
+ Para evitar valores de solicitação da API `StartJobRun` repetitivos e recorrentes.
+ Para impor uma regra, determinados valores devem ser fornecidos por meio de solicitações da API `StartJobRun`.

Os modelos de trabalho possibilitam definir um modelo reutilizável para execuções de trabalho com a finalidade de aplicar personalizações adicionais, por exemplo:
+ Configuração da capacidade de computação dos executores e dos drivers.
+ Definição de propriedades de segurança e de governança, como perfis do IAM.
+ Personalização de uma imagem do Docker para usar em diversas aplicações e pipelines de dados.

Os tópicos a seguir fornecem informações detalhadas sobre o uso de modelos, incluindo como usá-los para iniciar a execução de um trabalho e como alterar os parâmetros do modelo.

**Topics**
+ [Criação e uso de um modelo de trabalho para iniciar uma execução de trabalho](create-job-template.md)
+ [Definição de parâmetros de modelos de trabalhos](use-job-template-parameters.md)
+ [Controle do acesso aos modelos de trabalhos](iam-job-template.md)

# Criação e uso de um modelo de trabalho para iniciar uma execução de trabalho
<a name="create-job-template"></a>

Esta seção descreve a criação de um modelo de trabalho e o uso do modelo para iniciar a execução de um trabalho com o AWS Command Line Interface (AWS CLI).

**Criar um modelo de trabalho**

1. Crie um arquivo `create-job-template-request.json` e especifique os parâmetros obrigatórios para seu modelo de trabalho, conforme mostrado no arquivo JSON de exemplo a seguir. Para obter informações sobre todos os parâmetros disponíveis, consulte a [CreateJobTemplate](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/Welcome.html)API.

   A maioria dos valores obrigatórios para a API `StartJobRun` também são obrigatórios para `jobTemplateData`. Se você quiser usar espaços reservados para qualquer parâmetro e fornecer valores ao invocar StartJobRun usando um modelo de trabalho, consulte a próxima seção sobre parâmetros do modelo de trabalho.

   ```
   {
      "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. Use o comando `create-job-template` com um caminho para o arquivo `create-job-template-request.json` armazenado localmente.

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

**Iniciar uma execução de trabalho usando um modelo de trabalho**

Forneça o ID do cluster virtual, o ID do modelo de trabalho e o nome do trabalho no comando `StartJobRun`, conforme mostrado no exemplo a seguir.

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

# Definição de parâmetros de modelos de trabalhos
<a name="use-job-template-parameters"></a>

Os parâmetros de modelos de trabalhos permitem especificar variáveis ​​no modelo de trabalho. Os valores para essas variáveis ​​de parâmetro precisarão ser especificados ao iniciar uma execução de trabalho usando esse modelo de trabalho. Os parâmetros do modelo de trabalho são especificados no formato `${parameterName}`. Você pode optar por especificar qualquer valor em um campo `jobTemplateData` como um parâmetro do modelo de trabalho. Para cada uma das variáveis ​​de parâmetro do modelo de trabalho, especifique seu tipo de dados (`STRING` ou `NUMBER`) e, opcionalmente, um valor padrão. O exemplo abaixo mostra como você pode especificar os parâmetros do modelo de trabalho para os valores de local do ponto de entrada, classe principal e local do log do S3.

**Para especificar o local do ponto de entrada, a classe principal e o local do log do Amazon S3 como parâmetros do modelo de trabalho**

1. Crie um arquivo `create-job-template-request.json` e especifique os parâmetros obrigatórios para seu modelo de trabalho, conforme mostrado no arquivo JSON de exemplo a seguir. Para obter mais informações sobre os parâmetros, consulte a [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. Use o comando `create-job-template` com um caminho para o arquivo `create-job-template-request.json` armazenado localmente ou no Amazon S3.

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

**Para iniciar uma execução de trabalho usando um modelo de trabalho com parâmetros de modelos de trabalhos**

Para iniciar uma execução de trabalho com um modelo de trabalho contendo parâmetros de modelos de trabalhos, especifique o ID do modelo de trabalho, bem como os valores dos parâmetros do modelo de trabalho na solicitação da API `StartJobRun`, conforme mostrado abaixo.

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

# Controle do acesso aos modelos de trabalhos
<a name="iam-job-template"></a>

A política `StartJobRun` permite impor que um usuário ou um perfil possa somente executar trabalhos usando modelos de trabalhos especificados e não possa executar operações `StartJobRun` sem usar os modelos de trabalhos especificados. Para conseguir isso, primeiro, certifique-se de conceder ao usuário ou ao perfil uma permissão de leitura para os modelos de trabalhos especificados, conforme mostrado abaixo.

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

------

Para garantir que um usuário ou que um perfil seja capaz de invocar a operação `StartJobRun` somente ao usar modelos de trabalhos especificados, você pode atribuir a permissão de política `StartJobRun` apresentada a seguir para um determinado usuário ou perfil.

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

------

Se o modelo de trabalho especificar um parâmetro de modelo de trabalho dentro do campo ARN do perfil de execução, o usuário poderá fornecer um valor para esse parâmetro e, assim, invocar `StartJobRun` usando um perfil de execução arbitrário. Para restringir os perfis de execução que o usuário pode fornecer, consulte **Controle do acesso ao perfil de execução** em [Uso de perfis de execução de trabalho com o Amazon EMR no EKS](iam-execution-role.md). 

Se nenhuma condição for especificada na política de ação `StartJobRun` acima para um determinado usuário ou perfil, o usuário ou o perfil terá permissão para invocar a ação `StartJobRun` no cluster virtual especificado usando um modelo de trabalho arbitrário ao qual ele tenha acesso de leitura ou usando um perfil de execução arbitrário.