Configurar las CloudFormation plantillas de Amazon EMR en el Service Catalog - 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.

Configurar las CloudFormation plantillas de Amazon EMR en el Service Catalog

En este tema se presupone que los administradores están familiarizados con AWS CloudFormationlas carteras y los productos de Amazon EMR AWS Service Catalog, así como con Amazon EMR.

Para simplificar la creación de clústeres de Amazon EMR desde Studio, los administradores pueden registrar una CloudFormation plantilla de Amazon EMR como producto de una cartera. AWS Service Catalog Para poner la plantilla a disposición de los científicos de datos, deben asociar la cartera con la función de ejecución de la SageMaker IA utilizada en Studio o Studio Classic. Por último, para que los usuarios puedan detectar plantillas, aprovisionar los clústeres y conectarse a los clústeres de Amazon EMR desde Studio o Studio Classic, los administradores deben establecer los permisos de acceso adecuados.

Las AWS CloudFormation plantillas de Amazon EMR permiten a los usuarios finales personalizar varios aspectos del clúster. Por ejemplo, los administradores pueden definir una lista aprobada de tipos de instancias que los usuarios pueden elegir al crear un clúster.

En las siguientes instrucciones, se utilizan end-to-end CloudFormation pilas para configurar un dominio de Studio o Studio Classic, un perfil de usuario, una cartera de Service Catalog y rellenar una plantilla de lanzamiento de Amazon EMR. En los siguientes pasos se destacan los ajustes específicos que los administradores deben aplicar en su end-to-end pila para permitir que Studio o Studio Classic accedan a los productos de Service Catalog y aprovisione los clústeres de Amazon EMR.

nota

El GitHub repositorio aws-samples/ sagemaker-studio-emr contiene end-to-end CloudFormation pilas de ejemplos que implementan las funciones de IAM, las redes, el SageMaker dominio, el perfil de usuario y la cartera de Service Catalog necesarios y añaden una plantilla de lanzamiento de Amazon EMR. CloudFormation Las plantillas proporcionan diferentes opciones de autenticación entre Studio o Studio Classic y el clúster de Amazon EMR. En estas plantillas de ejemplo, la CloudFormation pila principal transfiere los parámetros de la VPC de SageMaker IA, el grupo de seguridad y la subred a la plantilla de clúster de Amazon EMR.

El repositorio sagemaker-studio-emr/cloudformation/emr_servicecatalog_templates contiene varios ejemplos de plantillas de lanzamiento de Amazon CloudFormation EMR, incluidas opciones para implementaciones con una sola cuenta y entre cuentas.

Consulte Conéctese a un clúster de Amazon EMR desde SageMaker Studio o Studio Classic para obtener más información sobre los métodos de autenticación que puede utilizar para conectarse a un clúster de Amazon EMR.

Para permitir que los científicos de datos descubran las CloudFormation plantillas de Amazon EMR y aprovisionar clústeres desde Studio o Studio Classic, siga estos pasos.

Paso 0: Compruebe su red y prepare su plantilla CloudFormation

Antes de comenzar:

  • Asegúrese de haber revisado los requisitos de red y seguridad en Configuración de acceso a la red para su clúster de Amazon EMR.

  • Debe tener una end-to-end CloudFormation pila existente que sea compatible con el método de autenticación que elija. Puede encontrar ejemplos de este tipo de CloudFormation plantillas en el repositorio aws-samples/ sagemaker-studio-emr GitHub . En los siguientes pasos, se destacan las configuraciones específicas de la end-to-end pila para permitir el uso de plantillas de Amazon EMR en Studio o Studio Classic.

Paso 1: Asocie su cartera de Service Catalog a la SageMaker IA

En su cartera de Service Catalog, asocie su ID de cartera con la función de ejecución de SageMaker IA que accede a su clúster.

Para ello, añada la siguiente sección (aquí en formato YAML) a su pila. Esto otorga al rol de ejecución de SageMaker IA acceso a la cartera de Service Catalog especificada que contiene productos como las plantillas de Amazon EMR. Permite que la SageMaker IA asuma las funciones para lanzar esos productos.

Sustituya SageMakerExecutionRole.Arn y SageMakerStudioEMRProductPortfolio.ID por sus valores reales.

