Configurez les autorisations pour activer la mise en vente et le lancement d'EMRapplications Amazon depuis SageMaker Studio - Amazon SageMaker AI

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.

Configurez les autorisations pour activer la mise en vente et le lancement d'EMRapplications Amazon depuis SageMaker Studio

Dans cette section, nous détaillons les rôles et les autorisations nécessaires pour répertorier les applications EMR Serverless depuis SageMaker Studio et s'y connecter, en prenant en compte les scénarios dans lesquels Studio et les applications EMR Serverless sont déployés dans le même AWS compte ou sur des comptes différents.

Les rôles auxquels vous devez ajouter les autorisations nécessaires varient selon que Studio et vos applications EMR Serverless résident dans le même AWS compte (compte unique) ou dans des comptes distincts (comptes croisés). Deux types de rôles sont concernés :

  • Rôles d'exécution :

    • Rôles d'exécution d'exécution (rôles de contrôle d'accès basés sur les rôles) utilisés par EMR Serverless : il s'agit des IAM rôles utilisés par les environnements d'exécution de tâches EMR sans serveur pour accéder à d'autres AWS services et ressources nécessaires pendant l'exécution, tels qu'Amazon S3 pour l'accès aux données, pour la journalisation, CloudWatch l'accès au catalogue de données ou à d'autres services en fonction de AWS Glue vos exigences en matière de charge de travail. Nous vous recommandons de créer ces rôles dans le compte sur lequel les applications EMR Serverless sont exécutées.

      Pour en savoir plus sur les rôles d'exécution, consultez la section Rôles d'exécution de Job dans le Guide de l'utilisateur EMR Serverless.

      Note

      Vous pouvez définir plusieurs RBAC rôles pour votre application EMR Serverless. Ces rôles peuvent être basés sur les responsabilités et les niveaux d'accès requis par les différents utilisateurs ou groupes au sein de votre organisation. Pour plus d'informations sur RBAC les autorisations, consultez les meilleures pratiques de sécurité pour Amazon EMR Serverless.

    • SageMaker Rôle d'exécution de l'IA : rôle d'exécution permettant à l' SageMaker IA d'effectuer certaines tâches, telles que la lecture de données à partir de compartiments Amazon S3, l'écriture de journaux et l'accès à CloudWatch d'autres AWS services dont votre flux de travail pourrait avoir besoin. Le rôle d'exécution de l' SageMaker IA possède également l'autorisation spéciale appelée iam:PassRole qui permet à l' SageMaker IA de transmettre des rôles d'exécution temporaires aux applications EMR sans serveur. Ces rôles confèrent aux applications EMR sans serveur les autorisations dont elles ont besoin pour interagir avec d'autres AWS ressources pendant leur exécution.

  • Rôles supposables (également appelés rôles d'accès aux services) :

    • Ce sont les IAM rôles que le rôle d'exécution de l' SageMaker IA peut assumer pour effectuer des opérations liées à la gestion des applications EMR sans serveur. Ces rôles définissent les autorisations et les politiques d'accès requises lors de la liste, de la connexion ou de la gestion des applications EMR sans serveur. Ils sont généralement utilisés dans des scénarios entre comptes, dans lesquels les applications EMR sans serveur sont situées dans un AWS compte différent de celui du domaine SageMaker AI. Le fait de confier un IAM rôle à vos applications EMR sans serveur permet de respecter le principe du moindre privilège et de garantir qu'Amazon EMR dispose uniquement des autorisations requises pour exécuter vos tâches tout en protégeant les autres ressources de votre AWS compte.

En comprenant et en configurant correctement ces rôles, vous pouvez vous assurer que SageMaker Studio dispose des autorisations nécessaires pour interagir avec les applications EMR sans serveur, qu'elles soient déployées dans le même compte ou sur différents comptes.

Compte unique

Les diagrammes suivants illustrent les rôles et les autorisations nécessaires pour répertorier et se connecter aux applications EMR Serverless depuis Studio lorsque Studio et les applications sont déployés dans le même AWS compte.

Le diagramme montre les rôles et les autorisations nécessaires pour répertorier et connecter les applications EMR Serverless depuis Studio lorsque Studio et les applications se trouvent dans le même AWS compte.

Si vos EMR applications Amazon et Studio sont déployés sur le même AWS compte, procédez comme suit :

  1. Étape 1 : Récupérez le ARN compartiment Amazon S3 que vous utilisez pour les sources de données et le stockage des données de sortie dans la console Amazon S3.

    Pour savoir comment trouver un compartiment par son nom, consultez Accéder à un compartiment Amazon S3 et le répertorier. Pour plus d'informations sur la création d'un compartiment Amazon S3, consultez Création d'un compartiment.

  2. Étape 2 : Créez au moins un rôle d'exécution de tâches pour votre application EMR Serverless dans votre compte (voir le EMRServerlessRuntimeExecutionRoleA schéma de cas d'utilisation du compte unique ci-dessus). Choisissez Custom trust policy comme entité de confiance. Ajoutez les autorisations requises par votre travail. Au minimum, vous avez besoin d'un accès complet à un compartiment Amazon S3, ainsi que d'un accès en création et en lecture au catalogue de AWS Glue données.

    Pour obtenir des instructions détaillées sur la création d'un nouveau rôle d'exécution pour vos applications EMR Serverless, procédez comme suit :

    1. Accédez à la console IAM.

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

    3. Ajoutez les autorisations requises par votre rôle d'exécution, nommez la politique, puis choisissez Create policy.

      Vous pouvez vous référer à la section Job runtime roles for EMR Serverless pour trouver des exemples de politiques d'exécution pour un rôle d'exécution EMR sans serveur.

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

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

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

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    7. Sur la page Ajouter des autorisations, ajoutez la politique que vous avez créée, puis choisissez Next.

    8. Sur la page Révision, entrez un nom pour le rôle, par exemple EMRServerlessAppRuntimeRoleA et une description facultative.

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

    Grâce à ces rôles, vous et vos collègues pouvez vous connecter à la même application, chacun utilisant un rôle d'exécution assorti d'autorisations correspondant à votre niveau individuel d'accès aux données.

    Note

    Les sessions Spark fonctionnent différemment. Les sessions Spark sont isolées en fonction du rôle d'exécution utilisé dans Studio, de sorte que les utilisateurs ayant des rôles d'exécution différents auront des sessions Spark distinctes et isolées. En outre, si vous avez activé l'identité source pour votre domaine, les sessions Spark sont davantage isolées entre les différentes identités source.

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

    Pour plus d'informations sur les espaces et les rôles d'exécution dans SageMaker l'IA, consultezComprendre 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 d'exécution de l' SageMaker IA, consultezObtenez votre rôle d'exécution.

    Note

    Les utilisateurs novices peuvent également simplifier leur processus de configuration en créant automatiquement un nouveau rôle d'exécution de l' SageMaker IA avec les autorisations appropriées. SageMaker Dans ce cas, ignorez les étapes 3 et 4. Au lieu de cela, les utilisateurs peuvent soit :

    • Choisissez l'option Configurer pour les organisations lors de la création d'un nouveau domaine dans le menu Domaine dans le menu de navigation de gauche de la console SageMaker AI.

    • Créez un nouveau rôle d'exécution à partir du menu Gestionnaire de rôles de la console, puis associez le rôle à un domaine ou à un profil utilisateur existant.

    Lors de la création du rôle, choisissez l'option Exécuter les applications EMR sans serveur Studio dans Quelles activités de machine learning les utilisateurs effectueront-ils ? Indiquez ensuite le nom de votre compartiment Amazon S3 et le rôle d'exécution des tâches que vous souhaitez que votre application EMR Serverless utilise (étape 2).

    Le gestionnaire de SageMaker rôles ajoute automatiquement les autorisations nécessaires pour exécuter et se connecter aux applications EMR sans serveur au nouveau rôle d'exécution. Le gestionnaire de rôles vous permet d'attribuer un seul SageMaker rôle d'exécution à votre application EMR sans serveur, et l'application doit s'exécuter sur le même compte sur lequel Studio est déployé, à l'aide d'un rôle d'exécution créé dans ce même compte.

  4. Étape 4 : Attachez les autorisations suivantes au rôle d'exécution SageMaker AI accédant à votre application EMR Serverless.

    1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/sagemaker/.

    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 en ligne.

    5. Dans l'JSONonglet, ajoutez les autorisations Amazon EMR Serverless permettant l'accès et les EMR opérations sans serveur. Pour plus de détails sur le document de politique, voir Politiques EMR sans serveur dansPolitiques de référence. Remplacez region le ou accountID les instructions transmises EMRServerlessAppRuntimeRole par leurs valeurs réelles avant de copier la liste des instructions dans la politique intégrée de votre rôle.

      Note

      Vous pouvez inclure autant de ARN chaînes de rôles d'exécution que nécessaire dans l'autorisation, en les séparant par des virgules.

    6. Choisissez Next, puis saisissez un nom de politique.

    7. Choisissez Create Policy (Créer une politique).

    8. Répétez l'étape Créer une politique intégrée pour ajouter une autre 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 SageMakerUpdateResourcesPolicy 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.

  5. Étape 5 :

    Associez la liste des rôles d'exécution à votre profil utilisateur ou à votre domaine afin de pouvoir parcourir visuellement la liste des rôles et sélectionner celui à utiliser lors de la connexion à une application EMR sans serveur depuis JupyterLab. Vous pouvez utiliser la console SageMaker AI ou le script suivant. Par la suite, toutes vos tâches Apache Spark ou Apache Hive créées à partir de votre bloc-notes accèderont uniquement aux données et aux ressources autorisées par les politiques associées au rôle d'exécution sélectionné.

    Important

    Si vous n'effectuez pas cette étape, vous ne pourrez pas connecter un JupyterLab bloc-notes à une application EMR sans serveur.

    SageMaker AI console

    Pour associer vos rôles d'exécution à 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 le domaine, puis sélectionnez le domaine à l'aide du rôle d'exécution SageMaker AI dont vous avez mis à jour les autorisations.

      • Pour ajouter vos rôles d'exécution à votre domaine : dans l'onglet Configurations des applications de la page des détails du domaine, accédez à la JupyterLabsection.

      • Pour ajouter vos rôles d'exécution à 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'exécution SageMaker AI dont vous avez mis à jour les autorisations. Dans l'onglet Configurations de l'application, accédez à la JupyterLabsection.

    3. Choisissez Modifier et ajoutez les rôles d'exécution ARNs de votre environnement d'exécution EMR sans serveur.

    4. Sélectionnez Envoyer.

    Lors de votre prochaine connexion à une application EMR sans serveur via JupyterLab, les rôles d'exécution devraient apparaître dans un menu déroulant pour être sélectionnés.

    Python script

    Dans une JupyterLab application démarrée depuis un espace privé à l'aide du rôle d'exécution SageMaker AI dont vous avez mis à jour les autorisations, exécutez la commande suivante dans un terminal. Remplacez les domainIDuser-profile-name,studio-accountID, et EMRServerlessRuntimeExecutionRole (s) par leurs valeurs appropriées. Cet extrait de code met à jour les paramètres du profil utilisateur pour un profil utilisateur (client.update_userprofile) ou des paramètres de domaine () spécifiques, en associant spécifiquement les rôles d'exécution d'exécution EMR sans serveur que vous avez créés précédemment. 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))

