Configuration des modèles CloudFormation Amazon EMR dans Service Catalog - Amazon SageMaker AI

Configuration des modèles CloudFormation Amazon EMR dans Service Catalog

Cette rubrique suppose que les administrateurs sont familiers d’CloudFormation, des portefeuilles et des produits dans AWS Service Catalog, ainsi que d’Amazon EMR.

Pour simplifier la création de clusters Amazon EMR depuis Studio, les administrateurs peuvent enregistrer un modèle CloudFormation Amazon EMR en tant que produit dans un portefeuille AWS Service Catalog. Pour mettre ce modèle à la disposition des scientifiques des données, les administrateurs doivent associer le portefeuille au rôle d’exécution SageMaker AI utilisé dans Studio ou Studio Classic. Enfin, pour permettre aux utilisateurs de découvrir des modèles, de provisionner des clusters et de se connecter aux clusters Amazon EMR depuis Studio ou Studio Classic, les administrateurs doivent définir les autorisations d’accès appropriées.

Les modèles CloudFormation Amazon EMR peuvent autoriser les utilisateurs finaux à personnaliser différents aspects du cluster. Par exemple, les administrateurs peuvent définir une liste approuvée de types d’instances parmi lesquels les utilisateurs peuvent choisir lors de la création d’un cluster.

Les instructions suivantes utilisent des piles CloudFormation de bout en bout pour configurer un domaine Studio ou Studio Classic, un profil utilisateur, un portefeuille Service Catalog, et pour remplir un modèle de lancement Amazon EMR. Les étapes suivantes mettent en évidence les paramètres spécifiques que les administrateurs doivent appliquer dans leur pile de bout en bout pour permettre à Studio ou à Studio Classic d’accéder aux produits Service Catalog et de provisionner des clusters Amazon EMR.

Note

Le référentiel GitHub aws-samples/sagemaker-studio-emr contient des exemples de piles CloudFormation de bout en bout qui déploient les rôles IAM, la mise en réseau, le domaine SageMaker, le profil utilisateur et le portefeuille Service Catalog nécessaires, et qui ajoutent un modèle CloudFormation de lancement Amazon EMR. Les modèles proposent différentes options d’authentification entre Studio ou Studio Classic et le cluster Amazon EMR. Dans ces exemples de modèles, la pile CloudFormation parente transmet les paramètres du VPC, du groupe de sécurité et des sous-réseaux SageMaker AI au modèle de cluster Amazon EMR.

Le référentiel sagemaker-studio-emr/cloudformation/emr_servicecatalog_templates contient divers exemples de modèles de lancement CloudFormation Amazon EMR, notamment des options pour les déploiements à compte unique et entre comptes.

Consultez Connexion à un cluster Amazon EMR depuis SageMaker Studio ou Studio Classic pour plus d’informations sur les méthodes d’authentification que vous pouvez utiliser pour vous connecter à un cluster Amazon EMR.

Pour permettre aux scientifiques des données de découvrir les modèles CloudFormation Amazon EMR et de provisionner des clusters depuis Studio ou Studio Classic, procédez comme suit.

Étape 0 : Vérification de votre mise en réseau et préparation de votre pile CloudFormation

Avant de commencer :

  • Assurez-vous d’avoir passé en revue les exigences de mise en réseau et de sécurité dans Configuration de l’accès réseau pour votre cluster Amazon EMR.

  • Vous devez disposer d’une pile CloudFormation de bout en bout qui prend en charge la méthode d’authentification de votre choix. Vous trouverez des exemples de tels modèles CloudFormation dans le référentiel GitHub aws-samples/sagemaker-studio-emr. Les étapes suivantes mettent en évidence les configurations spécifiques de votre pile de bout en bout pour permettre l’utilisation de modèles Amazon EMR dans Studio ou Studio Classic.

Étape 1 : Association de votre portefeuille Service Catalog à SageMaker AI

Dans votre portefeuille Service Catalog, associez l’identifiant de votre portefeuille au rôle d’exécution SageMaker AI accédant à votre cluster.

Pour ce faire, ajoutez la section suivante (ici au format YAML) à votre pile. Cela permet au rôle d’exécution SageMaker AI d’accéder au portefeuille Service Catalog spécifié contenant des produits tels que les modèles Amazon EMR. Il permet aux rôles assumés par SageMaker AI de lancer ces produits.

