Funciones de tiempo de ejecución para Amazon EMR Steps - 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.

Funciones de tiempo de ejecución para Amazon EMR Steps

Un rol en tiempo de ejecución es un rol AWS Identity and Access Management (IAM) que puedes especificar al enviar un trabajo o una consulta a un EMR clúster de Amazon. El trabajo o la consulta que envíe a su EMR clúster de Amazon utiliza el rol de tiempo de ejecución para acceder a AWS los recursos, como los objetos de Amazon S3. Puedes especificar funciones de tiempo de ejecución con Amazon EMR para los trabajos de Spark y Hive.

También puede especificar los roles de tiempo de ejecución al conectarse a EMR los clústeres de Amazon Amazon SageMaker AI y al adjuntar un espacio de trabajo de Amazon EMR Studio a un EMR clúster. Para obtener más información, consulte Conectarse a un EMR clúster de Amazon desde Studio yDirige un espacio de trabajo de EMR Studio con un rol de tiempo de ejecución.

Anteriormente, EMR los clústeres de Amazon ejecutaban EMR trabajos o consultas de Amazon con permisos basados en la IAM política adjunta al perfil de instancia que utilizaste para lanzar el clúster. Esto significaba que las políticas tenían que contener la unión de todos los permisos para todos los trabajos y consultas que se ejecutaban en un EMR clúster de Amazon. Con las funciones en tiempo de ejecución, ahora puedes gestionar el control de acceso de cada trabajo o consulta de forma individual, en lugar de compartir el perfil de EMR instancia de Amazon del clúster.

En EMR los clústeres de Amazon con funciones de tiempo de ejecución, también puede aplicar un control de acceso AWS Lake Formation basado a los trabajos y consultas de Spark, Hive y Presto en sus lagos de datos. Para obtener más información sobre cómo integrarse con AWS Lake Formation, consulte. Integre Amazon EMR con AWS Lake Formation

nota

Cuando especificas un rol de tiempo de ejecución para un EMR paso de Amazon, los trabajos o consultas que envíes solo pueden acceder a AWS los recursos que las políticas asociadas al rol de tiempo de ejecución permiten. Estos trabajos y consultas no pueden acceder al servicio de metadatos de instancias en las EC2 instancias del clúster ni utilizar el perfil de EC2 instancia del clúster para acceder a ningún AWS recurso.

Requisitos previos para lanzar un EMR clúster de Amazon con una función de tiempo de ejecución

Paso 1: Configurar las configuraciones de seguridad en Amazon EMR

Utilice la siguiente JSON estructura para crear una configuración de seguridad en AWS Command Line Interface (AWS CLI) y EnableApplicationScopedIAMRole configúrela entrue. Para obtener más información acerca de las configuraciones de seguridad, consulte Usa configuraciones de seguridad para configurar la seguridad de los EMR clústeres de Amazon.

