Configuración de los permisos para habilitar la publicación y la inicialización de aplicaciones de Amazon EMR desde SageMaker Studio - Amazon SageMaker AI

Configuración de los permisos para habilitar la publicación y la inicialización de aplicaciones de Amazon EMR desde SageMaker Studio

En esta sección, detallamos los roles y los permisos necesarios para enumerar las aplicaciones de EMR sin servidor de SageMaker Studio y conectarse a ellas, teniendo en cuenta los escenarios en los que Studio y las aplicaciones de EMR sin servidor se implementan en la misma cuenta de AWS o en cuentas diferentes.

Los roles a los que debe añadir los permisos necesarios dependen de si Studio y sus aplicaciones de EMR sin servidor residen en la misma cuenta de AWS (cuenta única) o en cuentas independientes (entre cuentas). Existen dos tipos de roles:

  • Roles de ejecución:

    • Roles de ejecución en tiempo de ejecución (roles de control de acceso basados en roles) utilizados por EMR sin servidor: son los roles de IAM que utilizan los entornos de ejecución de trabajos de EMR sin servidor para acceder a otros recursos y servicios de AWS necesarios durante el tiempo de ejecución, como Amazon S3 para el acceso a los datos, CloudWatch para el registro, el acceso al Catálogo de datos de AWS Glue u otros servicios en función de sus requisitos de carga de trabajo. Recomendamos crear estos roles en la cuenta en la que se ejecutan las aplicaciones de EMR sin servidor.

      Para obtener más información sobre los roles de tiempo de ejecución, consulte Roles de tiempo de ejecución de trabajos en la Guía del usuario de EMR sin servidor.

      nota

      Puede definir varios roles de RBAC para su aplicación de EMR sin servidor. Estos roles pueden basarse en las responsabilidades y los niveles de acceso que necesitan los diferentes usuarios o grupos de su organización. Para obtener más información sobre los permisos de RBAC, consulte Prácticas recomendadas de seguridad para Amazon EMR sin servidor.

    • Rol de ejecución de SageMaker AI: es el rol de ejecución que permite a SageMaker AI realizar determinadas tareas, como leer datos de buckets de Amazon S3, escribir registros en CloudWatch y acceder a otros servicios de AWS que su flujo de trabajo pueda necesitar. El rol de ejecución de SageMaker AI también tiene el permiso especial denominado iam:PassRole, que permite a SageMaker AI transferir roles de ejecución temporales en tiempo de ejecución a las aplicaciones de EMR sin servidor. Estos roles conceden a las aplicaciones de EMR sin servidor los permisos que necesitan para interactuar con otros recursos de AWS mientras se ejecutan.

  • Roles asumibles (también denominados roles de acceso al servicio):

    • Estos son los roles de IAM que el rol de ejecución de SageMaker AI puede asumir para realizar operaciones relacionadas con la administración de aplicaciones de EMR sin servidor. Estos roles definen los permisos y las políticas de acceso necesarios al enumerar aplicaciones de EMR sin servidor, administrarlas o conectarse a ellas. Por lo general, se utilizan en escenarios entre cuentas, en los que las aplicaciones de EMR sin servidor se encuentran en una cuenta de AWS diferente a la del dominio de SageMaker AI. Contar con un rol de IAM dedicado para sus aplicaciones de EMR sin servidor lo ayuda a seguir el principio de privilegios mínimos y garantiza que Amazon EMR solo tenga los permisos necesarios para ejecutar sus trabajos y, al mismo tiempo, proteger otros recursos de su cuenta de AWS.

Si comprende y configura estos roles correctamente, puede asegurarse de que SageMaker Studio tenga los permisos necesarios para interactuar con las aplicaciones de EMR sin servidor, independientemente de si están implementadas en la misma cuenta o en cuentas diferentes.

Cuenta única

Los siguientes diagramas ilustran los roles y los permisos necesarios para enumerar aplicaciones de EMR sin servidor desde Studio y conectarse a ellas desde Studio cuando las aplicaciones están implementadas en la misma cuenta de AWS.

El diagrama muestra los roles y los permisos necesarios para enumerar aplicaciones de EMR sin servidor y conectarse a ellas desde Studio cuando Studio y las aplicaciones están en la misma cuenta de AWS.