Remplacez SageMakerExecutionRole.Arn et SageMakerStudioEMRProductPortfolio.ID par leurs valeurs réelles.

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

Pour plus de détails sur l’ensemble d’autorisations IAM requis, consultez la section sur les autorisations.

Étape 2 : Référencement d’un modèle Amazon EMR dans un produit Service Catalog

Dans un produit Service Catalog de votre portefeuille, référencez une ressource de modèle Amazon EMR et garantissez sa visibilité dans Studio ou Studio Classic.

Pour cela, référencez la ressource du modèle Amazon EMR dans la définition du produit Service Catalog, puis ajoutez la clé de balise "sagemaker:studio-visibility:emr" suivante, définie sur la valeur "true" (voir l’exemple au format YAML).

Dans la définition du produit Service Catalog, le modèle CloudFormation du cluster est référencé via une URL. La balise supplémentaire définie sur true garantit la visibilité des modèles Amazon EMR dans Studio ou Studio Classic.

Note

Le modèle Amazon EMR référencé par l’URL fournie dans l’exemple n’impose aucune exigence d’authentification lors de son lancement. Cette option est destinée à des fins de démonstration et d’apprentissage. Elle n’est pas recommandée dans un environnement de production.

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"

Étape 3 : Paramétrage du modèle CloudFormation Amazon EMR

Le modèle CloudFormation utilisé pour définir le cluster Amazon EMR dans le produit Service Catalog permet aux administrateurs de spécifier des paramètres configurables. Les administrateurs peuvent définir des valeurs Default et des plages AllowedValues pour ces paramètres dans la section Parameters du modèle. Au cours du processus de lancement du cluster, les scientifiques des données peuvent fournir des entrées personnalisées ou effectuer des sélections parmi ces options prédéfinies pour personnaliser certains aspects de leur cluster Amazon EMR.

L’exemple suivant illustre les paramètres de saisie supplémentaires que les administrateurs peuvent définir lors de la création d’un modèle 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" ] } }

Une fois que les administrateurs ont mis à disposition les modèles CloudFormation Amazon EMR dans Studio, les scientifiques des données peuvent les utiliser pour auto-provisionner des clusters Amazon EMR. La section Parameters définie dans le modèle se traduit par des champs de saisie sur le formulaire de création de cluster dans Studio ou Studio Classic. Pour chaque paramètre, les scientifiques des données peuvent entrer une valeur personnalisée dans la zone de saisie ou sélectionner l’une des options prédéfinies répertoriées dans un menu déroulant, qui correspond aux valeurs AllowedValues spécifiées dans le modèle.

L’illustration suivante montre le formulaire dynamique assemblé à partir d’un modèle Amazon EMR CloudFormation pour créer un cluster Amazon EMR dans Studio ou Studio Classic.

Illustration d’un formulaire dynamique assemblé à partir d’un modèle CloudFormation Amazon EMR pour créer un cluster Amazon EMR à partir de Studio ou de Studio Classic.

Consultez Lancement d’un cluster Amazon EMR depuis Studio ou Studio Classic pour découvrir comment lancer un cluster depuis Studio ou Studio Classic à l’aide de ces modèles Amazon EMR.

Étape 4 : Configuration des autorisations pour activer l’établissement d’une liste et le lancement des clusters Amazon EMR à partir de Studio

Enfin, attachez les autorisations IAM requises pour permettre de répertorier les clusters Amazon EMR en cours d’exécution existants et d’auto-provisionner de nouveaux clusters à partir de Studio ou de Studio Classic.

Le ou les rôles auxquels vous devez ajouter ces autorisations dépendent du fait que Studio ou Studio Classic et Amazon EMR sont déployés dans le même compte (choisissez Compte unique) ou dans des comptes différents (choisissez Compte croisé).

Important

Vous pouvez uniquement découvrir les clusters Amazon EMR et vous y connecter pour les applications JupyterLab et Studio Classic lancées depuis des espaces privés. Assurez-vous que les clusters Amazon EMR sont situés dans la même région AWS que votre environnement Studio.

