Configurer les EMR CloudFormation modèles Amazon dans le Service Catalog - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurer les EMR CloudFormation modèles Amazon dans le Service Catalog

Cette rubrique part du principe que les administrateurs connaissent bien AWS CloudFormationles portefeuilles et les produits d'Amazon AWS Service Catalog, ainsi que ceux d'Amazon EMR.

Pour simplifier la création de EMR clusters Amazon à partir de Studio, les administrateurs peuvent enregistrer un EMR CloudFormation modèle Amazon en tant que produit dans un AWS Service Catalogportefeuille. Pour mettre le modèle à la disposition des data scientists, ils doivent associer le portefeuille au rôle SageMaker d'exécution 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 EMR clusters Amazon depuis Studio ou Studio Classic, les administrateurs doivent définir les autorisations d'accès appropriées.

Les EMR AWS CloudFormation modèles Amazon peuvent permettre aux utilisateurs finaux de personnaliser divers 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 end-to-end CloudFormation piles pour configurer un domaine Studio ou Studio Classic, un profil utilisateur, un portefeuille Service Catalog et remplir un modèle de EMR lancement Amazon. Les étapes suivantes mettent en évidence les paramètres spécifiques que les administrateurs doivent appliquer dans leur end-to-end stack pour permettre à Studio ou Studio Classic d'accéder aux produits Service Catalog et de provisionner des EMR clusters Amazon.

Note

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

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

Reportez-vous à Connectez-vous à un EMR cluster Amazon depuis SageMaker Studio ou Studio Classic pour plus de détails sur les méthodes d'authentification que vous pouvez utiliser pour vous connecter à un EMR cluster Amazon.

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

Étape 0 : Vérifiez votre réseau et préparez votre CloudFormation stack

Avant de commencer :

  • Assurez-vous d'avoir pris connaissance des exigences en matière de réseau et de sécurité dansConfigurer l'accès réseau pour votre EMR cluster Amazon.

  • Vous devez disposer d'une end-to-end CloudFormation pile existante prenant en charge la méthode d'authentification de votre choix. Vous trouverez des exemples de tels CloudFormation modèles dans le dépôt sagemaker-studio-emr GitHub aws-samples/. Les étapes suivantes mettent en évidence les configurations spécifiques de votre end-to-end stack pour permettre l'utilisation de EMR modèles Amazon dans Studio ou Studio Classic.

Étape 1 : associez votre portefeuille Service Catalog à SageMaker

Dans votre portefeuille Service Catalog, associez votre ID de portefeuille au rôle SageMaker d'exécution accédant à votre cluster.

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

Remplacez SageMakerExecutionRole.Arn and SageMakerStudioEMRProductPortfolio.ID avec 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'IAMautorisations requis, consultez la section sur les autorisations.

Étape 2 : référencer un EMR modèle Amazon dans un produit Service Catalog

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