Si sus aplicaciones de Amazon EMR y Studio están implementadas en la misma cuenta de AWS, siga estos pasos:

  1. Paso 1: recuperación del ARN del bucket de Amazon S3 que utiliza para los orígenes de datos y el almacenamiento de datos de salida en la consola de Amazon S3.

    Para aprender a buscar un bucket por su nombre, consulte Acceso y publicación de un bucket de Amazon S3. Para obtener más información sobre la creación de un bucket de Amazon S3, consulte Crear un bucket.

  2. Paso 2: creación de al menos un rol de ejecución en tiempo de ejecución para su aplicación de EMR sin servidor en su cuenta (el EMRServerlessRuntimeExecutionRoleA en el caso de uso Cuenta única anterior). Elija Política de confianza personalizada como entidad de confianza. Añada los permisos que necesite su trabajo. Como mínimo, necesita acceso total a un bucket de Amazon S3 y acceso de creación y lectura al catálogo de datos de AWS Glue.

    Para obtener instrucciones detalladas sobre cómo crear un nuevo rol de ejecución en tiempo de ejecución para sus aplicaciones de EMR sin servidor, siga estos pasos:

    1. Vaya a la consola de IAM.

    2. En el panel de navegación de la izquierda, seleccione Política y, a continuación, Crear política.

    3. Añada los permisos necesarios para su rol de tiempo de ejecución, asigne un nombre a la política y, a continuación, elija Crear política.

      Puede consultar Roles en tiempo de ejecución de trabajo para Amazon EMR sin servidor para ver ejemplos de políticas de tiempo de ejecución para un rol de ejecución de EMR sin servidor.

    4. En el panel de navegación izquierdo, seleccione Roles y, a continuación, Crear rol.

    5. En la página Crear rol, elija la opción Política de confianza personalizada como entidad de confianza.

    6. Pegue el siguiente documento JSON en la sección Política de confianza personalizada y, a continuación, seleccione Siguiente.

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    7. En la página Agregar permisos, seleccione la política que creó anteriormente y elija Siguiente.

    8. En la página Revisar, introduzca un nombre para el rol como EMRServerlessAppRuntimeRoleA y una descripción opcional.

    9. Revise los detalles del rol y seleccione Crear rol.

    Con estos roles, usted y sus compañeros de equipo pueden conectarse a la misma aplicación, y cada uno de ellos utilizará un rol en tiempo de ejecución con permisos que se ajusten a su nivel individual de acceso a los datos.

    nota

    Las sesiones de Spark funcionan de forma diferente. Las sesiones de Spark se aíslan en función del rol de ejecución utilizado de Studio, por lo que los usuarios con diferentes roles de ejecución tendrán sesiones de Spark independientes y aisladas. Además, si ha habilitado la identidad de origen en su dominio, las sesiones de Spark están aún más aisladas en las distintas identidades de origen.

  3. Paso 3: recuperación del ARN del rol de ejecución de SageMaker AI utilizado en su espacio privado.

    Para obtener más información sobre los espacios y los roles de ejecución de SageMaker AI, consulte Descripción de los permisos y roles de ejecución de espacio de dominio.

    Para obtener más información sobre cómo obtener el ARN del rol de ejecución de SageMaker AI, consulte Obtención del rol de ejecución.

    nota

    Como alternativa, los usuarios nuevos de SageMaker AI pueden simplificar el proceso de configuración creando automáticamente un nuevo rol de ejecución de SageMaker AI con los permisos adecuados. En este caso, omita los pasos 3 y 4. En su lugar, los usuarios pueden:

    • Seleccionar la opción Configuración para organizaciones al crear un nuevo dominio en el menú Dominio de la barra de navegación izquierda de la consola de SageMaker AI.

    • Crear un nuevo rol de ejecución desde el menú Administrador de roles de la consola y, a continuación, asociar el rol a un dominio o perfil de usuario existente.

    Al crear el rol, elija la opción Ejecutar aplicaciones de Studio EMR sin servidor en ¿Qué actividades de ML realizarán los usuarios? A continuación, indique el nombre del bucket de Amazon S3 y el rol de ejecución del trabajo en tiempo de ejecución que desea que utilice su aplicación de EMR sin servidor (paso 2).

    El Administrador de roles de SageMaker añade automáticamente los permisos necesarios para ejecutar las aplicaciones de EMR sin servidor y conectarse a ellas para el nuevo rol de ejecución. Con el Administrador de roles de SageMaker, solo puede asignar un rol de tiempo de ejecución a su aplicación de EMR sin servidor y la aplicación debe ejecutarse en la misma cuenta en la que está implementado Studio, utilizando un rol de tiempo de ejecución creado en esa misma cuenta.

  4. Paso 4: asociación de los siguientes permisos al rol de ejecución de SageMaker AI para acceder a la aplicación de EMR sin servidor.

    1. Abra la consola de IAM en https://console.aws.amazon.com/sagemaker/.

    2. Elija Roles y, a continuación, busque su rol de ejecución por su nombre en el campo Buscar. El nombre del rol se encuentra en la última parte del ARN, después de la última barra diagonal (/).

    3. Siga el enlace a su rol.

    4. Elija Agregar permisos y, a continuación, Crear política insertada.

    5. En la pestaña JSON, añada los permisos de Amazon EMR sin servidor que permiten el acceso y las operaciones de EMR sin servidor. Para obtener más información sobre el documento de política, consulte EMR Serverless policies en Políticas de referencia. Sustituya region, accountID y los EMRServerlessAppRuntimeRole pasados por sus valores reales antes de copiar la lista de instrucciones a la política insertada de su rol.

      nota

      Puede incluir en el permiso tantas cadenas de ARN de roles de tiempo de ejecución como necesite, separándolas con comas.

    6. Elija Siguiente y, a continuación, proporcione un Nombre de política.

    7. Seleccione Crear política.

    8. Repita el paso Crear política insertada para añadir otra política insertada que conceda al rol permisos para actualizar los dominios, los perfiles de usuario y los espacios. Para obtener más información sobre el documento de la política SageMakerUpdateResourcesPolicy, consulte Domain, user profile, and space update actions policy en Políticas de referencia. Sustituya region y accountID por sus valores reales antes de copiar la lista de instrucciones a la política insertada de su rol.

  5. Paso 5:

    asociación de la lista de roles en tiempo de ejecución a su perfil de usuario o dominio para que pueda navegar visualmente por la lista de roles y seleccionar el que desee utilizar al conectarse a una aplicación de EMR sin servidor desde JupyterLab. Puede utilizar la consola de SageMaker AI o el siguiente script. Posteriormente, todos los trabajos de Apache Spark o Apache Hive creados desde su cuaderno accederán únicamente a los datos y recursos permitidos por las políticas asociadas al rol de tiempo de ejecución seleccionado.

    importante

    Si no realiza este paso, no podrá conectar un cuaderno de JupyterLab a una aplicación de EMR sin servidor.

    SageMaker AI console

    Para asociar sus roles de tiempo de ejecución a su perfil de usuario o dominio mediante la consola de SageMaker AI:

    1. Vaya a la consola de SageMaker AI en https://console.aws.amazon.com/sagemaker/.

    2. En el panel de navegación izquierdo, seleccione dominio y luego seleccione el dominio utilizando el rol de ejecución de SageMaker AI cuyos permisos ha actualizado.

      • Para añadir sus roles de tiempo de ejecución a su dominio: en la pestaña Configuraciones de aplicaciones de la página de Detalles del dominio, vaya a la sección JupyterLab.

      • Para añadir sus roles de tiempo de ejecución a su perfil de usuario: en la página Detalles del dominio, elija la pestaña Perfiles de usuario y seleccione el perfil de usuario mediante el rol de ejecución de SageMaker AI cuyos permisos ha actualizado. En la pestaña Configuraciones de aplicaciones, vaya a la sección JupyterLab.

    3. Elija Editar y añada los ARN de sus roles de ejecución en tiempo de ejecución de EMR sin servidor.

    4. Elija Enviar.

    La próxima vez que se conecte a una aplicación de EMR sin servidor a través de JupyterLab, los roles de tiempo de ejecución deberían aparecer en un menú desplegable para que pueda seleccionarlos.

    Python script

    En una aplicación de JupyterLab iniciada desde un espacio privado con el rol de ejecución de SageMaker AI cuyos permisos ha actualizado, ejecute el siguiente comando en un terminal. Sustituya domainID, user-profile-name, studio-accountID y EMRServerlessRuntimeExecutionRole por sus valores adecuados. Este fragmento de código actualiza la configuración del perfil de usuario para un perfil de usuario (client.update_user_profile) o una configuración de dominio (client.update_domain) específicos y asocia específicamente los roles de ejecución en tiempo de ejecución de EMR sin servidor que creó anteriormente.

    import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_user_profile( DomainId="domainID", UserProfileName="user-profile-name", DefaultUserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'ExecutionRoleArns': ["arn:aws:iam::studio-accountID:role/EMRServerlessRuntimeExecutionRoleA", "arn:aws:iam::studio-accountID:role/EMRServerlessRuntimeExecutionRoleAA"] } } }) resp = client.describe_domain(DomainId="domainID") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))

