

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á.

# Política do IAM de execução
<a name="jobs-cli-execution"></a>

É possível especificar uma política de execução do IAM, além de um perfil de execução, ao enviar execuções de trabalhos no EMR Sem Servidor. As permissões resultantes assumidas pelo trabalho são a interseção das permissões no perfil de execução e na Política do IAM de execução especificada.

## Conceitos básicos
<a name="jobs-cli-execution-getting-started"></a>

Etapas para usar a política do IAM de execução:

Crie um aplicação `emr-serverless` ou use uma existente e, em seguida, execute o seguinte comando da AWS CLI para iniciar a execução de um trabalho com uma política do IAM inline:

```
aws emr-serverless start-job-run --region us-west-2 \
      --application-id application-id \
      --execution-role-arn execution-role-arn \
      --job-driver job-driver-options \
      --execution-iam-policy '{"policy": "inline-policy"}'
```

## Exemplos de comandos da CLI
<a name="jobs-cli-execution-examples"></a>

Se tivermos a seguinte política armazenada no arquivo `policy.json` na máquina:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-test-bucket",
        "arn:aws:s3:::my-test-bucket/*"
      ],
      "Sid": "AllowS3Getobject"
    }
  ]
}
```

------

Em seguida, podemos iniciar um trabalho com essa política usando o seguinte AWS CLI comando:

```
aws emr-serverless start-job-run --region us-west-2 \
      --application-id application-id \
      --execution-role-arn execution-role-arn \
      --job-driver job-driver-options
      --execution-iam-policy '{
          "policy": '$(jq -c '. | @json' policy.json)'
      }'
```

Você também pode usar ambas as políticas AWS e as gerenciadas pelo cliente, especificando-as ARNs por meio de:

```
aws emr-serverless start-job-run --region us-west-2 \
      --application-id application-id \
      --execution-role-arn execution-role-arn \
      --job-driver job-driver-options
      --execution-iam-policy '{
          "policyArns": [
          "arn:aws:iam::aws:policy/AmazonS3FullAccess",
          "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess"
          ]
    }'
```

Também é possível especificar uma política de IAM em linha e uma política gerenciada ARNs na mesma solicitação:

```
aws emr-serverless start-job-run --region us-west-2 \
      --application-id application-id \
      --execution-role-arn execution-role-arn \
      --job-driver job-driver-options
      --execution-iam-policy '{
          "policy": '$(jq -c '. | @json' policy.json)',
          "policyArns": [
          "arn:aws:iam::aws:policy/AmazonS3FullAccess",
          "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess"
          ]
      }'
```

## Observações importantes
<a name="jobs-cli-execution-important-notes"></a>
+ O campo `policy` de `execution-role-policy` pode ter um comprimento máximo de 2048 caracteres.
+ A string de política do IAM inline especificada no campo `policy` do `execution-iam-policy` deve estar em conformidade com o padrão de string json, sem novas linhas e com aspas escapadas, como no exemplo anterior.
+ Uma lista de até 10 políticas gerenciadas ARNs pode ser especificada como um valor para `execution-iam-policy` o `policyArns` campo s.
+ A política gerenciada ARNs deve ser uma lista de ARN válidos AWS ou gerenciados pelo cliente. Quando um ARN de política gerenciada pelo cliente é especificado, a política deve pertencer à mesma AWS conta do EMR-S. JobRun
+ Quando a política do IAM inline e políticas gerenciadas são usadas, o texto simples que você usa para as políticas inline e gerenciadas combinadas não pode exceder 2.048 caracteres.
+ As permissões resultantes assumidas pelo JobRun são a interseção das permissões na função de execução e na política de execução IAM especificada.

## Interseção de políticas
<a name="jobs-cli-execution-policy-intersection"></a>

As permissões resultantes assumidas pelo trabalho são a interseção das permissões no perfil de execução e na Política do IAM de execução especificada. O que significa que qualquer permissão necessária deverá ser especificada em ambos os lugares JobRun para funcionar. Porém, é possível especificar uma declaração de permissão geral adicional na política inline para quaisquer permissões que você não pretende atualizar ou substituir.

Exemplo

Dada a seguinte política de perfil do IAM de execução:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowS3"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogGroups"
      ],
      "Resource": [
        "arn:aws:logs:us-west-2:123456789012:log-group::log-stream"
      ],
      "Sid": "AllowLOGSDescribeloggroups"
    },
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:DescribeTable"
      ],
      "Resource": [
        "arn:aws:dynamodb:*:*:table/MyCompany1table"
      ],
      "Sid": "AllowDYNAMODBDescribetable"
    }
  ]
}
```

------

E a seguinte política do IAM embutida:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-test-bucket/tenant1",
        "arn:aws:s3:::my-test-bucket/tenant1/*"
      ],
      "Sid": "AllowS3Getobject"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:*",
        "dynamodb:*"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowLOGS"
    }
  ]
}
```

------

As permissões resultantes assumidas pelo JobRun são:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-test-bucket/tenant1",
        "arn:aws:s3:::my-test-bucket/tenant1/*"
      ],
      "Sid": "AllowS3Getobject"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogGroups"
      ],
      "Resource": [
        "arn:aws:logs:us-west-2:123456789012:log-group::log-stream"
      ],
      "Sid": "AllowLOGSDescribeloggroups"
    },
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:DescribeTable"
      ],
      "Resource": [
        "arn:aws:dynamodb:*:*:table/MyCompany1table"
      ],
      "Sid": "AllowDYNAMODBDescribetable"
    }
  ]
}
```

------