{ "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true } } }

Le recomendamos que habilite siempre las opciones de cifrado en tránsito en la configuración de seguridad, de modo que los datos que se transfieran a través de Internet estén cifrados y no sean texto sin formato. Puedes omitir estas opciones si no quieres conectarte a EMR clústeres de Amazon con funciones de tiempo de ejecución de SageMaker Runtime Studio o EMR Studio. Para configurar el cifrado de datos, consulte Configuración del cifrado de datos.

Como alternativa, puede crear una configuración de seguridad con ajustes personalizados con la AWS Management Console.

Paso 2: Configura un perfil de EC2 instancia para el EMR clúster de Amazon

EMRLos clústeres de Amazon utilizan el rol de perfil de EC2 instancia de Amazon para asumir los roles de tiempo de ejecución. Para usar roles de tiempo de ejecución con Amazon EMR Steps, agrega las siguientes políticas al IAM rol que planeas usar como rol de perfil de instancia. Para añadir políticas a un IAM rol o editar una política integrada o gestionada existente, consulta Añadir y eliminar permisos de IAM identidad.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowRuntimeRoleUsage", "Effect":"Allow", "Action":[ "sts:AssumeRole", "sts:TagSession" ], "Resource":[ <runtime-role-ARN> ] } ] }

Paso 3: configurar una política de confianza

Para cada IAM rol que planee usar como rol en tiempo de ejecución, establezca la siguiente política de confianza y EMR_EC2_DefaultRole reemplácela por su rol de perfil de instancia. Para modificar la política de confianza de un IAM rol, consulta Modificar la política de confianza de un rol.

{ "Sid":"AllowAssumeRole", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::<AWS_ACCOUNT_ID>:role/EMR_EC2_DefaultRole" }, "Action":"sts:AssumeRole" }

Lanza un EMR clúster de Amazon con control de acceso basado en roles

Tras configurar las configuraciones, puede lanzar un EMR clúster de Amazon con la configuración de seguridad desdePaso 1: Configurar las configuraciones de seguridad en Amazon EMR. Para usar roles de tiempo de ejecución con Amazon EMR steps, usa la etiqueta de lanzamiento emr-6.7.0 o una versión posterior y selecciona Hive, Spark o ambas como aplicación de clúster. Para conectarte desde SageMaker AI Studio, usa release emr-6.9.0 o una versión posterior y selecciona Livy, Spark, Hive o Presto como aplicación de clúster. Para obtener instrucciones sobre cómo lanzar el clúster, consulte Especificar una configuración de seguridad para un EMR clúster de Amazon.

Envía trabajos de Spark siguiendo EMR los pasos de Amazon

El siguiente es un ejemplo de cómo ejecutar el HdfsTest ejemplo incluido con Apache Spark. Esta API llamada solo tiene éxito si el rol de Amazon EMR Runtime proporcionado puede acceder a. S3_LOCATION

RUNTIME_ROLE_ARN=<runtime-role-arn> S3_LOCATION=<s3-path> REGION=<aws-region> CLUSTER_ID=<cluster-id> aws emr add-steps --cluster-id $CLUSTER_ID \ --steps '[{ "Name": "Spark Example", "ActionOnFailure": "CONTINUE","HadoopJarStep": { "Jar":"command-runner.jar","Args" : ["spark-example","HdfsTest", "$S3_LOCATION"] } }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION
nota

Te recomendamos que desactives el SSH acceso al EMR clúster de Amazon y que solo permitas EMR AddJobFlowSteps API que Amazon acceda al clúster.

Envía trabajos de Hive siguiendo los pasos de Amazon EMR

En el siguiente ejemplo, se utilizan los EMR pasos de Apache Hive con Amazon para enviar un trabajo y ejecutar el QUERY_FILE.hql archivo. Esta consulta solo se realiza correctamente si el rol en tiempo de ejecución proporcionado puede acceder a la ruta de Amazon S3 del archivo de consulta.

RUNTIME_ROLE_ARN=<runtime-role-arn> REGION=<aws-region> CLUSTER_ID=<cluster-id> aws emr add-steps --cluster-id $CLUSTER_ID \ --steps '[{ "Name": "Run hive query using command-runner.jar - simple select","ActionOnFailure":"CONTINUE","HadoopJarStep": { "Jar": "command-runner.jar","Args" :["hive - f","s3://DOC_EXAMPLE_BUCKET/QUERY_FILE.hql"] } }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION

Conéctate a EMR clústeres de Amazon con funciones de tiempo de ejecución desde un bloc de notas de SageMaker AI Studio

Puedes aplicar las funciones EMR de Amazon Runtime a las consultas que ejecutes en EMR los clústeres de Amazon desde SageMaker AI Studio. Para hacerlo, siga estos pasos:

  1. Siga las instrucciones de Launch Amazon SageMaker AI Studio para crear un estudio de SageMaker IA.

  2. En la interfaz de usuario de SageMaker AI Studio, inicie un bloc de notas con núcleos compatibles. Por ejemplo, inicia una SparkMagic imagen con un PySpark núcleo.

  3. Elige un EMR clúster de Amazon en SageMaker AI Studio y, a continuación, selecciona Connect.

  4. Seleccione un rol en tiempo de ejecución y, a continuación, elija Conectar.

Esto creará una celda de bloc de notas de SageMaker IA con comandos mágicos para conectarse a tu EMR clúster de Amazon con el rol de Amazon EMR Runtime elegido. En la celda del cuaderno, puede introducir y ejecutar consultas con el rol en tiempo de ejecución y el control de acceso basado en Lake Formation. Para ver un ejemplo más detallado, consulte Aplicar controles de acceso a datos detallados con AWS Lake Formation Amazon y Amazon desde EMR Amazon SageMaker AI Studio.

Controle el acceso a la función Amazon EMR Runtime

Puede controlar el acceso al rol en tiempo de ejecución con la clave de condición elasticmapreduce:ExecutionRoleArn. La siguiente política permite a un IAM director utilizar un IAM rol denominadoCaller, o cualquier IAM rol que comience por la cadenaCallerTeamRole, como rol en tiempo de ejecución.

importante

Debe crear una condición basada en la clave de elasticmapreduce:ExecutionRoleArn contexto cuando conceda acceso a la persona que llama para llamar al AddJobFlowSteps o GetClusterSessionCredentialsAPIs, como se muestra en el siguiente ejemplo.

{ "Sid":"AddStepsWithSpecificExecRoleArn", "Effect":"Allow", "Action":[ "elasticmapreduce:AddJobFlowSteps" ], "Resource":"*", "Condition":{ "StringEquals":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::<AWS_ACCOUNT_ID>:role/Caller" ] }, "StringLike":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::<AWS_ACCOUNT_ID>:role/CallerTeamRole*" ] } } }