Entre cuentas

Los siguientes diagramas ilustran los roles y los permisos necesarios para enumerar aplicaciones de EMR sin servidor desde Studio y conectarse a ellas cuando Studio y las aplicaciones están implementados en cuentas diferentes cuentas de AWS.

El diagrama muestra los roles y los permisos necesarios para enumerar aplicaciones de EMR sin servidor y conectarse a ellas desde Studio cuando Studio y las aplicaciones están en cuentas de AWS diferentes.

Para obtener más información sobre cómo crear un rol en una cuenta de AWS, consulte https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html Creación de un rol de IAM (consola).

Antes de comenzar:

Si las aplicaciones de EMR sin servidor y Studio están implementadas en cuentas de AWS diferentes, debe configurar los permisos en ambas cuentas.

Cuenta de EMR sin servidor

Siga estos pasos para crear los roles y políticas necesarios en la cuenta en la que se ejecuta la aplicación de EMR sin servidor, también conocida como cuenta de confianza:

  1. Paso 1: cree al menos un rol de ejecución de trabajos en tiempo de ejecución para su aplicación de EMR sin servidor en su cuenta (el EMRServerlessRuntimeExecutionRoleB en el diagrama Entre cuentas anterior). Elija Política de confianza personalizada como entidad de confianza. Añada los permisos que necesite su trabajo. Como mínimo, necesita acceso total a un bucket de Amazon S3 y acceso de creación y lectura al catálogo de datos de AWS Glue.

    Para obtener instrucciones detalladas sobre cómo crear un nuevo rol de ejecución en tiempo de ejecución para sus aplicaciones de EMR sin servidor, siga estos pasos:

    1. Vaya a la consola de IAM.

    2. En el panel de navegación de la izquierda, seleccione Política y, a continuación, Crear política.

    3. Añada los permisos necesarios para su rol de tiempo de ejecución, asigne un nombre a la política y, a continuación, elija Crear política.

      Para ver ejemplos de políticas de tiempo de ejecución de un rol de tiempo de ejecución de EMR sin servidor, consulte Roles en tiempo de ejecución de trabajo para Amazon EMR sin servidor.

    4. En el panel de navegación izquierdo, seleccione Roles y, a continuación, Crear rol.

    5. En la página Crear rol, elija la opción Política de confianza personalizada como entidad de confianza.

    6. Pegue el siguiente documento JSON en la sección Política de confianza personalizada y, a continuación, seleccione Siguiente.

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    7. En la página Agregar permisos, seleccione la política que creó anteriormente y elija Siguiente.

    8. En la página Revisar, introduzca un nombre para el rol como EMRServerlessAppRuntimeRoleB y una descripción opcional.

    9. Revise los detalles del rol y seleccione Crear rol.

    Con estos roles, usted y sus compañeros de equipo pueden conectarse a la misma aplicación, y cada uno de ellos utilizará un rol en tiempo de ejecución con permisos que se ajusten a su nivel individual de acceso a los datos.

    nota

    Las sesiones de Spark funcionan de forma diferente. Las sesiones de Spark se aíslan en función del rol de ejecución utilizado en Studio, por lo que los usuarios con diferentes roles de ejecución tendrán sesiones de Spark independientes y aisladas. Además, si ha habilitado la identidad de origen en su dominio, las sesiones de Spark están aún más aisladas en las distintas identidades de origen.

  2. Paso 2: creación de un rol de IAM personalizado denominado AssumableRole con la siguiente configuración:

    • Permisos: conceda los permisos necesarios (políticas de Amazon EMR sin servidor) al AssumableRole para permitir el acceso a los recursos de EMR sin servidor. Este rol se conoce también como rol de acceso.

    • Relación de confianza: configure la política de confianza AssumableRole para poder asumir el rol de ejecución (el SageMakerExecutionRole en el diagrama Entre cuentas) desde la cuenta de Studio a la que se requiere acceso.

    Al asumir el rol, Studio puede obtener acceso temporal a los permisos que necesita en la cuenta de EMR sin servidor.

    Para obtener instrucciones detalladas sobre cómo crear un AssumableRole nuevo en su cuenta de AWS de EMR sin servidor, siga estos pasos:

    1. Vaya a la consola de IAM.

    2. En el panel de navegación de la izquierda, seleccione Política y, a continuación, Crear política.

    3. En la pestaña JSON, añada los permisos de Amazon EMR sin servidor que permiten el acceso y las operaciones de EMR sin servidor. Para obtener más información sobre el documento de política, consulte EMR Serverless policies en Políticas de referencia. Sustituya region, accountID y los EMRServerlessAppRuntimeRole pasados por sus valores reales antes de copiar la lista de instrucciones a la política insertada de su rol.

      nota

      Este EMRServerlessAppRuntimeRole es el rol de ejecución en tiempo de ejecución del trabajo creado en el paso 1 (el EMRServerlessAppRuntimeRoleB en el diagrama Entre cuentas anterior). Puede incluir en el permiso tantas cadenas de ARN de roles de tiempo de ejecución como necesite, separándolas con comas.

    4. Elija Siguiente y, a continuación, proporcione un Nombre de política.

    5. Seleccione Crear política.

    6. En el panel de navegación izquierdo, seleccione Roles y, a continuación, Crear rol.

    7. En la página Crear rol, elija la opción Política de confianza personalizada como entidad de confianza.

    8. Pegue el siguiente documento JSON en la sección Política de confianza personalizada y, a continuación, seleccione Siguiente.

      Sustituya studio-account por el ID de cuenta de Studio y AmazonSageMaker-ExecutionRole por el rol de ejecución que se utiliza en su espacio de JupyterLab.

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole" }, "Action": "sts:AssumeRole" } ] }
    9. En la página Agregar permisos, añada el permiso EMRServerlessAppRuntimeRoleB que ha creado en el paso 2 y, a continuación, seleccione Siguiente.

    10. En la página Revisar, introduzca un nombre para el rol como AssumableRole y una descripción opcional.

    11. Revise los detalles del rol y seleccione Crear rol.

    Para obtener más información sobre cómo crear un rol en una cuenta de AWS, consulte Creación de un rol de IAM (consola).

