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

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.

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

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

Las funciones a las que debes añadir los permisos necesarios dependen de si Studio y tus aplicaciones EMR sin servidor residen en la misma AWS cuenta (cuenta única) o en cuentas independientes (cuenta cruzada). Hay dos tipos de funciones implicadas:

  • Funciones de ejecución:

    • Funciones de ejecución en tiempo de ejecución (funciones de control de acceso basadas en funciones) utilizadas por EMR Serverless: son las IAM funciones que utilizan los entornos de ejecución de trabajos EMR sin servidor 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, CloudWatch el acceso al catálogo de AWS Glue datos 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 EMR sin servidor.

      Para obtener más información sobre las funciones en tiempo de ejecución, consulte Funciones en tiempo de ejecución de Job en la Guía del usuario de EMR Serverless.

      nota

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

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

  • Funciones asumibles (también denominadas funciones de acceso al servicio):

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

Si entiendes y configuras estas funciones correctamente, puedes asegurarte de que SageMaker Studio tiene los permisos necesarios para interactuar con las aplicaciones EMR sin servidor, independientemente de si están implementadas en la misma cuenta o en cuentas diferentes.

Cuenta única

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

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

Si tus EMR aplicaciones de Amazon y Studio están desplegadas en la misma AWS cuenta, sigue estos pasos:

  1. Paso 1: Recupere el bucket ARN de Amazon S3 que utiliza para las fuentes de datos y almacene los datos de salida en la consola de Amazon S3.

    Para obtener información sobre cómo encontrar un bucket por su nombre, consulte Acceder a un bucket de Amazon S3 y publicarlo. Para obtener información sobre cómo crear un bucket de Amazon S3, consulte Creación de un bucket.

  2. Paso 2: Cree al menos un rol de ejecución de tareas en tiempo de ejecución para su aplicación EMR sin servidor en su cuenta (el EMRServerlessRuntimeExecutionRoleA diagrama de casos de uso de una sola cuenta que se muestra arriba). Elija la política de confianza personalizada como entidad de confianza. Añada los permisos necesarios para 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 una nueva función de ejecución en tiempo de ejecución para sus aplicaciones EMR sin servidor, siga estos pasos:

    1. Vaya a la consola de IAM.

    2. En el panel de navegación izquierdo, selecciona Política y, a continuación, Crear política.

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

      Puede consultar Funciones de tiempo de ejecución de Job para EMR Serverless para encontrar ejemplos de políticas de tiempo de ejecución para un rol de tiempo de ejecución de EMR Serverless.

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

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

    6. Pegue el siguiente JSON documento 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 Añadir permisos, añade la política que has creado y, a continuación, selecciona Siguiente.

    8. En la página de revisión, introduzca un nombre para el rol, por ejemplo, EMRServerlessAppRuntimeRoleA y una descripción opcional.

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

    Con estos roles, tú y tus compañeros de equipo podéis conectaros a la misma aplicación, y cada uno de ellos utilizará un rol en tiempo de ejecución con permisos que se ajusten a vuestro 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 has activado la identidad de origen en tu dominio, las sesiones de Spark están aún más aisladas según las distintas identidades de origen.

  3. Paso 3: recupera la función ARN de SageMaker ejecución utilizada en tu espacio privado.

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

    Para obtener más información sobre cómo recuperar la función ARN SageMaker de ejecución de of, consulteConsiga su función de ejecución.

    nota

    Como alternativa, los usuarios nuevos SageMaker pueden simplificar su proceso de configuración creando automáticamente un nuevo rol de SageMaker ejecución 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 del panel de navegación izquierdo de la SageMakerconsola.

    • Cree un nuevo rol de ejecución desde el menú del administrador de roles de la consola y, a continuación, asocie el rol a un dominio o perfil de usuario existente.

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

    El administrador de roles añade automáticamente al nuevo SageMaker rol de ejecución los permisos necesarios para ejecutar aplicaciones EMR sin servidor y conectarse a ellas. Con el administrador de roles, solo puede asignar un SageMaker rol de tiempo de ejecución a su aplicación 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: Adjunta los siguientes permisos a la función de SageMaker ejecución que accede a la aplicación sin servidor. EMR

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

    2. Elija Funciones y, a continuación, busque su función de ejecución por su nombre en el campo de búsqueda. El nombre del rol es la última parte deARN, después de la última barra diagonal (/).

    3. Sigue el enlace hasta tu función.

    4. Selecciona Añadir permisos y, a continuación, Crear política en línea.

    5. En la JSONpestaña, añada los permisos de Amazon EMR Serverless que permiten el acceso y las EMR operaciones sin servidor. Para obtener más información sobre el documento de política, consulte las políticas EMRsin servidor en. Políticas de referencia Sustituya el region, accountID, y pasó EMRServerlessAppRuntimeRole(s) con sus valores reales antes de copiar la lista de declaraciones a la política en línea de su función.

      nota

      Puede incluir tantas ARN cadenas de funciones en tiempo de ejecución como necesite en el permiso, 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 una política en línea para agregar otra política en línea que otorgue al rol permisos para actualizar los dominios, los perfiles de usuario y los espacios. Para obtener más información sobre el documento SageMakerUpdateResourcesPolicy de política, consulte la política de acciones de actualización de dominios, perfiles de usuario y espacios en. Políticas de referencia Sustituya el region y accountID con sus valores reales antes de copiar la lista de declaraciones a la política en línea de su función.

  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 sin servidor. JupyterLab Puede utilizar la SageMaker consola o el siguiente script. Posteriormente, todos los trabajos de Apache Spark o Apache Hive creados desde su portátil accederán únicamente a los datos y recursos permitidos por las políticas asociadas a la función de ejecución seleccionada.

    importante

    Si no completa este paso, no podrá conectar un JupyterLab portátil a una aplicación EMR sin servidor.

    SageMaker console

    Para asociar tus funciones de tiempo de ejecución a tu perfil de usuario o dominio mediante la SageMaker consola:

    1. Navegue hasta la SageMaker consola 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 el rol de SageMaker ejecución cuyos permisos has actualizado.

      • Para añadir sus funciones 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 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 SageMaker ejecución cuyos permisos has actualizado. En la pestaña Configuraciones de aplicaciones, navegue hasta la JupyterLabsección.

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

    4. Elija Enviar.

    La próxima vez que te conectes a una aplicación EMR sin servidor mediante JupyterLab, los roles 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 SageMaker ejecución cuyos permisos has actualizado, ejecuta el siguiente comando en una terminal. Sustituya los valores domainID user-profile-namestudio-accountID,, y EMRServerlessRuntimeExecutionRole (s) 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 () específicos, asociando específicamente las funciones de ejecución en tiempo de ejecución EMR sin servidor que haya creado anteriormente. client.update_domain

    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))

