

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

# Perfil de serviço para instâncias do EC2 do cluster (perfil de instância do EC2)
<a name="emr-iam-role-for-ec2"></a>

O perfil de serviço para instâncias do EC2 do cluster (também chamada de perfil de instância do EC2 para Amazon EMR) é um tipo especial de perfil de serviço atribuído a cada instância do EC2 no cluster do Amazon EMR quando a instância é iniciada. Os processos de aplicação que são executados no ecossistema do Hadoop assumem esse perfil para que as permissões interajam com outros serviços da AWS .

Para obter mais informações sobre perfis de serviço para instâncias do EC2, consulte [Uso de um perfil do IAM para conceder permissões a aplicações em execução em instâncias do Amazon EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html) no *Guia do usuário do IAM*.

**Importante**  
A função de serviço padrão para instâncias EC2 de cluster e sua política gerenciada AWS padrão associada `AmazonElasticMapReduceforEC2Role` estão em vias de descontinuação, sem nenhuma política gerenciada AWS substituta fornecida. Será necessário criar e especificar um perfil de instância para substituir o perfil e a política padrão defasados.

## Perfil padrão e política gerenciada
<a name="emr-ec2-role-default"></a>
+ O nome de perfil padrão é `EMR_EC2_DefaultRole`.
+ A política gerenciada `EMR_EC2_DefaultRole` padrão, `AmazonElasticMapReduceforEC2Role`, está chegando ao fim do suporte. Em vez de usar uma política gerenciada padrão para o perfil de instância do EC2, aplique políticas baseadas em recursos aos buckets do S3 e outros recursos que o Amazon EMR precisa, ou use sua própria política gerenciada pelo cliente com um perfil do IAM como perfil de instância. Para obter mais informações, consulte [Criar um perfil de serviço para instâncias do EC2 do cluster com permissões de privilégio mínimo](#emr-ec2-role-least-privilege).

Veja a seguir o conteúdo da versão 3 de `AmazonElasticMapReduceforEC2Role`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Action": [
        "cloudwatch:*",
        "dynamodb:*",
        "ec2:Describe*",
        "elasticmapreduce:Describe*",
        "elasticmapreduce:ListBootstrapActions",
        "elasticmapreduce:ListClusters",
        "elasticmapreduce:ListInstanceGroups",
        "elasticmapreduce:ListInstances",
        "elasticmapreduce:ListSteps",
        "kinesis:CreateStream",
        "kinesis:DeleteStream",
        "kinesis:DescribeStream",
        "kinesis:GetRecords",
        "kinesis:GetShardIterator",
        "kinesis:MergeShards",
        "kinesis:PutRecord",
        "kinesis:SplitShard",
        "rds:Describe*",
        "s3:*",
        "sdb:*",
        "sns:*",
        "sqs:*",
        "glue:CreateDatabase",
        "glue:UpdateDatabase",
        "glue:DeleteDatabase",
        "glue:GetDatabase",
        "glue:GetDatabases",
        "glue:CreateTable",
        "glue:UpdateTable",
        "glue:DeleteTable",
        "glue:GetTable",
        "glue:GetTables",
        "glue:GetTableVersions",
        "glue:CreatePartition",
        "glue:BatchCreatePartition",
        "glue:UpdatePartition",
        "glue:DeletePartition",
        "glue:BatchDeletePartition",
        "glue:GetPartition",
        "glue:GetPartitions",
        "glue:BatchGetPartition",
        "glue:CreateUserDefinedFunction",
        "glue:UpdateUserDefinedFunction",
        "glue:DeleteUserDefinedFunction",
        "glue:GetUserDefinedFunction",
        "glue:GetUserDefinedFunctions"
      ],
      "Sid": "AllowCLOUDWATCH"
    }
  ]
}
```

------

Seu perfil de serviço deve usar a seguinte política de confiança.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowSTSAssumerole",
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/EMR_EC2_DefaultRole"
    }
  ]
}
```

------

## Criar um perfil de serviço para instâncias do EC2 do cluster com permissões de privilégio mínimo
<a name="emr-ec2-role-least-privilege"></a>

Como prática recomendada, é altamente recomendável que você crie uma função de serviço para instâncias do EC2 de cluster e uma política de permissões que tenha as permissões mínimas para outros AWS serviços exigidos pelo seu aplicativo.

A política gerenciada padrão, `AmazonElasticMapReduceforEC2Role`, fornece permissões que facilitam a execução de um cluster inicial. No entanto, `AmazonElasticMapReduceforEC2Role` está em vias de descontinuação e o Amazon EMR não fornecerá uma política padrão AWS gerenciada substituta para a função obsoleta. Para iniciar um cluster inicial, é necessário fornecer uma política gerenciada pelo cliente baseada em recursos ou baseada em ID.

As instruções de política a seguir fornecem exemplos das permissões necessárias para diferentes atributos do Amazon EMR. Recomendamos que você use essas permissões para criar uma política de permissões que restrinja o acesso somente a esses recursos e aos recursos que o cluster exige. Todos os exemplos de declarações de política usam a *us-west-2* Região e o ID *123456789012* fictício AWS da conta. Faça as substituições apropriadas para o seu cluster.

Para obter mais informações sobre como criar e especificar funções personalizadas, consulte [Personalização de perfis do IAM com o Amazon EMR](emr-iam-roles-custom.md).

**nota**  
Se você criar um perfil personalizado do EMR para o EC2, siga o fluxo de trabalho básico, que criará automaticamente um perfil de instância com o mesmo nome. O Amazon EC2 permite criar perfis e perfis de instância com nomes diferentes, mas o Amazon EMR não oferece suporte a essa configuração, o que resulta em um erro de “perfil de instância inválido” quando você cria o cluster. 