Cuenta de Studio

En la cuenta en la que está implementado Studio, también denominada cuenta de confianza, actualice el rol de ejecución de SageMaker AI para acceder a sus aplicaciones de EMR sin servidor con los permisos necesarios para acceder a los recursos de la cuenta de confianza.

  1. Paso 1: recupere el ARN del rol de ejecución de SageMaker AI utilizado por su espacio.

    Para obtener más información sobre los espacios y los roles de ejecución de SageMaker AI, consulte Descripción de los permisos y roles de ejecución de espacio de dominio.

    Para obtener más información sobre cómo obtener el ARN del rol de ejecución de SageMaker AI, consulte Obtención del rol de ejecución.

  2. Paso 2: asociación de los siguientes permisos al rol de ejecución de SageMaker AI para acceder a la aplicación de EMR sin servidor.

    1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

    2. Elija Roles y, a continuación, busque su rol de ejecución por su nombre en el campo Buscar. El nombre del rol se encuentra en la última parte del ARN, después de la última barra diagonal (/).

    3. Siga el enlace a su rol.

    4. Elija Agregar permisos y, a continuación, Crear política insertada.

    5. En la pestaña JSON, añada la política insertada que concede al rol permisos para actualizar los dominios, los perfiles de usuario y los espacios. Para obtener más información sobre el documento de la política SageMakerUpdateResourcesPolicy, consulte Domain, user profile, and space update actions policy en Políticas de referencia. Sustituya region y accountID por sus valores reales antes de copiar la lista de instrucciones a la política insertada de su rol.

    6. Elija Siguiente y, a continuación, proporcione un Nombre de política.

    7. Seleccione Crear política.

    8. Repita el paso Crear una política insertada para añadir otra política que conceda al rol de ejecución los permisos para asumir el AssumableRole y luego realice las acciones permitidas por la política de acceso del rol.

      Sustituya emr-account por el ID de cuenta Amazon EMR sin servidor y AssumableRole por el nombre del rol asumible creado en la cuenta de Amazon EMR sin servidor.

      JSON
      { "Version": "2012-10-17", "Statement": { "Sid": "AllowSTSToAssumeAssumableRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/AssumableRole" } }
  3. Paso 3:

    asocie la lista de roles en tiempo de ejecución a su dominio o perfil de usuario para que pueda navegar visualmente por la lista de roles y seleccionar el que desee utilizar al conectarse a una aplicación de EMR sin servidor desde JupyterLab. Puede utilizar la consola de SageMaker AI o el siguiente script. Posteriormente, todos los trabajos de Apache Spark o Apache Hive creados desde su cuaderno accederán únicamente a los datos y recursos permitidos por las políticas asociadas al rol de tiempo de ejecución seleccionado.

    importante

    Si no realiza este paso, no podrá conectar un cuaderno de JupyterLab a una aplicación de EMR sin servidor.

    SageMaker AI console

    Para asociar sus roles de tiempo de ejecución a su perfil de usuario o dominio mediante la consola de SageMaker AI:

    1. Vaya a la consola de SageMaker AI en https://console.aws.amazon.com/sagemaker/.

    2. En el panel de navegación izquierdo, seleccione dominio y luego seleccione el dominio utilizando el rol de ejecución de SageMaker AI cuyos permisos ha actualizado.

      • Para añadir sus roles de tiempo de ejecución a su dominio: en la pestaña Configuraciones de aplicaciones de la página de Detalles del dominio, vaya a la sección JupyterLab.

      • Para añadir sus roles de tiempo de ejecución a su perfil de usuario: en la página Detalles del dominio, elija la pestaña Perfiles de usuario y seleccione el perfil de usuario mediante el rol de ejecución de SageMaker AI cuyos permisos ha actualizado. En la pestaña Configuraciones de aplicaciones, vaya a la sección JupyterLab.

    3. Elija Editar y añada los ARN de su rol asumible y de los roles de ejecución en tiempo de ejecución de EMR sin servidor.

    4. Elija Enviar.

    La próxima vez que se conecte a una aplicación de EMR sin servidor a través de JupyterLab, los roles de tiempo de ejecución deberían aparecer en un menú desplegable para que pueda seleccionarlos.

    Python script

    En una aplicación de JupyterLab iniciada desde un espacio privado con el rol de ejecución de SageMaker AI cuyos permisos ha actualizado, ejecute el siguiente comando en un terminal. Sustituya domainID, user-profile-name, studio-accountID y EMRServerlessRuntimeExecutionRole por sus valores adecuados. Este fragmento de código actualiza la configuración del perfil de usuario para un perfil de usuario (client.update_user_profile) o una configuración de dominio (client.update_domain) específicos dentro de un dominio de SageMaker AI. En concreto, establece los roles de ejecución en tiempo de ejecución para Amazon EMR sin servidor, que ha creado anteriormente. También permite que la aplicación de JupyterLab asuma un rol de IAM determinado (AssumableRole) para ejecutar aplicaciones de EMR sin servidor dentro de la cuenta de Amazon EMR.

    import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_user_profile( DomainId="domainID", UserProfileName="user-profile-name", DefaultUserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"], 'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServerlessRuntimeExecutionRoleA", "arn:aws:iam::emr-accountID:role/AnotherRuntimeExecutionRole"] } } }) resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))

