Función de servicio para EC2 instancias de clúster (perfil de EC2 instancia) - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Función de servicio para EC2 instancias de clúster (perfil de EC2 instancia)

La función de servicio para EC2 las instancias de clúster (también denominada perfil de EC2 instancia para AmazonEMR) es un tipo especial de función de servicio que se asigna a todas las EC2 instancias de un EMR clúster de Amazon cuando se lanza la instancia. Los procesos de aplicación que se ejecutan sobre el ecosistema de Hadoop asumen este rol para los permisos, para interactuar así con otros productos de AWS .

Para obtener más información sobre las funciones de servicio para EC2 las instancias, consulta Cómo usar una IAM función para conceder permisos a las aplicaciones que se ejecutan en EC2 instancias de Amazon en la Guía del IAM usuario.

importante

El rol de servicio predeterminado para EC2 las instancias de clúster y su política administrada AWS predeterminada asociada AmazonElasticMapReduceforEC2Role están en vías de caducar, y no se proporcionan políticas AWS administradas sustitutivas. Tendrá que crear y especificar un perfil de instancia para reemplazar la política predeterminada y el rol obsoletos.

Política administrada y rol predeterminados

  • El nombre del rol predeterminado es EMR_EC2_DefaultRole.

  • La política administrada EMR_EC2_DefaultRole predeterminada, AmazonElasticMapReduceforEC2Role, está a punto de finalizar su soporte. En lugar de usar una política administrada predeterminada para el perfil de EC2 instancia, aplica políticas basadas en recursos a los buckets de S3 y otros recursos que Amazon EMR necesite, o usa tu propia política administrada por el cliente con un IAM rol como perfil de instancia. Para obtener más información, consulte Crear un rol de servicio para las instancias de clúster con permisos de privilegios mínimos EC2.

Lo siguiente muestra el contenido de la versión 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" ] } ] }

Su rol de servicio debe usar la siguiente política de confianza.

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

Crear un rol de servicio para las instancias de clúster con permisos de privilegios mínimos EC2

Como práctica recomendada, te recomendamos encarecidamente que crees un rol de servicio para las EC2 instancias del clúster y una política de permisos que tenga los permisos mínimos para otros AWS servicios que requiera tu aplicación.

La política administrada predeterminada, AmazonElasticMapReduceforEC2Role, proporciona los permisos que facilitan el lanzar un clúster inicial. Sin embargo, AmazonElasticMapReduceforEC2Role está en vías de caer en desuso y Amazon no EMR proporcionará una política predeterminada AWS gestionada que sustituya a la función obsoleta. Para lanzar un clúster inicial, debe proporcionar una política basada en los recursos o en la identificación administrada por el cliente.

Las siguientes declaraciones de política proporcionan ejemplos de los permisos necesarios para las distintas funciones de AmazonEMR. Le recomendamos que utilice estos permisos para crear una política de permisos que restrinja el acceso tan solo a aquellas funciones y recursos que necesite el clúster. Todos los ejemplos de declaraciones de política utilizan la us-west-2 Región y el identificador de AWS cuenta ficticio 123456789012. Sustitúyalos según corresponda para su clúster.

Para obtener más información sobre la creación y la especificación de roles personalizados, consulte Personaliza IAM los roles.

nota

Si creas un EMR rol personalizado paraEC2, sigue el flujo de trabajo básico, que crea automáticamente un perfil de instancia con el mismo nombre. Amazon te EC2 permite crear perfiles de instancia y roles con nombres diferentes, pero Amazon EMR no admite esta configuración y se produce un error de «perfil de instancia no válido» al crear el clúster.

Lectura y escritura de datos en Amazon S3 mediante EMRFS

Cuando una aplicación que se ejecuta en un EMR clúster de Amazon hace referencia a los datos mediante el s3://mydata formato, Amazon EMR utiliza el perfil de EC2 instancia para realizar la solicitud. Los clústeres suelen leer y escribir datos en Amazon S3 de esta forma, y Amazon EMR utiliza los permisos asociados a la función de servicio para las EC2 instancias de clúster de forma predeterminada. Para obtener más información, consulte Configurar IAM funciones para EMRFS las solicitudes a Amazon S3.

Dado que las IAM funciones para EMRFS recaen en los permisos asociados a la función de servicio para EC2 las instancias de clúster, se recomienda utilizar las IAM funciones para EMRFS las instancias de clúster y limitar las funciones EMRFS y los permisos de Amazon S3 asociados a la función de servicio para las EC2 instancias de clúster.

En el ejemplo de declaración que aparece a continuación, se EMRFS muestran los permisos necesarios para realizar solicitudes a Amazon S3.

  • my-data-bucket-in-s3- for-emrfs-reads-and -escribe especifica el bucket de Amazon S3 en el que el clúster lee y escribe los datos y todas las subcarpetas mediante /*. Agregue solo los depósitos y carpetas que necesite su aplicación.

  • La declaración de política que permite dynamodb las acciones solo es necesaria si la vista EMRFS coherente está habilitada. E mrFSMetadata especifica la carpeta por defecto para EMRFS una visualización coherente.

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

Almacenamiento de archivos de registro en Amazon S3

La siguiente declaración de política permite que el EMR clúster de Amazon archive los archivos de registro en la ubicación de Amazon S3 especificada. En el siguiente ejemplo, cuando se creó el clúster, s3://MyLoggingBucket/M Logs yEMRCluster se especificó mediante la ubicación S3 de la carpeta de registros en la consola, mediante la --log-uri AWS CLI opción del comando o mediante el LogUri parámetro del RunJobFlow comando. Para obtener más información, consulte Archivar archivos de registro en Amazon S3.

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

Uso del catálogo de datos de AWS Glue

La siguiente declaración de política permite las acciones que son necesarias si se utiliza el catálogo de datos de AWS Glue como almacén de aplicaciones. Para obtener más información, consulta Uso del catálogo de datos de AWS Glue como metaalmacén para Spark SQL, Uso del catálogo de datos de AWS Glue como metaalmacén para Hive y Uso de Presto con el catálogo de datos de AWS Glue en la Guía de versiones de Amazon. 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": "*", } ] }