Compte croisé

Les diagrammes suivants illustrent les rôles et les autorisations nécessaires pour répertorier et se connecter aux applications EMR Serverless depuis Studio lorsque Studio et les applications sont déployés dans différents AWS comptes.

Le diagramme montre les rôles et les autorisations nécessaires pour répertorier et connecter les applications EMR Serverless depuis Studio lorsque Studio et les applications se trouvent dans des AWS comptes différents.

Pour plus d'informations sur la création d'un rôle sur un AWS compte, consultez https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html Création d'un IAM rôle (console).

Avant de commencer :

Si vos applications EMR Serverless et Studio sont déployés dans AWS des comptes distincts, vous configurez les autorisations sur les deux comptes.

Sur le compte EMR Serverless

Procédez comme suit pour créer les rôles et les politiques nécessaires sur le compte sur lequel s'exécute votre application EMR Serverless, également appelé compte de confiance :

  1. Étape 1 : créez au moins un rôle d'exécution de tâches pour votre application EMR Serverless dans votre compte (voir EMRServerlessRuntimeExecutionRoleB le schéma multi-comptes ci-dessus). Choisissez Custom trust policy comme entité de confiance. Ajoutez les autorisations requises par votre travail. Au minimum, vous avez besoin d'un accès complet à un compartiment Amazon S3, ainsi que d'un accès en création et en lecture au catalogue de AWS Glue données.

    Pour obtenir des instructions détaillées sur la création d'un nouveau rôle d'exécution pour vos applications EMR Serverless, procédez comme suit :

    1. Accédez à la console IAM.

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

    3. Ajoutez les autorisations requises par votre rôle d'exécution, nommez la politique, puis choisissez Create policy.

      Pour des exemples de politiques d'exécution d'un rôle d'exécution EMR sans serveur, consultez la section Rôles d'exécution Job pour Amazon EMR Serverless.

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

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

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

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    7. Sur la page Ajouter des autorisations, ajoutez la politique que vous avez créée, puis choisissez Next.

    8. Sur la page Révision, entrez un nom pour le rôle, par exemple EMRServerlessAppRuntimeRoleB et une description facultative.

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

    Grâce à ces rôles, vous et vos collègues pouvez vous connecter à la même application, chacun utilisant un rôle d'exécution assorti d'autorisations correspondant à votre niveau individuel d'accès aux données.

    Note

    Les sessions Spark fonctionnent différemment. Les sessions Spark sont isolées en fonction du rôle d'exécution utilisé dans Studio, de sorte que les utilisateurs ayant des rôles d'exécution différents auront des sessions Spark distinctes et isolées. En outre, si vous avez activé l'identité source pour votre domaine, les sessions Spark sont davantage isolées entre les différentes identités source.

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

    • Autorisations : accordez les autorisations nécessaires (politiques Amazon EMR Serverless) pour autoriser l'AssumableRoleaccès aux ressources EMR sans serveur. Ce rôle est également appelé rôle Access.

    • Relation de confiance : configurez la politique de confiance AssumableRole afin de 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 peut obtenir un accès temporaire aux autorisations dont il a besoin dans le compte EMR Serverless.

    Pour obtenir des instructions détaillées sur la façon de créer un nouveau compte AssumableRole dans votre AWS compte EMR Serverless, 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 autorisations Amazon EMR Serverless permettant l'accès et les EMR opérations sans serveur. Pour plus de détails sur le document de politique, voir Politiques EMR sans serveur dansPolitiques de référence. Remplacez region le ou accountID les instructions transmises EMRServerlessAppRuntimeRole par leurs valeurs réelles avant de copier la liste des instructions dans la politique intégrée de votre rôle.

      Note

      EMRServerlessAppRuntimeRoleVoici le rôle d'exécution du job runtime créé à l'étape 1 (EMRServerlessAppRuntimeRoleBdans le schéma multi-comptes ci-dessus). Vous pouvez inclure autant de ARN chaînes de rôles d'exécution que nécessaire dans l'autorisation, en les séparant par des virgules.

    4. Choisissez Next, puis saisissez un nom de 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.

      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" } ] }
    9. Sur la page Ajouter des autorisations, ajoutez l'autorisation EMRServerlessAppRuntimeRoleB que vous avez créée à l'étape 2, 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 Création d'un IAM rôle (console).