SageMakerStudioEMRProductPortfolioPrincipalAssociation: Type: AWS::ServiceCatalog::PortfolioPrincipalAssociation Properties: PrincipalARN: SageMakerExecutionRole.Arn PortfolioId: SageMakerStudioEMRProductPortfolio.ID PrincipalType: IAM

Para obtener más información sobre el conjunto necesario de permisos de IAM, consulte la sección sobre permisos.

Paso 2: referencia a una plantilla de Amazon EMR en un producto de Service Catalog

En un producto de Service Catalog de su cartera, haga referencia a un recurso de plantilla de Amazon EMR y garantice su visibilidad en Studio o Studio Classic.

Para ello, haga referencia al recurso de plantilla de Amazon EMR en la definición del producto de Service Catalog y, a continuación, añada el siguiente conjunto "sagemaker:studio-visibility:emr" de claves de etiquetas al valor "true" (consulte el ejemplo en formato YAML).

En la definición del producto de Service Catalog, se hace referencia a la AWS CloudFormation plantilla del clúster mediante una URL. La etiqueta adicional establecida en true garantiza la visibilidad de las plantillas de Amazon EMR en Studio o Studio Classic.

nota

La plantilla de Amazon EMR a la que hace referencia la URL proporcionada en el ejemplo no exige ningún requisito de autenticación cuando se inicializa. Esta opción está pensada para fines de demostración y aprendizaje. No se recomienda en un entorno de producción.

SMStudioEMRNoAuthProduct: Type: AWS::ServiceCatalog::CloudFormationProduct Properties: Owner: AWS Name: SageMaker Studio Domain No Auth EMR ProvisioningArtifactParameters: - Name: SageMaker Studio Domain No Auth EMR Description: Provisions a SageMaker domain and No Auth EMR Cluster Info: LoadTemplateFromURL: Link to your CloudFormation template. For example, https://aws-blogs-artifacts-public.s3.amazonaws.com/artifacts/astra-m4-sagemaker/end-to-end/CFN-EMR-NoStudioNoAuthTemplate-v3.yaml Tags: - Key: "sagemaker:studio-visibility:emr" Value: "true"

Paso 3: Parametrizar la plantilla de Amazon EMR CloudFormation

La CloudFormation plantilla utilizada para definir el clúster de Amazon EMR en el producto Service Catalog permite a los administradores especificar parámetros configurables. Los administradores pueden definir valores Default y rangos AllowedValues para estos parámetros en la sección Parameters de la plantilla. Durante el proceso de inicialización del clúster, los científicos de datos pueden proporcionar entradas personalizadas o seleccionar entre esas opciones predefinidas para personalizar determinados aspectos de su clúster de Amazon EMR.

El siguiente ejemplo ilustra los parámetros de entrada adicionales que los administradores pueden establecer al crear una plantilla de Amazon EMR.

"Parameters": { "EmrClusterName": { "Type": "String", "Description": "EMR cluster Name." }, "MasterInstanceType": { "Type": "String", "Description": "Instance type of the EMR master node.", "Default": "m5.xlarge", "AllowedValues": [ "m5.xlarge", "m5.2xlarge", "m5.4xlarge" ] }, "CoreInstanceType": { "Type": "String", "Description": "Instance type of the EMR core nodes.", "Default": "m5.xlarge", "AllowedValues": [ "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge" ] }, "CoreInstanceCount": { "Type": "String", "Description": "Number of core instances in the EMR cluster.", "Default": "2", "AllowedValues": [ "2", "5", "10" ] }, "EmrReleaseVersion": { "Type": "String", "Description": "The release version of EMR to launch.", "Default": "emr-5.33.1", "AllowedValues": [ "emr-5.33.1", "emr-6.4.0" ] } }

Una vez que los administradores hayan hecho que las CloudFormation plantillas de Amazon EMR estén disponibles en Studio, los científicos de datos pueden utilizarlas para aprovisionar automáticamente los clústeres de Amazon EMR. La sección Parameters definida en la plantilla se traduce en campos de entrada en el formulario de creación del clúster en Studio o Studio Classic. Para cada parámetro, los científicos de datos pueden introducir un valor personalizado en el cuadro de entrada o seleccionar una de las opciones predefinidas que aparecen en un menú desplegable, que corresponde a los AllowedValues especificados en la plantilla.

La siguiente ilustración muestra el formulario dinámico ensamblado a partir de una plantilla de CloudFormation Amazon EMR para crear un clúster de Amazon EMR en Studio o Studio Classic.