Cuenta cruzada

Los siguientes diagramas ilustran las funciones y los permisos necesarios para enumerar aplicaciones EMR sin servidor y conectarse a ellas desde Studio 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 sin servidor 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, consulta https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html Crear un IAM rol (consola).

Antes de comenzar:

Si sus aplicaciones EMR sin servidor y Studio se implementan en AWS cuentas independientes, debe configurar los permisos en ambas cuentas.

En la cuenta EMR Serverless

Siga estos pasos para crear las funciones y políticas necesarias en la cuenta en la que se ejecuta la aplicación EMR Serverless, también conocida como cuenta de confianza:

  1. Paso 1: Cree al menos una función de ejecución de tareas en tiempo de ejecución para su aplicación EMR sin servidor en su cuenta (como se muestra EMRServerlessRuntimeExecutionRoleB en el diagrama de cuentas cruzadas anterior). Elija la política de confianza personalizada como entidad de confianza. Añada los permisos necesarios para 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 una nueva función de ejecución en tiempo de ejecución para sus aplicaciones EMR sin servidor, siga estos pasos:

    1. Vaya a la consola de IAM.

    2. En el panel de navegación izquierdo, selecciona Política y, a continuación, Crear política.

    3. Agregue los permisos necesarios para su función 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 EMR sin servidor, consulte Funciones de tiempo de ejecución de Job para Amazon EMR Serverless.

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

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

    6. Pegue el siguiente JSON documento 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 Añadir permisos, añade la política que has creado y, a continuación, selecciona Siguiente.

    8. En la página de revisión, introduzca un nombre para el rol, por ejemplo, EMRServerlessAppRuntimeRoleB y una descripción opcional.

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

    Con estos roles, tú y tus compañeros de equipo podéis conectaros a la misma aplicación, y cada uno de ellos utilizará un rol en tiempo de ejecución con permisos que se ajusten a vuestro 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 has activado la identidad de origen en tu dominio, las sesiones de Spark están aún más aisladas según las distintas identidades de origen.

  2. Paso 2: Crea un IAM rol personalizado AssumableRole con el nombre de la siguiente configuración:

    • Permisos: conceda los permisos necesarios (políticas de Amazon EMR Serverless) para permitir el acceso AssumableRole a los recursos de EMR Serverless. Esta función también se conoce como función de acceso.

    • Relación de confianza: configure la política de confianza AssumableRole para que pueda asumir la función de ejecución (la que aparece SageMakerExecutionRole en el diagrama multicuenta) 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 EMR Serverless.

    Para obtener instrucciones detalladas sobre cómo crear una cuenta nueva AssumableRole en tu AWS cuenta EMR Serverless, sigue estos pasos:

    1. Vaya a la consola de IAM.

    2. En el panel de navegación izquierdo, selecciona Política y, a continuación, Crear política.

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

      nota

      EMRServerlessAppRuntimeRoleEsta es la función de ejecución del trabajo en tiempo de ejecución creada en el paso 1 (el EMRServerlessAppRuntimeRoleB diagrama de cuentas cruzadas anterior). Puede incluir en el permiso tantas ARN cadenas de funciones en 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, elija Funciones y, a continuación, Crear función.

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

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

      studio-accountSustitúyalo por el ID de cuenta de Studio y AmazonSageMaker-ExecutionRole por el rol 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 Añadir permisos, añade el permiso EMRServerlessAppRuntimeRoleB que creaste en el paso 2 y, a continuación, selecciona Siguiente.

    10. En la página de revisión, introduzca un nombre para el rol, por ejemplo, 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 Crear un IAM rol (consola).