Sur le compte Studio

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

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

    Pour plus d'informations sur les espaces et les rôles d'exécution dans SageMaker l'IA, consultezComprendre 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 d'exécution de l' SageMaker IA, consultezObtenez votre rôle d'exécution.

  2. Étape 2 : Attachez les autorisations suivantes au rôle d'exécution SageMaker AI accédant à votre application EMR Serverless.

    1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/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 en ligne.

    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 SageMakerUpdateResourcesPolicy 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 un nom de 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'ID du compte Amazon EMR Serverless et AssumableRole par le nom du rôle assumé créé dans le compte Amazon EMR Serverless.

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

    Associez la liste des rôles d'exécution à votre domaine ou à votre profil utilisateur afin de pouvoir parcourir visuellement la liste des rôles et sélectionner celui à utiliser lors de la connexion à une application EMR sans serveur depuis JupyterLab. Vous pouvez utiliser la console SageMaker AI ou le script suivant. Par la suite, toutes vos tâches Apache Spark ou Apache Hive créées à partir de votre bloc-notes accèderont uniquement aux données et aux ressources autorisées par les politiques associées au rôle d'exécution sélectionné.

    Important

    Si vous n'effectuez pas cette étape, vous ne pourrez pas connecter un JupyterLab bloc-notes à une application EMR sans serveur.

    SageMaker AI console

    Pour associer vos rôles d'exécution à 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 le domaine, puis sélectionnez le domaine à l'aide du rôle d'exécution SageMaker AI dont vous avez mis à jour les autorisations.

      • Pour ajouter vos rôles d'exécution à votre domaine : dans l'onglet Configurations des applications de la page des détails du domaine, accédez à la JupyterLabsection.

      • Pour ajouter vos rôles d'exécution à 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'exécution SageMaker AI 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 et les rôles d'exécution d'exécution EMR sans serveur.

    4. Sélectionnez Envoyer.

    Lors de votre prochaine connexion à une application EMR sans serveur via JupyterLab, les rôles d'exécution devraient apparaître dans un menu déroulant pour être sélectionnés.

    Python script

    Dans une JupyterLab application démarrée depuis un espace privé à l'aide du 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-namestudio-accountID,, et EMRServerlessRuntimeExecutionRole par leurs valeurs appropriées. Cet extrait de code met à jour les paramètres de profil utilisateur pour un profil utilisateur (client.update_userprofile) ou des paramètres de domaine () spécifiques au sein d'un domaine SageMaker AI. client.update_domain Plus précisément, il définit les rôles d'exécution d'exécution pour Amazon EMR Serverless, que vous avez créés précédemment. Cela permet également à l' JupyterLab application d'assumer un IAM rôle particulier (AssumableRole) pour exécuter des applications EMR sans serveur 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/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))