Ilustración de un formulario dinámico ensamblado a partir de una plantilla de CloudFormation Amazon EMR para crear un clúster de Amazon EMR desde Studio o Studio Classic.

Visite Inicialización de un clúster de Amazon EMR desde Studio o Studio Classic para aprender a inicializar un clúster desde Studio o Studio Classic con esas plantillas de Amazon EMR.

Paso 4: configuración de los permisos para habilitar la enumeración y la inicialización de clústeres de Amazon EMR desde Studio

Por último, asocie los permisos de IAM necesarios para poder enumerar los clústeres de Amazon EMR existentes en ejecución y autoaprovisionar nuevos clústeres desde Studio o Studio Classic.

El rol o roles a los que debe añadir esos permisos depende de si Studio o Studio Classic y Amazon EMR están implementados en la misma cuenta (elija Cuenta única) o en cuentas diferentes (elija Entre cuentas).

importante

Solo puede descubrir clústeres de Amazon EMR y conectarse a ellos para JupyterLab aplicaciones de Studio Classic que se lancen desde espacios privados. Asegúrese de que los clústeres de Amazon EMR estén ubicados en la misma AWS región que su entorno de Studio.

Si sus clústeres de Amazon EMR y Studio o Studio Classic están implementados en la misma AWS cuenta, asocie los siguientes permisos a la función de ejecución de SageMaker IA que accede a su clúster.

  1. Paso 1: 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

  2. Paso 2: Adjunte los siguientes permisos a la función de ejecución de SageMaker IA que accede a sus clústeres de Amazon EMR.

    1. Vaya a la consola de 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 los permisos de Amazon EMR que permiten el acceso y las operaciones de Amazon EMR. Para obtener más información sobre el documento de política, consulte List Amazon EMR policies 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 política insertada para añadir otra política que conceda al rol de ejecución los permisos para aprovisionar nuevos clústeres de Amazon EMR mediante plantillas de AWS CloudFormation . Para obtener más información sobre el documento de política, consulta Crear EMRclusters políticas de Amazon enPolí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.

nota

Los usuarios de la conectividad del control de acceso basado en roles (RBAC) con los clústeres de Amazon EMR también deben consultar Configuración de la autenticación de roles en tiempo de ejecución cuando el clúster de Amazon EMR y Studio están en la misma cuenta.

Antes de empezar, recupere el ARN de la función de ejecución de SageMaker IA utilizada 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

Si sus clústeres de Amazon EMR y Studio o Studio Classic se implementan en AWS cuentas independientes, debe configurar los permisos en ambas cuentas.

nota

Los usuarios de la conectividad del control de acceso basado en roles (RBAC) con los clústeres de Amazon EMR también deben consultar Configuración de la autenticación de roles en tiempo de ejecución cuando el clúster y Studio están en cuentas diferentes.

En la cuenta de clúster de Amazon EMR

Siga estos pasos para crear los roles y las políticas necesarios en la cuenta en la que está implementado Amazon EMR, también conocida como cuenta de confianza:

  1. Paso 1: recuperación del ARN del rol de servicio de su clúster de Amazon EMR.

    Para aprender a buscar el ARN del rol de servicio de un clúster, consulte Configuración de los roles de servicio de IAM de los permisos de Amazon EMR para los servicios y recursos de AWS.

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

    • Permisos: conceda los permisos necesarios a AssumableRole para permitir el acceso a los recursos de Amazon EMR. Este rol también se conoce como rol de acceso en situaciones que implican el acceso entre cuentas.

    • Relación de confianza: configure la política de confianza para AssumableRole para permitir 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 o Studio Classic pueden obtener acceso temporal a los permisos que necesitan en Amazon EMR.

    Para obtener instrucciones detalladas sobre cómo crear una cuenta nueva AssumableRole en tu AWS cuenta de Amazon EMR, sigue 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 que permiten el acceso y las operaciones de Amazon EMR. Para obtener más información sobre el documento de política, consulte List Amazon EMR policies 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.

    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.

      For users of Studio and JupyterLab

      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" } ] }
      For users of Studio Classic

      Sustituya studio-account por el ID de cuenta de Studio Classic.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account:root" }, "Action": "sts:AssumeRole" } ] }
    9. En la página Agregar permisos, añada el permiso que acaba de crear 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).

En la cuenta de Studio