Si vos clusters Amazon EMR et Studio ou Studio Classic sont déployés dans le même compte AWS, attachez les autorisations suivantes au rôle d’exécution SageMaker AI qui accède à votre cluster.

  1. Étape 1 : extrayez l’ARN du rôle d’exécution SageMaker AI utilisé par votre espace privé.

    Pour obtenir des informations sur les espaces et les rôles d’exécution dans SageMaker AI, consultez Comprendre les autorisations d’espace de domaine et les rôles d’exécution.

    Pour plus d’informations sur la façon de récupérer l’ARN du rôle d’exécution de SageMaker AI, consultez Obtention de votre rôle d’exécution.

  2. Étape 2 : attachez les autorisations suivantes au rôle d’exécution SageMaker AI accédant à vos clusters Amazon EMR.

    1. Accédez à la Console IAM.

    2. Choisissez Rôles, puis recherchez votre rôle d’exécution par son nom dans le champ Rechercher. Le nom du rôle est la dernière partie de l’ARN, après la dernière barre oblique (/).

    3. Suivez le lien correspondant à votre rôle.

    4. Choisissez Ajouter des autorisations, puis Créer une politique en ligne.

    5. Dans l’onglet JSON, ajoutez les autorisations Amazon EMR autorisant l’accès et les opérations Amazon EMR. Pour plus de détails sur le document de politique, consultez Politiques Amazon EMR de liste dans Politiques de référence. Remplacez region et accountID par leurs valeurs réelles avant de copier la liste des instructions dans la politique en ligne de votre rôle.

    6. Choisissez Suivant, puis fournissez un nom de politique.

    7. Choisissez Créer une politique.

    8. Répétez l’étape Créer une politique en ligne pour ajouter une autre politique accordant au rôle d’exécution les autorisations nécessaires pour provisionner de nouveaux clusters Amazon EMR à l’aide de modèles CloudFormation. Pour plus de détails sur le document de politique, consultez Politiques de création de clusters Amazon EMR dans Politiques de référence. Remplacez region et accountID par leurs valeurs réelles avant de copier la liste des instructions dans la politique en ligne de votre rôle.

Note

Les utilisateurs de la connectivité de contrôle d’accès en fonction du rôle (RBAC) aux clusters Amazon EMR doivent également se référer à Configuration de l’authentification du rôle d’exécution lorsque votre cluster Amazon EMR et Studio sont sur le même compte.

Avant de commencer, extrayez l’ARN du rôle d’exécution SageMaker AI utilisé par votre espace privé.

Pour obtenir des informations sur les espaces et les rôles d’exécution dans SageMaker AI, consultez Comprendre les autorisations d’espace de domaine et les rôles d’exécution.

Pour plus d’informations sur la façon de récupérer l’ARN du rôle d’exécution de SageMaker AI, consultez Obtention de votre rôle d’exécution.

Si vos clusters Amazon EMR et Studio ou Studio sont déployés dans des comptes AWS différents, vous configurez les autorisations sur les deux comptes.

Note

Les utilisateurs de la connectivité de contrôle d’accès en fonction du rôle (RBAC) aux clusters Amazon EMR doivent également se référer à Configuration de l’authentification du rôle d’exécution lorsque votre cluster et Studio sont dans des comptes différents.

Sur le compte des clusters Amazon EMR