En la cuenta de Studio

En la cuenta en la que está desplegado Studio, también conocida como cuenta de confianza, actualiza la función de SageMaker ejecución para acceder a las aplicaciones EMR sin servidor con los permisos necesarios para acceder a los recursos de la cuenta de confianza.

  1. Paso 1: recupera la función ARN de SageMaker ejecución que utiliza tu espacio.

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

    Para obtener más información sobre cómo recuperar la función ARN SageMaker de ejecución de of, consulteConsiga su función de ejecución.

  2. Paso 2: Adjunte los siguientes permisos a la función de SageMaker ejecución que accede a su aplicación EMR sin servidor.

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

    2. Elija Funciones y, a continuación, busque su función de ejecución por su nombre en el campo de búsqueda. El nombre del rol es la última parte deARN, después de la última barra diagonal (/).

    3. Sigue el enlace hasta tu función.

    4. Selecciona Añadir permisos y, a continuación, Crear política en línea.

    5. En la JSONpestaña, agrega la política en línea que otorga al rol permisos para actualizar los dominios, los perfiles de usuario y los espacios. Para obtener más información sobre el documento SageMakerUpdateResourcesPolicy de política, consulte la política de acciones de actualización de dominios, perfiles de usuario y espacios enPolíticas de referencia. Sustituya las accountID letras region y por sus valores reales antes de copiar la lista de sentencias a la política integrada de su función.

    6. Seleccione Siguiente y, a continuación, proporcione un nombre de política.

    7. Elija Crear política.

    8. Repita el paso Crear una política en línea para agregar otra política que conceda al rol de ejecución los permisos para asumir las acciones permitidas por la política de acceso de la función AssumableRole y, a continuación, realizar las acciones permitidas por ella.

      emr-accountSustitúyalo por el ID de cuenta de Amazon EMR Serverless y AssumableRole por el nombre del rol asumible creado en la cuenta de Amazon EMR Serverless.

      { "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 sin servidor. JupyterLab Puede utilizar la SageMaker consola o el siguiente script. Posteriormente, todos los trabajos de Apache Spark o Apache Hive creados desde su portátil accederán únicamente a los datos y recursos permitidos por las políticas asociadas a la función de ejecución seleccionada.

    importante

    Si no completa este paso, no podrá conectar un JupyterLab portátil a una aplicación EMR sin servidor.

    SageMaker console

    Para asociar tus funciones de tiempo de ejecución a tu perfil de usuario o dominio mediante la SageMaker consola:

    1. Navegue hasta la SageMaker consola 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 el rol de SageMaker ejecución cuyos permisos has actualizado.

      • Para añadir sus funciones 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 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 SageMaker ejecución cuyos permisos has actualizado. En la pestaña Configuraciones de aplicaciones, navegue hasta la JupyterLabsección.

    3. Elija Editar y añada su función asumible y la función ARNs de ejecución en tiempo de ejecución EMR sin servidor.

    4. Elija Enviar.

    La próxima vez que se conecte a una aplicación EMR sin servidor mediante JupyterLab, los roles 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 SageMaker ejecución cuyos permisos has actualizado, ejecuta el siguiente comando en una terminal. Sustituya domainIDuser-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 (client.update_domain) específicos dentro de un SageMaker dominio. En concreto, establece las funciones de ejecución en tiempo de ejecución para Amazon EMR Serverless, que ha creado previamente. También permite que la JupyterLab aplicación asuma una IAM función determinada (AssumableRole) para ejecutar aplicaciones EMR sin servidor dentro de la EMR cuenta de Amazon.

    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

  • EMRPolíticas sin servidor: esta política permite gestionar las aplicaciones EMR sin servidor, por ejemplo, publicarlas, crearlas (con las SageMaker etiquetas necesarias), iniciarlas, detenerlas, obtener detalles, eliminarlas, acceder a los puntos de conexión de Livy y gestionar los paneles de control. También permite transferir al servicio la función de ejecución de la aplicación EMR sin servidor requerida.

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

    • 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 laemr-serverless.amazonaws.com service.

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

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

    • EMRServerlessActions: Permite realizar varias acciones (StartApplication,StopApplication, GetApplication DeleteApplicationAccessLivyEndpoints, yGetDashboardForJobRun) en los recursos EMR sin servidor, pero solo si los recursos tienen las claves de etiqueta especificadas (sagemaker:domain-arnsagemaker:user-profile-arn, ysagemaker:space-arn) configuradas con valores no nulos.

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

    { "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 SageMaker dominios, perfiles de usuario y espacios dentro de la región y AWS la cuenta especificadas.

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