Pour ce faire, faites référence à la ressource du EMR modèle Amazon dans la définition du produit Service Catalog, puis ajoutez le "sagemaker:studio-visibility:emr" jeu de clés de balise suivant à la valeur "true" (voir l'exemple au YAML format).

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

Note

Le EMR modèle Amazon référencé par le modèle fourni URL 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. Cela n'est pas recommandé 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étrer le modèle Amazon EMR CloudFormation

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

L'exemple suivant illustre les paramètres d'entrée supplémentaires que les administrateurs peuvent définir lors de la création d'un EMR modèle Amazon.

"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 les EMR CloudFormation modèles Amazon à disposition dans Studio, les data scientists peuvent les utiliser pour auto-approvisionner des EMR clusters Amazon. La Parameters section 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 data scientists peuvent soit saisir une valeur personnalisée dans la zone de saisie, soit sélectionner l'une des options prédéfinies répertoriées dans un menu déroulant, qui correspond à celle AllowedValues spécifiée dans le modèle.

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

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

Consultez Lancer un EMR cluster Amazon depuis Studio ou Studio Classic cette page pour savoir comment lancer un cluster depuis Studio ou Studio Classic à l'aide de ces EMR modèles Amazon.

Étape 4 : configurer les autorisations pour permettre de répertorier et de lancer des EMR clusters Amazon depuis Studio

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

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

Important

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

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

  1. Étape 1 : Récupérez le ARN rôle SageMaker d'exécution utilisé par votre espace privé.

    Pour plus d'informations sur les espaces et les rôles d'exécution dans SageMaker, voirComprendre 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 le rôle ARN SageMaker d'exécution d'un of, consultezObtenez votre rôle d'exécution.

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

    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 duARN, après la dernière barre oblique (/).

    3. Suivez le lien vers votre rôle.

    4. Choisissez Ajouter des autorisations, puis Créer une politique intégrée.

    5. Dans l'JSONonglet, ajoutez les EMR autorisations Amazon autorisant l'EMRaccès et les opérations d'Amazon. Pour plus de détails sur le document de politique, consultez la liste des EMR politiques d'Amazon dansPolitiques de référence. Remplacez region les instructions et accountID par leurs valeurs réelles avant de copier la liste des instructions dans la politique intégrée de votre rôle.

    6. Choisissez Next, puis saisissez le nom de la politique.

    7. Choisissez Create Policy (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 approvisionner de nouveaux EMR clusters Amazon à l'aide de AWS CloudFormation modèles. Pour plus de détails sur le document de politique, consultez Create Amazon EMRclusters policies dansPolitiques de référence. Remplacez les instructions region et accountID par leurs valeurs réelles avant de copier la liste des instructions dans la politique intégrée de votre rôle.

Note

Les utilisateurs de la connectivité par contrôle d'accès basé sur les rôles (RBAC) aux EMR clusters Amazon doivent également se référer à. Configurez l'authentification des rôles d'exécution lorsque votre EMR cluster Amazon et Studio sont sur le même compte

Avant de commencer, récupérez le ARN rôle SageMaker d'exécution utilisé par votre espace privé.

Pour plus d'informations sur les espaces et les rôles d'exécution dans SageMaker, voirComprendre 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 le rôle ARN SageMaker d'exécution d'un of, consultezObtenez votre rôle d'exécution.

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

Note

Les utilisateurs de la connectivité par contrôle d'accès basé sur les rôles (RBAC) aux EMR clusters Amazon 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 du EMR cluster Amazon

Suivez ces étapes pour créer les rôles et les politiques nécessaires sur le compte sur lequel Amazon EMR est déployé, également appelé compte de confiance :

  1. Étape 1 : Récupérez le ARN rôle de service de votre EMR cluster Amazon.

    Pour savoir comment déterminer le rôle de service ARN d'un cluster, consultez Configurer les rôles de IAM service pour les EMR autorisations Amazon relatives aux AWS services et aux ressources.

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

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

    • Relation de confiance : configurez la politique de confiance AssumableRole pour permettre d'assumer le rôle d'exécution (SageMakerExecutionRoledans 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 sur AmazonEMR.

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

    1. Accédez à la console IAM.

    2. Dans le volet de navigation de gauche, choisissez Policy, puis Create policy.

    3. Dans l'JSONonglet, ajoutez les EMR autorisations Amazon autorisant l'EMRaccès et les opérations d'Amazon. Pour plus de détails sur le document de politique, consultez la liste des EMR politiques d'Amazon dansPolitiques de référence. Remplacez region les instructions et accountID par leurs valeurs réelles avant de copier la liste des instructions dans la politique intégrée de votre rôle.

    4. Choisissez Next, puis saisissez le nom de la politique.

    5. Choisissez Create Policy (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 de confiance personnalisée comme entité de confiance.

    8. Collez le JSON document suivant dans la section Politique de confiance personnalisée, puis choisissez Suivant.

      For users of Studio and JupyterLab

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

      { "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

      studio-accountRemplacez-le par l'ID de compte Studio Classic.

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

    10. Sur la page Révision, entrez un nom pour le rôle, par exemple 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 AWS compte, consultez la section Création d'un IAM rôle (console).

Sur le compte Studio

Sur le compte sur lequel Studio est déployé, également appelé compte de confiance, mettez à jour le rôle SageMaker d'exécution accédant à vos clusters avec les autorisations requises pour accéder aux ressources du compte de confiance.

  1. Étape 1 : Récupérez le ARN rôle SageMaker d'exécution utilisé par votre espace privé.

    Pour plus d'informations sur les espaces et les rôles d'exécution dans SageMaker, voirComprendre 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 le rôle ARN SageMaker d'exécution d'un of, consultezObtenez votre rôle d'exécution.

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

    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 duARN, après la dernière barre oblique (/).

    3. Suivez le lien vers votre rôle.

    4. Choisissez Ajouter des autorisations, puis Créer une politique intégrée.

    5. Dans l'JSONonglet, ajoutez la politique intégrée 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, voir Politique relative aux actions de mise à jour du domaine, du profil utilisateur et de l'espace dansPolitiques de référence. Remplacez les instructions region et accountID par leurs valeurs réelles avant de copier la liste des instructions dans la politique intégrée de votre rôle.

    6. Choisissez Next, puis saisissez le nom de la politique.

    7. Choisissez Create Policy (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 l'autorisation d'assumer AssumableRole puis d'exécuter les actions autorisées par la politique d'accès du rôle. emr-accountRemplacez-le par l'identifiant du EMR compte Amazon et AssumableRole par le nom du rôle assumé créé dans le EMR compte Amazon.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleAssumptionForCrossAccountDiscovery", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": ["arn:aws:iam::emr-account: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 approvisionner de nouveaux EMR clusters Amazon à l'aide de AWS CloudFormation modèles. Pour plus de détails sur le document de politique, consultez Create Amazon EMRclusters policies dansPolitiques de référence. Remplacez les instructions region et accountID par leurs valeurs réelles avant de copier la liste des instructions dans la politique intégrée de votre rôle.

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

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

    Choisissez l'onglet correspondant à votre cas d'utilisation.

    Associate your assumable roles in JupyterLab using the SageMaker console

    Pour associer vos rôles supposés à votre profil utilisateur ou à votre domaine à l'aide de la SageMaker console, procédez comme suit :

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

    2. Dans le volet de navigation de gauche, choisissez le domaine, puis sélectionnez le domaine à l'aide du rôle SageMaker d'exécution dont vous avez mis à jour les autorisations.

      • Pour ajouter vos rôles supposés (rôle d'accès) à votre domaine : dans l'onglet Configurations de l'application de la page des détails du domaine, accédez à la JupyterLabsection.

      • Pour ajouter vos rôles supposés (rôle d'accès) à votre profil utilisateur : sur la page des détails du domaine, choisissez l'onglet Profils utilisateur, sélectionnez le profil utilisateur à l'aide du rôle d' SageMaker exécution dont vous avez mis à jour les autorisations. Dans l'onglet Configurations de l'application, accédez à la JupyterLabsection.

    3. Choisissez Modifier et ajoutez le ARNs rôle que vous assumez (rôle d'accès).

    4. Sélectionnez Envoyer.

    Associate your assumable roles in JupyterLab using a Python script

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

    Vous pouvez spécifier ces informations à l'aide de scripts Lifecycle Configuration (LCC). Vous pouvez l'associer LCC à votre domaine ou à un profil utilisateur spécifique. Le LCC script que vous utilisez doit être une JupyterServer configuration. Pour plus d'informations sur la création d'un LCC script, voir Utiliser les configurations du cycle de vie avec Studio Classic.

    Voici un exemple de LCC script. 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 les LCC exécutions 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 enregistre le compte croiséARN.