Configure los permisos para habilitar la publicación y el lanzamiento de aplicaciones de Amazon EMR desde Studio SageMaker - 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.

Configure los permisos para habilitar la publicación y el lanzamiento de aplicaciones de Amazon EMR desde Studio SageMaker

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

Las funciones a las que debe añadir los permisos necesarios dependen de si Studio y sus aplicaciones EMR Serverless residen en la misma AWS cuenta (cuenta única) o en cuentas independientes (cuenta cruzada). Existen dos tipos de roles:

  • Roles de ejecución:

    • Funciones de ejecución en tiempo de ejecución (funciones de control de acceso basadas en roles) utilizadas por EMR Serverless: son las funciones de IAM que utilizan los entornos de ejecución de trabajos sin servidor de EMR para acceder a otros AWS servicios y recursos necesarios durante el tiempo de ejecución, como Amazon S3 para el acceso a los datos, el registro, el acceso al catálogo de datos u otros servicios en función de AWS Glue sus requisitos de carga de trabajo. CloudWatch 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.

    • SageMaker Función de ejecución de IA: la función de ejecución que permite a la SageMaker IA realizar determinadas tareas, como leer datos de buckets de Amazon S3, escribir registros y acceder a otros AWS servicios que su flujo de trabajo pueda necesitar. CloudWatch La función de ejecución de SageMaker IA también tiene el permiso especial denominado iam:PassRole que permite a la SageMaker IA pasar funciones de ejecución temporales en tiempo de ejecución a las aplicaciones EMR Serverless. Estas funciones otorgan a las aplicaciones EMR Serverless los permisos que necesitan para interactuar con otros AWS recursos mientras se ejecutan.

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

    • Estas son las funciones de IAM que la función de ejecución de la SageMaker IA puede asumir para realizar operaciones relacionadas con la gestión de las aplicaciones EMR Serverless. 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 EMR Serverless se encuentran en una cuenta AWS diferente SageMaker a la del dominio de IA. Contar con una función de IAM dedicada a sus aplicaciones EMR Serverless le 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. AWS

Al comprender y configurar estas funciones correctamente, puede asegurarse de que SageMaker Studio tenga los permisos necesarios para interactuar con las aplicaciones EMR Serverless, independientemente de si se implementan en la misma cuenta o en cuentas diferentes.

Cuenta única

Los siguientes diagramas ilustran las funciones y los permisos necesarios para enumerar aplicaciones EMR Serverless desde Studio y conectarse a ellas cuando Studio y las aplicaciones se implementan en la misma cuenta. AWS

El diagrama muestra las funciones y los permisos necesarios para enumerar y conectar aplicaciones EMR Serverless desde Studio cuando Studio y las aplicaciones están en la misma cuenta. AWS

