

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
<a name="studio-emr-serverless-permissions"></a>

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](https://docs.aws.amazon.com/http://emr/latest/EMR-Serverless-UserGuide/jobs-spark.html#spark-defaults-executionRoleArn) 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](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html) 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](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-best-practices.html#security-practice-rbac).
  + 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
<a name="studio-set-up-emr-serverless-permissions-singleaccount"></a>

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\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-serverless-permissions-setup-singleaccount.png)


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](https://console.aws.amazon.com/S3).

   Pour savoir comment trouver un compartiment par son nom, consultez [Accès à un compartiment Amazon S3 et établissement de la liste des compartiments](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html). Pour obtenir des informations sur la création d’un compartiment Amazon S3, consultez [Création d’un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html). 

1. **É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](https://console.aws.amazon.com/iam).

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

   1. 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](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html) pour trouver des exemples de politiques d’exécution pour un rôle d’exécution EMR sans serveur.

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

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

   1. 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"
              }
          ]
      }
      ```

------

   1. Dans la page **Ajouter des autorisations**, ajoutez la politique que vous avez créée, puis choisissez **Suivant**.

   1. Sur la page **Vérifier**, entrez un nom pour le rôle, tel que `EMRServerlessAppRuntimeRoleA`, et une description facultative.

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

1. **É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, consultez[Comprendre les autorisations d’espace de domaine et les rôles d’exécution](execution-roles-and-spaces.md).

   Pour plus d'informations sur la façon de récupérer l'ARN du rôle d'exécution de l' SageMaker IA, consultez[Obtention de votre rôle d’exécution](sagemaker-roles.md#sagemaker-roles-get-execution-role).
**Note**  
 Les utilisateurs novices en 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](https://console.aws.amazon.com/sagemaker).
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 à l'exécution et à la connexion aux applications EMR sans serveur 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 sans serveur, 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.

1. **É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/](https://console.aws.amazon.com/sagemaker/).

   1. 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 (/).

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

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

   1. 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](#studio-set-up-emr-serverless-permissions-reference). 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.

   1. Choisissez **Suivant**, puis fournissez un **nom de politique**.

   1. Choisissez **Create Policy** (Créer une politique).

   1. 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](#studio-set-up-emr-serverless-permissions-reference). 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.

1. **É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](connect-emr-serverless-application.md). 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/](https://console.aws.amazon.com/sagemaker/).

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

   1. 
      + 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 **JupyterLab**section.
      + 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 **JupyterLab**section.

   1. Choisissez **Modifier** et ajoutez les rôles d'exécution ARNs de votre EMR Serverless Runtime.

   1. 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é
<a name="studio-set-up-emr-serverless-permissions-crossaccount"></a>

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\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-serverless-permissions-setup-crossaccount.png)


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](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 : 
+ 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, consultez[Comprendre les autorisations d’espace de domaine et les rôles d’exécution](execution-roles-and-spaces.md). Pour plus d'informations sur la façon de récupérer l'ARN du rôle d'exécution de l' SageMaker IA, consultez[Obtention de votre rôle d’exécution](sagemaker-roles.md#sagemaker-roles-get-execution-role).
+ Extrayez l’ARN du compartiment Amazon S3 que vous utiliserez pour les sources de données et le stockage des données de sortie dans la [console Amazon S3](https://console.aws.amazon.com/S3).

  Pour obtenir des informations sur la création d’un compartiment Amazon S3, consultez [Création d’un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html). Pour savoir comment trouver un compartiment par son nom, consultez [Accès à un compartiment Amazon S3 et établissement de la liste des compartiments](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html).

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
<a name="studio-set-up-emr-serverless-permissions-crossaccount-emraccount"></a>

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](https://console.aws.amazon.com/iam).

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

   1. 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](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html).

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

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

   1. 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"
              }
          ]
      }
      ```

------

   1. Dans la page **Ajouter des autorisations**, ajoutez la politique que vous avez créée, puis choisissez **Suivant**.

   1. Sur la page **Vérifier**, entrez un nom pour le rôle, tel que `EMRServerlessAppRuntimeRoleB`, et une description facultative.

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

1. **É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](https://console.aws.amazon.com/iam).

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

   1. 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](#studio-set-up-emr-serverless-permissions-reference). 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. 

   1. Choisissez **Suivant**, puis fournissez un **nom de politique**.

   1. Choisissez **Create Policy** (Créer une politique).

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

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

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

      `studio-account`Remplacez-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"
              }
          ]
      }
      ```

------

   1. Dans la page **Ajouter des autorisations**, ajoutez l’autorisation `EMRServerlessAppRuntimeRoleB` que vous avez créée à l’étape 2, puis choisissez **Suivant**.

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

   1. 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 rôle IAM (console).](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)

### Sur le compte Studio
<a name="studio-set-up-emr-serverless-permissions-crossaccount-studioaccount"></a>

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, consultez[Comprendre les autorisations d’espace de domaine et les rôles d’exécution](execution-roles-and-spaces.md).

   Pour plus d'informations sur la façon de récupérer l'ARN du rôle d'exécution de l' SageMaker IA, consultez[Obtention de votre rôle d’exécution](sagemaker-roles.md#sagemaker-roles-get-execution-role).

1. **É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/](https://console.aws.amazon.com/iam/).

   1. 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 (/). 

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

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

   1. 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](#studio-set-up-emr-serverless-permissions-reference). 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.

   1. Choisissez **Suivant**, puis fournissez un **nom de politique**.

   1. Choisissez **Create Policy** (Créer une politique).

   1. 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"
          }
      }
      ```

------

1. **É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](connect-emr-serverless-application.md). 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/](https://console.aws.amazon.com/sagemaker/).

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

   1. 
      + 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 **JupyterLab**section.
      + 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 **JupyterLab**section.

   1. Choisissez **Modifier** et ajoutez le ARNs rôle que vous assumez et les rôles d'exécution d'exécution EMR Serverless.

   1. 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
<a name="studio-set-up-emr-serverless-permissions-reference"></a>
+ **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 au`emr-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`, et`sagemaker: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/*"
              ]
          }
      ]
  }
  ```

------