Establezca confianza entre los roles de tiempo de ejecución y los EMR clústeres de Amazon

Amazon EMR genera un identificador único ExternalId para cada configuración de seguridad con la autorización de rol en tiempo de ejecución activada. Esta autorización permite a cada usuario ser propietario de un conjunto de roles en tiempo de ejecución para utilizarlos en los clústeres que les pertenecen. Por ejemplo, en una empresa, cada departamento puede usar su identificador externo para actualizar la política de confianza en su propio conjunto de roles en tiempo de ejecución.

Puedes encontrar el identificador externo con Amazon EMR DescribeSecurityConfigurationAPI, como se muestra en el siguiente ejemplo.

aws emr describe-security-configuration --name 'iamconfig-with-lf'{"Name": "iamconfig-with-lf", "SecurityConfiguration": "{\"AuthorizationConfiguration\":{\"IAMConfiguration\":{\"EnableApplicationScopedIAMRole\ ":true,\"ApplicationScopedIAMRoleConfiguration\":{\"PropagateSourceIdentity\":true,\"Exter nalId\":\"FXH5TSACFDWUCDSR3YQE2O7ETPUSM4OBCGLYWODSCUZDNZ4Y\"}},\"Lake FormationConfiguration\":{\"AuthorizedSessionTagValue\":\"Amazon EMR\"}}}", "CreationDateTime": "2022-06-03T12:52:35.308000-07:00" }

Para obtener información sobre cómo usar un ID externo, consulta Cómo usar un ID externo al conceder acceso a tus AWS recursos a un tercero.

Auditoría

Para supervisar y controlar las acciones que realizan los usuarios finales con los IAM roles, puedes activar la función de identidad de origen. Para obtener más información sobre la identidad de origen, consulte Monitoreo y control de las acciones realizadas con roles asumidos.

Para hacer un seguimiento de la identidad de origen, establezca ApplicationScopedIAMRoleConfiguration/PropagateSourceIdentity en true en la configuración de seguridad de la siguiente manera.

