Ruolo di servizio per le EC2 istanze del cluster (profilo dell'EC2istanza) - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Ruolo di servizio per le EC2 istanze del cluster (profilo dell'EC2istanza)

Il ruolo di servizio per EC2 le istanze di cluster (chiamato anche profilo di EC2 istanza per AmazonEMR) è un tipo speciale di ruolo di servizio assegnato a ogni EC2 istanza di un EMR cluster Amazon all'avvio dell'istanza. I processi delle applicazioni eseguite sull'ecosistema Hadoop presuppongono che questo ruolo per le autorizzazioni interagisca con altri servizi AWS .

Per ulteriori informazioni sui ruoli di servizio per EC2 le istanze, consulta Usare un IAM ruolo per concedere le autorizzazioni alle applicazioni in esecuzione su EC2 istanze Amazon nella Guida per l'IAMutente.

Importante

Il ruolo di servizio predefinito per EC2 le istanze di cluster e la politica gestita AWS predefinita associata AmazonElasticMapReduceforEC2Role sono sulla via dell'obsolescenza, senza che vengano fornite politiche gestite sostitutive. AWS Sarà necessario creare e specificare un profilo di istanza per sostituire il ruolo obsoleto e la policy predefinita.

Ruolo predefinito e policy gestita

  • Il nome del ruolo predefinito è EMR_EC2_DefaultRole.

  • Il supporto per la policy gestita da EMR_EC2_DefaultRole predefinita (AmazonElasticMapReduceforEC2Role) è quasi al termine. Invece di utilizzare una policy gestita predefinita per il profilo dell'EC2istanza, applica policy basate sulle risorse ai bucket S3 e ad altre risorse di cui Amazon EMR ha bisogno, oppure usa la tua policy gestita dal cliente con un ruolo come profilo di istanza. IAM Per ulteriori informazioni, consulta Creazione di un ruolo di servizio per le istanze di cluster con autorizzazioni con privilegi minimi EC2.

Di seguito viene mostrato il contenuto della versione 3 di 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" ] } ] }

Il tuo ruolo di servizio dovrebbe utilizzare la seguente policy di attendibilità:

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

Creazione di un ruolo di servizio per le istanze di cluster con autorizzazioni con privilegi minimi EC2

Come procedura consigliata, consigliamo vivamente di creare un ruolo di servizio per le EC2 istanze del cluster e una politica di autorizzazioni che disponga delle autorizzazioni minime per gli altri servizi richiesti dall'applicazione. AWS

La policy gestita predefinita AmazonElasticMapReduceforEC2Role offre le autorizzazioni che facilitano l'avvio del primo cluster. Tuttavia, AmazonElasticMapReduceforEC2Role è sulla buona strada per diventare obsoleta e Amazon non EMR fornirà una politica predefinita AWS gestita sostitutiva per il ruolo obsoleto. Per avviare un cluster iniziale, è necessario fornire una policy basata sulle risorse gestita dal cliente o basata su ID.

Le seguenti dichiarazioni politiche forniscono esempi delle autorizzazioni richieste per diverse funzionalità di AmazonEMR. È consigliabile utilizzare queste autorizzazioni per la creazione di una policy di autorizzazioni che limita l'accesso alle sole caratteristiche e risorse che richiede il cluster. Tutte le dichiarazioni politiche di esempio utilizzano us-west-2 Regione e ID dell'account fittizio AWS 123456789012. Sostituiscili in base alle esigenze del tuo cluster.

Per ulteriori informazioni sulla creazione e sula specifica di ruoli personalizzati, consulta Personalizza IAM i ruoli con Amazon EMR.

Nota

Se crei un EMR ruolo personalizzato perEC2, segui il flusso di lavoro di base, che crea automaticamente un profilo di istanza con lo stesso nome. Amazon EC2 consente di creare profili e ruoli di istanza con nomi diversi, ma Amazon EMR non supporta questa configurazione e genera un errore di «profilo di istanza non valido» durante la creazione del cluster.

Lettura e scrittura di dati su Amazon S3 utilizzando EMRFS

Quando un'applicazione in esecuzione su un EMR cluster Amazon fa riferimento ai dati utilizzando il s3://mydata formato, Amazon EMR utilizza il profilo dell'EC2istanza per effettuare la richiesta. I cluster in genere leggono e scrivono dati su Amazon S3 in questo modo e EMR Amazon utilizza le autorizzazioni associate al ruolo di servizio per le istanze di EC2 cluster per impostazione predefinita. Per ulteriori informazioni, consulta Configurazione IAM dei ruoli per EMRFS le richieste ad Amazon S3.

Poiché IAM i ruoli per EMRFS si basano sulle autorizzazioni associate al ruolo di servizio per EC2 le istanze di cluster, come best practice, consigliamo di utilizzare IAM ruoli per EMRFS e limitare le EMRFS autorizzazioni Amazon S3 associate al ruolo di servizio per le istanze cluster. EC2

La seguente dichiarazione di esempio mostra le autorizzazioni necessarie per effettuare EMRFS richieste ad Amazon S3.

  • my-data-bucket-in-s3-for-emrfs-reads-and-writes specifica il bucket in Amazon S3 in cui il cluster legge e scrive i dati e tutte le sottocartelle utilizzando /*. Aggiungi solo i bucket e le cartelle richiesti dall'applicazione.

  • La dichiarazione politica che consente dynamodb le azioni è richiesta solo se è abilitata la visualizzazione EMRFS coerente. EmrFSMetadata specifica la cartella predefinita per la visualizzazione EMRFS coerente.

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

Archiviazione di file di log in Amazon S3

La seguente dichiarazione di policy consente al EMR cluster Amazon di archiviare i file di log nella posizione Amazon S3 specificata. Nell'esempio seguente, quando è stato creato il cluster, s3://MyLoggingBucket/MyEMRClusterLogs è stato specificato utilizzando la posizione della cartella Log S3 nella console, utilizzando l'--log-uriopzione di o utilizzando il LogUri parametro nel RunJobFlow comando. AWS CLI Per ulteriori informazioni, consulta Archiviazione di file di log in Amazon S3.

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

Utilizzo del AWS Glue Data Catalog

La seguente dichiarazione sulla politica consente le azioni necessarie se si utilizza il AWS Glue Data Catalog come metastore per le applicazioni. Per ulteriori informazioni, consulta Using the AWS Glue Data Catalog come metastore per Spark SQL, Using the AWS Glue Data Catalog come metastore per Hive e Using Presto with the Glue AWS Data Catalog nella Amazon Release Guide. EMR

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