Conexión a un clúster de Amazon EMR desde su cuaderno - Amazon SageMaker AI

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.

Conexión a un clúster de Amazon EMR desde su cuaderno

Si se conecta a un clúster de Amazon EMR desde su cuaderno de Jupyter en Studio, es posible que tenga que realizar una configuración adicional. En concreto, en el siguiente análisis se abordan dos cuestiones:

  • Pasar parámetros al comando de conexión de Amazon EMR. En los SparkMagic núcleos, es posible que los parámetros que transfiera al comando de conexión de Amazon EMR no funcionen según lo esperado debido a las diferencias en la forma en que Papermill pasa los parámetros y SparkMagic en la forma en que los recibe. La solución alternativa para resolver esta limitación consiste en pasar los parámetros como variables de entorno. Para obtener más información sobre el problema y la solución alternativa, consulte Pasar parámetros al comando de conexión de Amazon EMR.

  • Pasar las credenciales de usuario a clústeres de Amazon EMR autenticados por Kerberos, LDAP o HTTP Basic Auth. En el modo interactivo, Studio solicita las credenciales en un formulario emergente en el que puede ingresar sus credenciales de inicio de sesión. En su cuaderno programado no interactivo, debe pasarlas a través de AWS Secrets Manager. Para obtener más información sobre cómo utilizarlos AWS Secrets Manager en las tareas programadas de su portátil, consulte. Pasar las credenciales de usuario a clústeres de Amazon EMR autenticados por Kerberos, LDAP o HTTP Basic Auth

Pasar parámetros al comando de conexión de Amazon EMR

Si utiliza imágenes con los núcleos SparkMagic PySpark y Spark y desea parametrizar el comando de conexión EMR, introduzca los parámetros en el campo Variables de entorno en lugar de en el campo Parámetros del formulario Crear trabajo (en el menú desplegable Opciones adicionales). Asegúrese de que el comando de conexión de EMR del cuaderno de Jupyter pase estos parámetros como variables de entorno. Por ejemplo, supongamos que pasa cluster-id como variable de entorno al crear el trabajo. El comando de conexión de EMR debería ser similar a lo siguiente:

%%local import os
%sm_analytics emr connect —cluster-id {os.getenv('cluster_id')} --auth-type None

Necesita esta solución alternativa para cumplir con los requisitos de Papermill. SparkMagic En segundo plano, el SparkMagic núcleo espera que el comando %%local mágico acompañe a cualquier variable local que defina. Sin embargo, Papermill no ejecuta el comando mágico %%local con sus anulaciones. Para evitar esta limitación de Papermill, debe proporcionar sus parámetros como variables de entorno en el campo Variables de entorno.

Pasar las credenciales de usuario a clústeres de Amazon EMR autenticados por Kerberos, LDAP o HTTP Basic Auth

Para establecer una conexión segura a un clúster de Amazon EMR que utilice la autenticación básica Kerberos, LDAP o HTTP, utilice el comando AWS Secrets Manager to pass user credentials to your connection. Para obtener información sobre cómo crear un secreto en Secrets Manager, consulte Creación de un secreto de AWS Secrets Manager. El secreto debe contener un nombre de usuario y una contraseña. El secreto se pasa con el argumento --secrets, tal como se muestra en el siguiente ejemplo:

%sm_analytics emr connect --cluster-id j_abcde12345 --auth Kerberos --secret aws_secret_id_123

El administrador puede configurar una política de acceso flexible mediante un método attribute-based-access-control (ABAC), que asigna el acceso en función de etiquetas especiales. Puede configurar un acceso flexible para crear un secreto único para todos los usuarios de la cuenta o un secreto para cada usuario. Los siguientes ejemplos de código muestran estos escenarios:

Crear un secreto único para todos los usuarios de la cuenta

{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : {"AWS" : "arn:aws:iam::AWS_ACCOUNT_ID:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"}, "Action" : "secretsmanager:GetSecretValue", "Resource" : [ "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes123-1a2b3c", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes456-4d5e6f", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes789-7g8h9i" ] } ] }

Crear un secreto diferente para cada usuario

Puede crear un secreto diferente para cada usuario con la etiqueta PrincipleTag, como se muestra en el ejemplo siguiente:

{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : {"AWS" : "arn:aws:iam::AWS_ACCOUNT_ID:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"}, "Condition" : { "StringEquals" : { "aws:ResourceTag/user-identity": "${aws:PrincipalTag/user-identity}" } }, "Action" : "secretsmanager:GetSecretValue", "Resource" : [ "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes123-1a2b3c", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes456-4d5e6f", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes789-7g8h9i" ] } ] }