Procédez comme suit pour créer les rôles et les politiques nécessaires sur le compte où Amazon EMR est déployé, également appelé compte d’approbation :

  1. Étape 1 : extrayez l’ARN du rôle de service de votre cluster Amazon EMR.

    Pour découvrir comment trouver l’ARN du rôle de service d’un cluster, consultez Configuration des rôles de service IAM pour les autorisations Amazon EMR aux services et ressources AWS.

  2. Étape 2 : créez un rôle IAM personnalisé nommé AssumableRole avec la configuration suivante :

    • Autorisations : accordez les autorisations nécessaires à AssumableRole pour autoriser l’accès aux ressources Amazon EMR. Ce rôle est également appelé rôle d’accès dans les scénarios impliquant un accès intercompte.

    • Relation de confiance : configurez la politique d’approbation pour AssumableRole afin d’autoriser l’endossement du rôle d’exécution (SageMakerExecutionRole dans le diagramme entre comptes) depuis le compte Studio qui nécessite un accès.

    En assumant ce rôle, Studio ou Studio Classic peut obtenir un accès temporaire aux autorisations dont il a besoin dans Amazon EMR.

    Pour obtenir des instructions détaillées sur la façon de créer un nouveau rôle AssumableRole dans votre compte AWS Amazon EMR, procédez comme suit :

    1. Accédez à la Console IAM.

    2. Dans le volet de navigation de gauche, choisissez Politique, puis Créer une politique.

    3. Dans l’onglet JSON, ajoutez les autorisations Amazon EMR autorisant l’accès et les opérations Amazon EMR. Pour plus de détails sur le document de politique, consultez Politiques Amazon EMR de liste dans Politiques de référence. Remplacez region et accountID par leurs valeurs réelles avant de copier la liste des instructions dans la politique en ligne de votre rôle.

    4. Choisissez Suivant, puis fournissez un nom de politique.

    5. Choisissez Créer une politique.

    6. Dans le volet de navigation de gauche, choisissez Rôles, puis Créer un rôle.

    7. Sur la page Créer un rôle, choisissez Politique d’approbation personnalisée comme entité de confiance.

    8. Collez le document JSON suivant dans la section Politique d’approbation personnalisée, puis choisissez Suivant.

      For users of Studio and JupyterLab

      Remplacez studio-account par l’ID du compte Studio et AmazonSageMaker-ExecutionRole par le rôle d’exécution utilisé par votre espace JupyterLab.

      JSON
      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole" }, "Action": "sts:AssumeRole" } ] }
      For users of Studio Classic

      Remplacez studio-account par l’ID de compte Studio Classic.

      JSON
      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "sts:AssumeRole" } ] }
    9. Dans la page Ajouter des autorisations, ajoutez l’autorisation que vous venez de créer, puis choisissez Suivant.

    10. Sur la page Vérifier, entrez un nom pour le rôle, tel que AssumableRole, et une description facultative.

    11. Passez en revue les détails du rôle, puis choisissez Créer un rôle.

    Pour plus d’informations sur la création d’un rôle sur un compte AWS, consultez Création d’un rôle IAM (console).

Sur le compte Studio