### Ler e gravar dados no Amazon S3 usando o EMRFS
<a name="emr-ec2-role-EMRFS"></a>

Quando uma aplicação em execução em um cluster do Amazon EMR faz referência a dados usando o formato `s3://mydata`, o Amazon EMR usa o perfil de instância do EC2 para fazer a solicitação. Normalmente, os clusters leem e gravam dados no Amazon S3 dessa maneira, e o Amazon EMR usa as permissões anexadas ao perfil de serviço para instâncias do cluster do EC2 por padrão. Para obter mais informações, consulte [Configurar perfis do IAM para solicitações do EMRFS para o Amazon S3](emr-emrfs-iam-roles.md).

Já que os perfis do IAM para o EMRFS se enquadrarão às permissões anexadas ao perfil de serviço para instâncias de cluster do EC2, como prática recomendada, é aconselhável usar perfis do IAM para o EMRFS e limitar as permissões do EMRFS e do Amazon S3 anexadas ao perfil de serviço para instâncias de cluster do EC2.

O exemplo de instrução a seguir demonstra as permissões que o EMRFS exige para fazer solicitações ao Amazon S3.
+ *my-data-bucket-in-s3-for-emrfs-reads-and-writes* especifica o bucket no Amazon S3 em que o cluster lê e grava dados e todas as subpastas usando */\$1*. Adicione somente os buckets e as pastas que o aplicativo exige.
+ A instrução de política que permite ações `dynamodb` será necessária somente se a visualização consistente do EMRFS estiver habilitada. *EmrFSMetadata* especifica a pasta padrão para a visualização consistente do EMRFS.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:CreateBucket",
        "s3:DeleteObject",
        "s3:GetBucketVersioning",
        "s3:GetObject",
        "s3:GetObjectTagging",
        "s3:GetObjectVersion",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads",
        "s3:ListBucketVersions",
        "s3:ListMultipartUploadParts",
        "s3:PutBucketVersioning",
        "s3:PutObject",
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::my-data-bucket-in-s3-for-emrfs-reads-and-writes",
        "arn:aws:s3:::my-data-bucket-in-s3-for-emrfs-reads-and-writes/*"
      ],
      "Sid": "AllowS3Abortmultipartupload"
    },
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:CreateTable",
        "dynamodb:BatchGetItem",
        "dynamodb:BatchWriteItem",
        "dynamodb:PutItem",
        "dynamodb:DescribeTable",
        "dynamodb:DeleteItem",
        "dynamodb:GetItem",
        "dynamodb:Scan",
        "dynamodb:Query",
        "dynamodb:UpdateItem",
        "dynamodb:DeleteTable",
        "dynamodb:UpdateTable"
      ],
      "Resource": [
        "arn:aws:dynamodb:*:123456789012:table/EmrFSMetadata"
      ],
      "Sid": "AllowDYNAMODBCreatetable"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricData",
        "dynamodb:ListTables",
        "s3:ListBucket"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowCLOUDWATCHPutmetricdata"
    },
    {
      "Effect": "Allow",
      "Action": [
        "sqs:GetQueueUrl",
        "sqs:ReceiveMessage",
        "sqs:DeleteQueue",
        "sqs:SendMessage",
        "sqs:CreateQueue"
      ],
      "Resource": [
        "arn:aws:sqs:*:123456789012:EMRFS-Inconsistency-*"
      ],
      "Sid": "AllowSQSGetqueueurl"
    }
  ]
}
```

------

### Arquivar arquivos de log no Amazon S3
<a name="emr-ec2-role-s3-logs"></a>

A instrução de política a seguir permite que o cluster do Amazon EMR arquive os arquivos de log no local especificada do Amazon S3. No exemplo abaixo, quando o cluster foi criado, *s3://MyLoggingBucket/MyEMRClusterLogs* foi especificado usando a **localização da pasta Log S3** no console, usando a `--log-uri` opção do AWS CLI, ou usando o `LogUri` parâmetro no `RunJobFlow` comando. Para obter mais informações, consulte [Arquivamento dos arquivos de log no Amazon S3](emr-plan-debugging.md#emr-plan-debugging-logs-archive).

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::MyLoggingBucket/MyEMRClusterLogs/*"
      ],
      "Sid": "AllowS3Putobject"
    }
  ]
}
```

------

### Usando o AWS Glue Data Catalog
<a name="emr-ec2-role-glue"></a>

A declaração de política a seguir permite ações que são necessárias se você usar o AWS Glue Data Catalog como metastore para aplicativos. *Para obter mais informações, consulte [Usando o AWS Glue Data Catalog como metastore para o Spark SQL](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html), Usando [o AWS Glue Data Catalog como metastore para o Hive](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive-metastore-glue.html) e Usando o [Presto com o Glue Data AWS Catalog no Guia de lançamento do](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-glue.html) Amazon EMR.*

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:CreateDatabase",
        "glue:UpdateDatabase",
        "glue:DeleteDatabase",
        "glue:GetDatabase",
        "glue:GetDatabases",
        "glue:CreateTable",
        "glue:UpdateTable",
        "glue:DeleteTable",
        "glue:GetTable",
        "glue:GetTables",
        "glue:GetTableVersions",
        "glue:CreatePartition",
        "glue:BatchCreatePartition",
        "glue:UpdatePartition",
        "glue:DeletePartition",
        "glue:BatchDeletePartition",
        "glue:GetPartition",
        "glue:GetPartitions",
        "glue:BatchGetPartition",
        "glue:CreateUserDefinedFunction",
        "glue:UpdateUserDefinedFunction",
        "glue:DeleteUserDefinedFunction",
        "glue:GetUserDefinedFunction",
        "glue:GetUserDefinedFunctions"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowGLUECreatedatabase"
    }
  ]
}
```

------