En la cuenta en la que esté desplegado Studio, también conocida como cuenta de confianza, actualice la función de ejecución de SageMaker IA para acceder a sus clústeres 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 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

  2. Paso 2: Adjunte los siguientes permisos a la función de ejecución de SageMaker IA que accede a sus clústeres de Amazon EMR.

    1. Vaya a la consola de 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 política, 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 y AssumableRole por el nombre del rol asumible creado en la cuenta de Amazon EMR.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleAssumptionForCrossAccountDiscovery", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": ["arn:aws:iam::emr-account:role/AssumableRole" ] }] }
    9. Repita el paso Crear política insertada para añadir otra política que conceda al rol de ejecución los permisos para aprovisionar nuevos clústeres de Amazon EMR mediante plantillas de AWS CloudFormation . Para obtener más información sobre el documento de política, consulta Crear EMRclusters políticas de Amazon enPolí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.

    10. (Opcional) Para poder enumerar los clústeres de Amazon EMR implementados en la misma cuenta que Studio, añada una política interna adicional a su rol de ejecución de Studio, tal y como se define en List Amazon EMR policies en Políticas de referencia.

  3. Paso 3: Asocia tus funciones asumibles (función de acceso) a tu dominio o perfil de usuario. JupyterLab los usuarios de Studio pueden usar la consola de SageMaker IA o el script proporcionado.

    Elija la pestaña que corresponda a su caso de uso.

    Associate your assumable roles in JupyterLab using the SageMaker AI console

    Para asociar tus funciones asumibles a tu 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 sus funciones asumibles (función de acceso) 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 sus funciones asumibles (función de acceso) a su perfil de usuario: en la página de detalles del dominio, elija la pestaña Perfiles de usuario y seleccione el perfil de usuario mediante la función de ejecución de SageMaker IA cuyos permisos haya actualizado. En la pestaña Configuraciones de aplicaciones, navegue hasta la JupyterLabsección.

    3. Elija Editar y añada ARNs la función asumible (función de acceso).

    4. Elija Enviar.

    Associate your assumable roles in JupyterLab using a Python script

    En una JupyterLab aplicación iniciada desde un espacio con el rol de ejecución de SageMaker IA cuyos permisos hayas actualizado, ejecuta el siguiente comando en una terminal. Sustituya los valores domainID, user-profile-name, emr-accountID y AssumableRole (EMRServiceRole para los roles de tiempo de ejecución de RBAC) por sus valores adecuados. Este fragmento de código actualiza la configuración del perfil de usuario para un perfil de usuario (usoclient.update_userprofile) o una configuración de dominio (usoclient.update_domain) específicos dentro de un dominio de SageMaker IA. En concreto, permite que la JupyterLab aplicación asuma una función de IAM concreta (AssumableRole) para ejecutar clústeres de Amazon EMR dentro de la cuenta de 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/EMRServiceRole", "arn:aws:iam::emr-accountID:role/AnotherServiceRole"] } } }) 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))
    For users of Studio Classic

    Proporcione el ARN de AssumableRole a su rol de ejecución de Studio Classic. El servidor de Jupyter carga el ARN al inicializarse. El rol de ejecución de Studio asume ese rol de varias cuentas para detectar y conectarse a los clústeres de Amazon EMR en la cuenta de confianza.

    Puede especificar esta información mediante scripts de configuración del ciclo de vida (LCC). Puede asociar la LCC a su dominio o a un perfil de usuario específico. El script de LCC que utilice debe ser una configuración. JupyterServer Para obtener más información sobre cómo crear un script de LCC, consulte Use Lifecycle Configurations with Studio Classic.

    A continuación se muestra un ejemplo de script. Para modificar el script, sustituya AssumableRole y emr-account por sus valores correspondientes. El número de cuentas cruzadas está limitado a cinco.

    # This script creates the file that informs Studio Classic that the role "arn:aws:iam::emr-account:role/AssumableRole" in remote account "emr-account" must be assumed to list and describe Amazon EMR clusters in the remote account. #!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE" FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat > "$FILE" <<- "EOF" { emr-cross-account1: "arn:aws:iam::emr-cross-account1:role/AssumableRole", emr-cross-account2: "arn:aws:iam::emr-cross-account2:role/AssumableRole" } EOF

    Una vez que se ejecuta la LCC y se escriben los archivos, el servidor lee el archivo /home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE/emr-discovery-iam-role-arns-DO_NOT_DELETE.json y almacena el ARN entre cuentas.