Sur le compte où Studio est déployé, également appelé compte approuvé, mettez à jour le rôle d’exécution de SageMaker AI accédant à vos clusters avec les autorisations requises pour accéder aux ressources dans le compte d’approbation.

  1. Étape 1 : extrayez l’ARN du rôle d’exécution SageMaker AI utilisé par votre espace privé.

    Pour obtenir des informations sur les espaces et les rôles d’exécution dans SageMaker AI, consultez Comprendre les autorisations d’espace de domaine et les rôles d’exécution.

    Pour plus d’informations sur la façon de récupérer l’ARN du rôle d’exécution de SageMaker AI, consultez Obtention de votre rôle d’exécution.

  2. Étape 2 : attachez les autorisations suivantes au rôle d’exécution SageMaker AI accédant à vos clusters Amazon EMR.

    1. Accédez à la Console IAM.

    2. Choisissez Rôles, puis recherchez votre rôle d’exécution par son nom dans le champ Rechercher. Le nom du rôle est la dernière partie de l’ARN, après la dernière barre oblique (/).

    3. Suivez le lien correspondant à votre rôle.

    4. Choisissez Ajouter des autorisations, puis Créer une politique en ligne.

    5. Dans l’onglet JSON, ajoutez la politique en ligne accordant au rôle les autorisations nécessaires pour mettre à jour les domaines, les profils utilisateur et les espaces. Pour plus de détails sur le document de politique, consultez Politique relative aux actions de mise à jour des domaines, des profils utilisateur et des espaces dans Politiques de référence. Remplacez region et accountID par leurs valeurs réelles avant de copier la liste des instructions dans la politique en ligne de votre rôle.

    6. Choisissez Suivant, puis fournissez un nom de politique.

    7. Choisissez Créer une politique.

    8. Répétez l’étape Créer une politique en ligne pour ajouter une autre politique accordant au rôle d’exécution les autorisations permettant d’assumer AssumableRole puis d’exécuter les actions autorisées par la stratégie d’accès du rôle. Remplacez emr-account par l’ID du compte Amazon EMR et AssumableRole par le nom du rôle assumable créé dans le compte Amazon EMR.

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleAssumptionForCrossAccountDiscovery", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::111122223333:role/AssumableRole" ] } ] }
    9. Répétez l’étape Créer une politique en ligne pour ajouter une autre politique accordant au rôle d’exécution les autorisations nécessaires pour provisionner de nouveaux clusters Amazon EMR à l’aide de modèles CloudFormation. Pour plus de détails sur le document de politique, consultez Politiques de création de clusters Amazon EMR dans Politiques de référence. Remplacez region et accountID par leurs valeurs réelles avant de copier la liste des instructions dans la politique en ligne de votre rôle.

    10. (Facultatif) Pour permettre de répertorier les clusters Amazon EMR déployés dans le même compte que Studio, ajoutez une politique en ligne supplémentaire à votre rôle d’exécution Studio, tel que défini dans Politiques Amazon EMR de liste dans Politiques de référence.

  3. Étape 3 : associez votre ou vos rôles assumables (rôle d’accès) à votre domaine ou à votre profil utilisateur. Les utilisateurs de JupyterLab dans Studio peuvent utiliser la console SageMaker AI ou le script fourni.

    Choisissez l’onglet qui correspond à votre cas d’utilisation.

    Associate your assumable roles in JupyterLab using the SageMaker AI console

    Pour associer vos rôles assumables à votre profil utilisateur ou à votre domaine à l’aide de la console SageMaker AI :

    1. Accédez à la console SageMaker AI à l’adresse https://console.aws.amazon.com/sagemaker/.

    2. Dans le volet de navigation de gauche, choisissez un domaine, puis sélectionnez le domaine en utilisant le rôle d’exécution SageMaker AI dont vous avez mis à jour les autorisations.

      • Pour ajouter votre ou vos rôles assumables à votre domaine : dans l’onglet Configurations des applications de la page Détails du domaine, accédez à la section JupyterLab.

      • Pour ajouter votre ou vos rôles assumables (rôle d’accès) à votre profil utilisateur : sur la page Détails du domaine, choisissez l’onglet Profils utilisateur, sélectionnez le profil utilisateur utilisant le rôle d’exécution SageMaker AI dont vous avez mis à jour les autorisations. Dans l’onglet Configurations des applications, accédez à la section JupyterLab.

    3. Choisissez Modifier et ajoutez les ARN de votre rôle assumable (rôle d’accès).

    4. Sélectionnez Soumettre.

    Associate your assumable roles in JupyterLab using a Python script

    Dans une application JupyterLab démarrée depuis un espace utilisant le rôle d’exécution SageMaker AI dont vous avez mis à jour les autorisations, exécutez la commande suivante dans un terminal. Remplacez les valeurs domainID, user-profile-name, emr-accountID et AssumableRole (EMRServiceRole pour les rôles d’exécution RBAC) par leurs valeurs appropriées. Cet extrait de code met à jour les paramètres du profil utilisateur pour un profil utilisateur (utilisez client.update_userprofile) ou des paramètres de domaine (utilisez client.update_domain) spécifiques au sein d’un domaine SageMaker AI. Plus précisément, cela permet à l’application JupyterLab d’assumer un rôle IAM particulier (AssumableRole) pour exécuter des clusters Amazon EMR au sein du compte 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

    Fournissez l’ARN de AssumableRole à votre rôle d’exécution Studio Classic. L’ARN est chargé par le serveur Jupyter au lancement. Le rôle d’exécution utilisé par Studio assume ce rôle entre comptes pour découvrir et se connecter aux clusters Amazon EMR dans le compte d’approbation.

    Vous pouvez spécifier ces informations à l’aide de scripts de configuration du cycle de vie (LCC). Vous pouvez attacher la configuration LCC à votre domaine ou à un profil utilisateur spécifique. Le script LCC que vous utilisez doit être une configuration JupyterServer. Pour plus d’informations sur la façon de créer un script LCC, consultez Utilisation de configurations de cycle de vie avec Studio Classic.

    Voici un exemple de script LCC. Pour modifier le script, remplacez AssumableRole et emr-account par leurs valeurs respectives. Le nombre de comptes croisés est limité à cinq.

    # 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

    Une fois le LCC exécuté et les fichiers écrits, le serveur lit le fichier /home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE/emr-discovery-iam-role-arns-DO_NOT_DELETE.json et stocke l’ARN entre comptes.