Si sus aplicaciones de Amazon EMR y Studio se implementan en la misma AWS cuenta, siga estos pasos:

  1. Paso 1: recupere el 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: cree 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 AWS Glue datos.

    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.

      { "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: Recupere el ARN del rol de ejecución de SageMaker IA utilizado en su espacio privado.

    Para obtener información sobre los espacios y las funciones de ejecución en la SageMaker IA, consulteDescripción de los permisos y roles de ejecución de espacio de dominio.

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

    nota

    Como alternativa, los usuarios nuevos en la SageMaker IA pueden simplificar su proceso de configuración creando automáticamente una nueva función de ejecución de la SageMaker IA con los permisos adecuados. En este caso, omita los pasos 3 y 4. En su lugar, los usuarios pueden:

    • Elija la opción Configurar para organizaciones al crear un nuevo dominio en el menú Dominio situado en el panel de navegación izquierdo de la consola de SageMaker IA.

    • 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 SageMaker funciones añade automáticamente los permisos necesarios para ejecutar aplicaciones EMR sin servidor y conectarse a ellas a la nueva función de ejecución. Con el administrador de funciones, solo puede asignar una SageMaker función de tiempo de ejecución a la aplicación EMR sin servidor, y la aplicación debe ejecutarse en la misma cuenta en la que está desplegado Studio, mediante una función de ejecución creada en esa misma cuenta.

  4. Paso 4: Adjunte los siguientes permisos al rol de ejecución de SageMaker IA que accede a su aplicación EMR Serverless.

    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. Elija 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:

    Asocie la lista de funciones en tiempo de ejecución a su perfil de usuario o dominio para que pueda examinar visualmente la lista de funciones y seleccionar la que desee utilizar al conectarse a una aplicación EMR Serverless. JupyterLab Puede utilizar la consola de SageMaker IA 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 completa este paso, no podrá conectar un JupyterLab portátil a una aplicación EMR Serverless.

    SageMaker AI console

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

    1. Dirígete a la consola de SageMaker IA en https://console.aws.amazon.com/sagemaker/.

    2. En el panel de navegación izquierdo, elige el dominio y, a continuación, selecciona el dominio mediante la función de ejecución de SageMaker IA cuyos permisos has actualizado.

      • Para añadir tus funciones de tiempo de ejecución a tu dominio: en la pestaña Configuraciones de aplicaciones de la página de detalles del dominio, navega hasta la JupyterLabsección.

      • Para añadir tus funciones de tiempo de ejecución a tu perfil de usuario: en la página de detalles del dominio, selecciona la pestaña Perfiles de usuario y selecciona el perfil de usuario mediante la función de ejecución de SageMaker IA cuyos permisos has actualizado. En la pestaña Configuraciones de aplicaciones, dirígete a la JupyterLabsección.

    3. Elija Editar y añada sus funciones ARNs de ejecución en tiempo de ejecución de EMR Serverless.

    4. Seleccione Submit (Enviar).

    La próxima vez que se conecte a una aplicación EMR Serverless mediante JupyterLab, las funciones de tiempo de ejecución deberían aparecer en un menú desplegable para su selección.

    Python script

    En una JupyterLab aplicación iniciada desde un espacio privado con el rol de ejecución de SageMaker IA cuyos permisos hayas actualizado, ejecuta el siguiente comando en una 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_userprofile) 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_userprofile( 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 las funciones y los permisos necesarios para enumerar aplicaciones EMR Serverless desde Studio y conectarse a ellas cuando Studio y las aplicaciones se implementan en cuentas diferentes. AWS

El diagrama muestra las funciones y los permisos necesarios para enumerar y conectar aplicaciones EMR Serverless desde Studio cuando Studio y las aplicaciones están en cuentas diferentes. AWS

Para obtener más información sobre la creación de un rol en una AWS cuenta, consulte https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html Crear 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 AWS Glue datos.

    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.

      { "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 una cuenta nueva AssumableRole en su AWS cuenta EMR Serverless, 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. Elija 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.

      studio-accountSustitúyala por el ID de cuenta de Studio y AmazonSageMaker-ExecutionRole por la función de ejecución que utilice tu JupyterLab espacio.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account: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 la creación de un rol en una AWS cuenta, consulte Creación de un rol de IAM (consola).

En la cuenta de Studio

En la cuenta en la que está implementado Studio, también conocida como cuenta de confianza, actualice la función de ejecución de SageMaker IA para acceder a sus aplicaciones EMR Serverless con los permisos necesarios para acceder a los recursos de la cuenta de confianza.

  1. Paso 1: recupera el ARN de la función de ejecución de SageMaker IA utilizada en tu espacio.

    Para obtener información sobre los espacios y las funciones de ejecución en la SageMaker IA, consulteDescripción de los permisos y roles de ejecución de espacio de dominio.

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

  2. Paso 2: Adjunte los siguientes permisos al rol de ejecución de SageMaker IA que accede a su aplicación EMR Serverless.

    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. Elija 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.

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

    Asocie la lista de funciones en tiempo de ejecución a su dominio o perfil de usuario para que pueda examinar visualmente la lista de funciones y seleccionar la que desee utilizar al conectarse a una aplicación EMR Serverless. JupyterLab Puede utilizar la consola de SageMaker IA 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 completa este paso, no podrá conectar un JupyterLab portátil a una aplicación EMR Serverless.

    SageMaker AI console

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

    1. Dirígete a la consola de SageMaker IA en https://console.aws.amazon.com/sagemaker/.

    2. En el panel de navegación izquierdo, elige el dominio y, a continuación, selecciona el dominio mediante la función de ejecución de SageMaker IA cuyos permisos has actualizado.

      • Para añadir tus funciones de tiempo de ejecución a tu dominio: en la pestaña Configuraciones de aplicaciones de la página de detalles del dominio, navega hasta la JupyterLabsección.

      • Para añadir tus funciones de tiempo de ejecución a tu perfil de usuario: en la página de detalles del dominio, selecciona la pestaña Perfiles de usuario y selecciona el perfil de usuario mediante la función de ejecución de SageMaker IA cuyos permisos has actualizado. En la pestaña Configuraciones de aplicaciones, dirígete a la JupyterLabsección.

    3. Elija Editar y añada las funciones ARNs de ejecución en tiempo de ejecución de EMR Serverless y su función asumible.

    4. Seleccione Submit (Enviar).

    La próxima vez que se conecte a una aplicación EMR Serverless mediante JupyterLab, las funciones de tiempo de ejecución deberían aparecer en un menú desplegable para su selección.

    Python script

    En una JupyterLab aplicación iniciada desde un espacio privado con el rol de ejecución de SageMaker IA cuyos permisos hayas actualizado, ejecuta el siguiente comando en una 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 de un perfil de usuario (client.update_userprofile) o una configuración de dominio () específica dentro de un dominio de SageMaker IA. client.update_domain 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 JupyterLab aplicación asuma una función de IAM determinada (AssumableRole) para ejecutar aplicaciones EMR Serverless dentro de la cuenta Amazon EMR.

    import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_userprofile( 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 las aplicaciones sin servidor de EMR, lo que incluye enumerar, crear (con las etiquetas de SageMaker IA requeridas), iniciar, detener, obtener detalles, eliminarlas, acceder a los puntos finales de Livy y hacer que los paneles de ejecución de tareas se ejecuten. 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 ListApplications acción en todos los recursos EMR Serverless de la región y la cuenta especificadas. AWS

    • EMRServerlessPassRole: Permite transferir las funciones de tiempo de ejecución especificadas a la AWS cuenta proporcionada, pero solo cuando la función se transfiere a la. emr-serverless.amazonaws.com service

    • EMRServerlessCreateApplicationAction: Permite las TagResource acciones de CreateApplication mano en los recursos de EMR Serverless en la región y cuenta especificadas. AWS 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 UntagResource acciones TagResource y en los recursos sin servidor de EMR en la región y AWS cuenta especificadas si los recursos no tienen establecida ninguna de las claves de etiqueta (sagemaker:domain-arnsagemaker:user-profile-arn, ysagemaker:space-arn) especificadas.

    • 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 IA específicas en las aplicaciones EMR Serverless para garantizar que solo se puedan gestionar los recursos de Amazon EMR Serverless asociados a un dominio, perfil de usuario y espacio de IA SageMaker determinados.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "EMRServerlessListApplications", "Effect": "Allow", "Action": [ "emr-serverless:ListApplications" ], "Resource": "arn:aws:emr-serverless:region:accountID:/*" }, { "Sid": "EMRServerlessPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::accountID: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:region:accountID:/*", "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:region:accountID:/*", "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:region:accountID:/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 otorga permisos para actualizar dominios, perfiles de usuario y espacios de SageMaker IA dentro de la región y cuenta especificadas. AWS

    { "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerUpdateResourcesPolicy", "Effect": "Allow", "Action": [ "sagemaker:UpdateDomain", "sagemaker:UpdateUserprofile", "sagemaker:UpdateSpace" ], "Resource": [ "arn:aws:sagemaker:region>:accountID:domain/*", "arn:aws:sagemaker:region:accountID:user-profile/*" ] } ] }