Políticas de referencia

  • Políticas de EMR sin servidor: esta política permite administrar aplicaciones de EMR sin servidor, lo que incluye enumerar, crear (con las etiquetas de SageMaker AI requeridas), iniciar, detener, obtener detalles, eliminar, acceder a puntos de conexión de Livy y obtener paneles de ejecución de trabajos. También permite transferir al servicio el rol de tiempo de ejecución de la aplicación de EMR sin servidor requerida.

    • EMRServerlessListApplications: permite la acción ListApplications en todos los recursos de EMR sin servidor de la región y cuenta de AWS especificadas.

    • EMRServerlessPassRole: permite transferir los roles de tiempo de ejecución especificados a la cuenta de AWS proporcionada, pero solo cuando el rol se transfiere a emr-serverless.amazonaws.com service.

    • EMRServerlessCreateApplicationAction: permite las acciones CreateApplication y TagResource en los recursos de EMR sin servidor de la región y la cuenta de AWS especificadas. Sin embargo, requiere que los recursos que se están creando o etiquetando tengan claves de etiqueta específicas (sagemaker:domain-arn, sagemaker:user-profile-arn y sagemaker:space-arn) con valores no nulos.

    • EMRServerlessDenyTaggingAction: las acciones TagResource y UntagResource en los recursos sin servidor de EMR en la región y la cuenta de AWS especificadas si los recursos no tienen establecida ninguna de las claves de etiqueta (sagemaker:domain-arn, sagemaker:user-profile-arn y sagemaker:space-arn).

    • EMRServerlessActions: permite diversas acciones (StartApplication, StopApplication, GetApplication, DeleteApplication, AccessLivyEndpoints y GetDashboardForJobRun) en los recursos de EMR sin servidor, pero solo si los recursos tienen establecidas las claves de etiqueta especificadas (sagemaker:domain-arn, sagemaker:user-profile-arn y sagemaker:space-arn) con valores no nulos.

    La política de IAM definida en el documento JSON proporcionado concede esos permisos, pero limita ese acceso a la presencia de etiquetas de SageMaker AI específicas en las aplicaciones de EMR sin servidor para garantizar que solo se puedan administrar los recursos de Amazon EMR sin servidor asociados a un dominio, perfil de usuario y espacio de SageMaker AI determinados.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Sid": "EMRServerlessListApplications", "Effect": "Allow", "Action": [ "emr-serverless:ListApplications" ], "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/*" }, { "Sid": "EMRServerlessPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/EMRServerlessAppRuntimeRole", "Condition": { "StringLike": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } }, { "Sid": "EMRServerlessCreateApplicationAction", "Effect": "Allow", "Action": [ "emr-serverless:CreateApplication", "emr-serverless:TagResource" ], "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "sagemaker:domain-arn", "sagemaker:user-profile-arn", "sagemaker:space-arn" ] }, "Null": { "aws:RequestTag/sagemaker:domain-arn": "false", "aws:RequestTag/sagemaker:user-profile-arn": "false", "aws:RequestTag/sagemaker:space-arn": "false" } } }, { "Sid": "EMRServerlessDenyTaggingAction", "Effect": "Deny", "Action": [ "emr-serverless:TagResource", "emr-serverless:UntagResource" ], "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/*", "Condition": { "Null": { "aws:ResourceTag/sagemaker:domain-arn": "true", "aws:ResourceTag/sagemaker:user-profile-arn": "true", "aws:ResourceTag/sagemaker:space-arn": "true" } } }, { "Sid": "EMRServerlessActions", "Effect": "Allow", "Action": [ "emr-serverless:StartApplication", "emr-serverless:StopApplication", "emr-serverless:GetApplication", "emr-serverless:DeleteApplication", "emr-serverless:AccessLivyEndpoints", "emr-serverless:GetDashboardForJobRun" ], "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/applications/*", "Condition": { "Null": { "aws:ResourceTag/sagemaker:domain-arn": "false", "aws:ResourceTag/sagemaker:user-profile-arn": "false", "aws:ResourceTag/sagemaker:space-arn": "false" } } } ] }
  • Política de acciones de actualización de dominios, perfiles de usuario y espacios: la siguiente política concede permisos para actualizar los dominios, perfiles de usuario y espacios de SageMaker AI dentro de la región y la cuenta de AWS especificadas.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerUpdateResourcesPolicy", "Effect": "Allow", "Action": [ "sagemaker:UpdateDomain", "sagemaker:UpdateUserprofile", "sagemaker:UpdateSpace" ], "Resource": [ "arn:aws:sagemaker:us-east-1:111122223333:domain/*", "arn:aws:sagemaker:us-east-1:111122223333:user-profile/*" ] } ] }