Configurez les autorisations pour activer la mise en vente et le lancement des applications Amazon EMR depuis Studio SageMaker - 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 des applications Amazon EMR depuis Studio SageMaker

Dans cette section, nous détaillons les rôles et les autorisations nécessaires pour répertorier et se connecter aux applications EMR Serverless depuis SageMaker Studio, 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 différents comptes.

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

  • Rôle 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 rôles IAM utilisés par les environnements d'exécution de tâches EMR Serverless 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, 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. CloudWatch Nous vous recommandons de créer ces rôles dans le compte sur lequel les applications EMR sans serveur sont exécutées.

      Pour en savoir plus sur les rôles d’exécution, consultez Rôles d’exécution des tâches dans le Guide de l’utilisateur EMR sans serveur.

      Note

      Vous pouvez définir plusieurs rôles RBAC pour votre application EMR sans serveur. 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 les autorisations RBAC, consultez Bonnes pratiques de sécurité pour Amazon EMR sans serveur.

    • 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 SageMaker AI dispose également de 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 Serverless. Ces rôles confèrent aux applications EMR Serverless les autorisations dont elles ont besoin pour interagir avec d'autres AWS ressources pendant leur exécution.

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

    • Il s'agit des rôles IAM 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 stratégies d’accès requises lors de l’établissement 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 Serverless sont situées dans un compte AWS différent de celui SageMaker du domaine AI. Le fait de disposer d'un rôle IAM dédié pour 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 compte. AWS

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 Serverless, 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 compte. AWS

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 compte. AWS

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

  1. Étape 1 : extrayez l’ARN du 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ès à un compartiment Amazon S3 et établissement de la liste des compartiments. Pour obtenir des 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 sans serveur dans votre compte (EMRServerlessRuntimeExecutionRoleA dans le schéma du cas d’utilisation Compte unique ci-dessus). Choisissez Politique d’approbation personnalisée comme entité de confiance. Ajoutez les autorisations requises par votre tâche. 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 façon de créer un nouveau rôle d’exécution à l’exécution pour vos applications EMR sans serveur, 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. Ajoutez les autorisations requises par votre rôle d’exécution, nommez la politique, puis choisissez Créer une politique.

      Vous pouvez consulter Rôles d’exécution des tâches pour EMR sans serveur 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 d’approbation personnalisée comme entité de confiance.

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

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

    8. Sur la page Vérifier, entrez un nom pour le rôle, tel que 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é depuis 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 sources.

  3. Étape 3 : Récupérez l'ARN du rôle d'exécution SageMaker AI 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 l'ARN du rôle d'exécution de l' SageMaker IA, consultezObtention de votre rôle d’exécution.

    Note

    Les utilisateurs qui découvrent l' SageMaker IA 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. Dans ce cas, passez aux étapes 3 et 4. À la place, les utilisateurs peuvent :

    • 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éer un nouveau rôle d’exécution à partir du menu Gestionnaire de rôles de la console, puis associer 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 de Studio dans Quelles activités ML 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 sans serveur utilise (étape 2).

    Le gestionnaire de rôles ajoute automatiquement au nouveau SageMaker rôle d'exécution les autorisations nécessaires pour exécuter et se connecter aux applications EMR Serverless au nouveau SageMaker rôle d'exécution. À l'aide du gestionnaire de rôles, vous ne pouvez attribuer qu'un seul rôle d'exécution à votre application EMR Serverless, et l'application doit s'exécuter sur le même compte où 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 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 sans serveur permettant l’accès et les opérations EMR sans serveur. Pour plus de détails sur le document de politique, consultez Politiques EMR sans serveur dans Politiques de référence. Remplacez region, accountID et le ou les éléments EMRServerlessAppRuntimeRole transmis par leurs valeurs réelles avant de copier la liste des instructions dans la politique en ligne de votre rôle.

      Note

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

    6. Choisissez Suivant, puis fournissez 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 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 SageMakerUpdateResourcesPolicy, 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.

  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 Serverless 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 attaché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 Serverless.

    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 EMR Serverless Runtime.

    4. Sélectionnez Soumettre.

    Lors de votre prochaine connexion à une application EMR Serverless 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 domainID, user-profile-name, studio-accountID et EMRServerlessRuntimeExecutionRole par leurs valeurs appropriées. Cet extrait de code met à jour les paramètres du profil utilisateur pour un profil utilisateur (client.update_user_profile) ou des paramètres de domaine (client.update_domain) spécifiques, en associant spécifiquement les rôles d’exécution EMR sans serveur à l’exécution que vous avez créés précédemment.

    import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_user_profile( 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 comptes. AWS

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 comptes différents. AWS

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

Avant de commencer :

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

Sur le compte EMR sans serveur

Procédez comme suit pour créer les rôles et les politiques nécessaires sur le compte où votre application EMR sans serveur s’exécute, également appelé compte d’approbation :

  1. Étape 1 : créez au moins un rôle d’exécution de tâches pour votre application EMR sans serveur dans votre compte (EMRServerlessRuntimeExecutionRoleB dans le diagramme Compte croisé ci-dessus). Choisissez Politique d’approbation personnalisée comme entité de confiance. Ajoutez les autorisations requises par votre tâche. 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 façon de créer un nouveau rôle d’exécution à l’exécution pour vos applications EMR sans serveur, 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. Ajoutez les autorisations requises par votre rôle d’exécution, nommez la politique, puis choisissez Créer une politique.

      Pour des exemples de politiques d’exécution d’un rôle d’exécution EMR sans serveur, consultez Rôles d’exécution de tâches pour Amazon 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 d’approbation personnalisée comme entité de confiance.

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

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

    8. Sur la page Vérifier, entrez un nom pour le rôle, tel que 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é depuis 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 sources.

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

    • Autorisations : accordez les autorisations nécessaires (politiques Amazon EMR sans serveur) à AssumableRole pour autoriser l’accès aux ressources EMR sans serveur. Ce rôle est également connu en tant que rôle d’accès.

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

    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 Politique, puis Créer une politique.

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

      Note

      L’élément EMRServerlessAppRuntimeRole ici est le rôle d’exécution de tâches créé à l’étape 1 (EMRServerlessAppRuntimeRoleB dans le diagramme Compte croisé ci-dessus). Vous pouvez inclure autant de chaînes ARN de rôles d’exécution que nécessaire dans l’autorisation, en les séparant par des virgules.

    4. Choisissez Suivant, puis fournissez 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 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.

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

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole" }, "Action": "sts:AssumeRole" } ] }
    9. Dans la page Ajouter des autorisations, ajoutez l’autorisation EMRServerlessAppRuntimeRoleB que vous avez créée à l’étape 2, 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 AWS compte, consultez la section Création d'un rôle IAM (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 l'ARN du rôle d'exécution SageMaker AI 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 l'ARN du rôle d'exécution de l' SageMaker IA, consultezObtention de 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 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 SageMakerUpdateResourcesPolicy, 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 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 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 sans serveur et AssumableRole par le nom du rôle assumable créé dans le compte Amazon EMR sans serveur.

      JSON
      { "Version":"2012-10-17", "Statement": { "Sid": "AllowSTSToAssumeAssumableRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333: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 Serverless 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 attaché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 Serverless.

    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 Serverless.

    4. Sélectionnez Soumettre.

    Lors de votre prochaine connexion à une application EMR Serverless 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 domainID, user-profile-name, studio-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_user_profile) 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 à l’exécution pour Amazon EMR sans serveur, que vous avez créés précédemment. Cela permet également à l' JupyterLab application d'assumer un rôle IAM particulier (AssumableRole) pour exécuter des applications EMR sans serveur au sein du compte Amazon EMR.

    import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_user_profile( 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

  • Politiques EMR 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 Serverless de la région et du compte spécifiés. AWS

    • 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 compte spécifiés. AWS Toutefois, cela nécessite que les ressources créées ou balisées aient des clés de balise spécifiques (sagemaker:domain-arn, sagemaker:user-profile-arn et sagemaker:space-arn) présentes avec des valeurs non null.

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

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

    La politique IAM définie dans le document JSON 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 AI, un profil utilisateur et un espace SageMaker particuliers peuvent être gérées.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "EMRServerlessListApplications", "Effect": "Allow", "Action": [ "emr-serverless:ListApplications" ], "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/*" }, { "Sid": "EMRServerlessPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/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:us-east-1:111122223333:/*", "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:us-east-1:111122223333:/*", "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:us-east-1:111122223333:/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.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "SageMakerUpdateResourcesPolicy", "Effect": "Allow", "Action": [ "sagemaker:UpdateDomain", "sagemaker:UpdateUserprofile", "sagemaker:UpdateSpace" ], "Resource": [ "arn:aws:sagemaker:us-east-1:111122223333:domain/*", "arn:aws:sagemaker:us-east-1:111122223333:user-profile/*" ] } ] }