Politiques de référence

  • EMRPolitiques sans serveur : cette politique permet de gérer les applications EMR sans serveur, notamment de les répertorier, de les créer (avec les balises SageMaker AI requises), de les démarrer, de les arrêter, d'obtenir des informations, de les supprimer, d'accéder aux points de terminaison Livy et de créer des tableaux de bord d'exécution des tâches. Cela permet également de transmettre le rôle d'exécution d'application EMR sans serveur requis au service.

    • EMRServerlessListApplications: autorise l' ListApplications action sur toutes les ressources EMR sans serveur de la région et du AWS compte spécifiés.

    • EMRServerlessPassRole: Permet de transmettre le ou les rôles d'exécution spécifiés dans le AWS compte fourni, mais uniquement lorsque le rôle est transmis auemr-serverless.amazonaws.com service.

    • EMRServerlessCreateApplicationAction: autorise les TagResource actions CreateApplication et sur les ressources EMR sans serveur dans la région et le AWS compte spécifiés. Cependant, cela nécessite que les ressources créées ou étiquetées aient des clés de balise spécifiques (sagemaker:domain-arn,sagemaker:user-profile-arn, etsagemaker:space-arn) présentes avec des valeurs non nulles.

    • EMRServerlessDenyTaggingAction: les UntagResource actions TagResource et sur les ressources EMR sans serveur de la région et du AWS compte spécifiés si aucune des clés de balise spécifiées (sagemaker:domain-arnsagemaker:user-profile-arn, etsagemaker:space-arn) n'est définie pour les ressources.

    • EMRServerlessActions: autorise diverses actions (StartApplication,,StopApplication, GetApplication DeleteApplicationAccessLivyEndpoints, etGetDashboardForJobRun) sur les ressources EMR sans serveur, mais uniquement si les clés de balise spécifiées (sagemaker:domain-arn,sagemaker:user-profile-arn, etsagemaker:space-arn) sont définies avec des valeurs non nulles.

    La IAM politique définie dans le JSON document fourni accorde ces autorisations, mais limite cet accès à la présence de balises SageMaker AI spécifiques sur les applications EMR Serverless afin de garantir que seules les ressources Amazon EMR Serverless associées à un domaine d' SageMaker IA, à un profil utilisateur et à un espace particuliers peuvent être gérées.

    { "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" } } } ] }
  • Politique relative aux actions de mise à jour du domaine, du profil utilisateur et de l'espace : La politique suivante autorise la mise à jour des domaines SageMaker AI, des profils utilisateur et des espaces dans la région et le AWS compte spécifiés.

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