Função de serviço para EC2 instâncias de cluster (perfil de EC2 instância) - Amazon EMR

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

Função de serviço para EC2 instâncias de cluster (perfil de EC2 instância)

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

Para obter mais informações sobre funções de serviço para EC2 instâncias, consulte Como usar uma IAM função para conceder permissões a aplicativos executados em EC2 instâncias da Amazon no Guia IAM do usuário.

Importante

A função de serviço padrão para EC2 instâncias de cluster e sua função associada AWS política gerenciada padrão, AmazonElasticMapReduceforEC2Role está a caminho da depreciação, sem substituição AWS políticas gerenciadas fornecidas. 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

  • 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 da EC2 instância, aplique políticas baseadas em recursos aos buckets do S3 e outros recursos que a Amazon EMR precisa, ou use sua própria política gerenciada pelo cliente com uma IAM função como perfil de instância. Para obter mais informações, consulte Criação de uma função de serviço para EC2 instâncias de cluster com permissões de privilégio mínimo.

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

{ "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" ] } ] }

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

{ "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Criação de uma função de serviço para EC2 instâncias de cluster com permissões de privilégio mínimo

Como prática recomendada, é altamente recomendável que você crie uma função de serviço para EC2 instâncias 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á a caminho da depreciação e a Amazon não EMR fornecerá um substituto AWS política padrão gerenciada 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 declarações de política a seguir fornecem exemplos das permissões necessárias para diferentes recursos da AmazonEMR. 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 o us-west-2 Região e o fictício AWS ID da conta 123456789012. Substitua-os conforme apropriado para seu cluster.

Para obter mais informações sobre como criar e especificar funções personalizadas, consulte Personalize IAM funções.

nota

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

Lendo e gravando dados no Amazon S3 usando EMRFS

Quando um aplicativo executado em um EMR cluster da Amazon faz referência a dados usando o s3://mydata formato, a Amazon EMR usa o perfil da EC2 instância para fazer a solicitação. Os clusters normalmente leem e gravam dados no Amazon S3 dessa forma, e a Amazon EMR usa as permissões associadas à função de serviço para EC2 instâncias de cluster por padrão. Para obter mais informações, consulte Configurar IAM funções para EMRFS solicitações para o Amazon S3.

Como as IAM funções de EMRFS retornarão às permissões associadas à função de serviço para EC2 instâncias de cluster, como melhor prática, recomendamos que você use IAM funções e limite as permissões do EMRFS Amazon S3 associadas à função de serviço para instâncias de clusterEC2. EMRFS

O exemplo de declaração abaixo demonstra as permissões EMRFS necessárias 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 /*. Adicione somente os buckets e pastas que seu aplicativo exige.

  • A declaração de política que permite dynamodb ações é necessária somente se a visualização EMRFS consistente estiver ativada. EmrFSMetadata especifica a pasta padrão para uma visualização EMRFS consistente.

{ "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/*" ] }, { "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:us-west-2:123456789012:table/EmrFSMetadata" }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "dynamodb:ListTables", "s3:ListBucket" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "sqs:GetQueueUrl", "sqs:ReceiveMessage", "sqs:DeleteQueue", "sqs:SendMessage", "sqs:CreateQueue" ], "Resource": "arn:aws:sqs:us-west-2:123456789012:EMRFS-Inconsistency-*" } ] }

Arquivar arquivos de log no Amazon S3

A declaração de política a seguir permite que o EMR cluster da Amazon arquive arquivos de log no local especificado 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.

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

Usar o AWS Glue Data Catalog

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 o Data Catalog como metastore do Spark SQL, usando o AWS Glue o Data Catalog como metastore do Hive e use o Presto com o AWS Glue Data Catalog no Amazon EMR Release Guide.

{ "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": "*", } ] }