{ "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true, "ApplicationScopedIAMRoleConfiguration":{ "PropagateSourceIdentity":true } } } }

Cuando lo PropagateSourceIdentity configurastrue, Amazon EMR aplica la identidad de origen de las credenciales de llamada a un trabajo o sesión de consulta que crees con el rol de tiempo de ejecución. Si no hay identidad de origen en las credenciales de llamada, Amazon EMR no establece la identidad de origen.

Para usar esta propiedad, proporcione permisos sts:SetSourceIdentity a su perfil de instancia de la siguiente manera.

{ // PropagateSourceIdentity statement "Sid":"PropagateSourceIdentity", "Effect":"Allow", "Action":"sts:SetSourceIdentity", "Resource":[ <runtime-role-ARN> ], "Condition":{ "StringEquals":{ "sts:SourceIdentity":<source-identity> } } }

También debe agregar la instrucción AllowSetSourceIdentity a la política de confianza de sus roles en tiempo de ejecución.

{ // AllowSetSourceIdentity statement "Sid":"AllowSetSourceIdentity", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::<AWS_ACCOUNT_ID>:role/EMR_EC2_DefaultRole" }, "Action":[ "sts:SetSourceIdentity", "sts:AssumeRole" ], "Condition":{ "StringEquals":{ "sts:SourceIdentity":<source-identity> } } }

Consideraciones adicionales

nota

Con la EMR versión de Amazonemr-6.9.0, es posible que se produzcan errores intermitentes al conectarse a EMR los clústeres de Amazon desde SageMaker AI Studio. Si desea solucionar este problema, puede instalar el parche con una acción de arranque al lanzar el clúster. Para obtener más información sobre el parche, consulta los problemas conocidos de la EMR versión 6.9.0 de Amazon.

Además, tenga en cuenta lo siguiente al configurar las funciones de tiempo de ejecución para AmazonEMR.

  • Amazon EMR admite funciones de tiempo de ejecución en todos los anuncios Regiones de AWS.

  • Amazon EMR Steps admite trabajos de Apache Spark y Apache Hive con funciones de tiempo de ejecución cuando usas release emr-6.7.0 o versiones posteriores.

  • SageMaker AI Studio admite consultas de Spark, Hive y Presto con funciones de tiempo de ejecución cuando utilizas release emr-6.9.0 o versiones posteriores.

  • Los siguientes núcleos de cuadernos de SageMaker AI admiten funciones de tiempo de ejecución:

    • DataScience — Núcleo de Python 3

    • DataScience 2.0 — Núcleo de Python 3

    • DataScience 3.0 — Núcleo de Python 3

    • SparkAnalytics 1.0 — SparkMagic y PySpark núcleos

    • SparkAnalytics 2.0 — SparkMagic y núcleos PySpark

    • SparkMagic — núcleo PySpark

  • Amazon EMR admite pasos que se utilizan RunJobFlow únicamente en el momento de la creación del clúster. Esto API no admite los roles de tiempo de ejecución.

  • Amazon EMR no admite funciones de tiempo de ejecución en los clústeres que configuras para que tengan una alta disponibilidad.

  • A partir de la EMR versión 7.5.0 y posteriores de Amazon, los roles de tiempo de ejecución permiten ver Spark y las interfaces de YARN usuario (UIs), como las siguientes: Spark Live UI, Spark History Server y YARN ResourceManager. YARN NodeManager Cuando navegues hasta ellosUIs, aparecerá un mensaje de nombre de usuario y contraseña. Los nombres de usuario y las contraseñas se pueden generar mediante el uso de. EMR GetClusterSessionCredentials API Para obtener más información sobre los detalles de uso delAPI, consulte. GetClusterSessionCredentials

    Un ejemplo de cómo utilizar el EMR GetClusterSessionCredentials API es el siguiente:

    aws emr get-cluster-session-credentials --cluster-id <cluster_ID> --execution-role-arn <IAM_role_arn>
  • Debes evitar los argumentos de tus comandos de Bash cuando ejecutes comandos con el command-runner.jar JAR archivo:

    aws emr add-steps --cluster-id <cluster-id> --steps '[{"Name":"sample-step","ActionOnFailure":"CONTINUE","Jar":"command-runner.jar","Properties":"","Args":["bash","-c","\"aws s3 ls\""],"Type":"CUSTOM_JAR"}]' --execution-role-arn <IAM_ROLE_ARN>
  • Las funciones de tiempo de ejecución no permiten controlar el acceso a los recursos del clúster, como HDFS y. HMS