Utilisation du rôle lié à un service pour Amazon EMR - Amazon EMR

Utilisation du rôle lié à un service pour Amazon EMR

Amazon EMR utilise des rôles liés à un service AWS Identity and Access Management (IAM). Un rôle lié à un service est un type unique de rôle IAM qui est lié directement à Amazon EMR. Le rôle lié à un service est prédéfini par Amazon EMR et inclut les autorisations qu'Amazon EMR requiert pour appeler Amazon EC2 en votre nom afin de nettoyer les ressources du cluster une fois qu'elles ne sont plus utilisées. Le rôle lié à un service fonctionne avec le rôle de service Amazon EMR et le profil d'instance Amazon EC2 pour Amazon EMR. Pour plus d'informations sur le rôle de service et le profil d'instance, consultez la section Configuration des rôles de service IAM pour les autorisations Amazon EMR aux services et ressources AWS..

Amazon EMR définit les autorisations de ce rôle lié à un service et, sauf définition contraire, seul Amazon EMR peut assumer le rôle. Les autorisations définies comprennent la politique d'approbation et la politique d'autorisation. De plus, cette politique d'autorisation ne peut pas être attachée à une autre entité IAM. Vous pouvez supprimer le rôle uniquement après avoir mis fin à tous les clusters EMR du compte.

Pour plus d'informations sur les autres services qui prennent en charge les rôles liés à un service, consultez AWS services that work with IAM (Services AWS qui fonctionnent avec IAM) et recherchez les services avec un Yes (Oui) dans la colonne Service-Linked Role (Rôle lié à un service). Choisissez un Yes (oui) ayant un lien permettant de consulter les détails du rôle pour ce service.

Autorisations du rôle lié à un service pour Amazon EMR

Amazon EMR utilise le rôle AWSServiceRoleForEMRCleanup, qui est un rôle lié à un service qui permet à Amazon EMR de résilier et de supprimer les ressources Amazon EC2 en votre nom si le rôle de service Amazon EMR a perdu cette capacité. Amazon EMR crée le rôle automatiquement lors de la création du cluster s'il n'existe pas déjà.

Le rôle lié à un service AWSServiceRoleForEMRCleanup approuve les services suivants pour endosser le rôle :

  • elasticmapreduce.amazonaws.com

La politique d'autorisations du rôle lié à un service AWSServiceRoleForEMRCleanup permet à Amazon EMR d'effectuer les actions suivantes sur les ressources spécifiées :

  • Action : DescribeInstances sur ec2

  • Action : DescribeSpotInstanceRequests sur ec2

  • Action : ModifyInstanceAttribute sur ec2

  • Action : TerminateInstances sur ec2

  • Action : CancelSpotInstanceRequests sur ec2

  • Action : DeleteNetworkInterface sur ec2

  • Action : DescribeInstanceAttribute sur ec2

  • Action : DescribeVolumeStatus sur ec2

  • Action : DescribeVolumes sur ec2

  • Action : DetachVolume sur ec2

  • Action : DeleteVolume sur ec2

Vous devez configurer les autorisations de manière à permettre à une entité IAM (comme un utilisateur, un groupe ou un rôle) de créer, modifier ou supprimer un rôle lié à un service.

Pour permettre à une entité IAM de créer des rôles liés à un service AWSServiceRoleForEMRCleanup

Ajoutez l'instruction suivante à la stratégie d'autorisation de l'entité IAM qui doit créer le rôle lié à un service :

{ "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/aws-service-role/elasticmapreduce.amazonaws.com*/AWSServiceRoleForEMRCleanup*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "elasticmapreduce.amazonaws.com", "elasticmapreduce.amazonaws.com.cn" ] } } }

Pour permettre à une entité IAM de modifier la description du rôle lié à un service AWSServiceRoleForEMRCleanup

Ajoutez l'instruction suivante à la stratégie d'autorisation de l'entité IAM qui doit modifier la description d'un rôle lié à un service :

{ "Effect": "Allow", "Action": [ "iam:UpdateRoleDescription" ], "Resource": "arn:aws:iam::*:role/aws-service-role/elasticmapreduce.amazonaws.com*/AWSServiceRoleForEMRCleanup*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "elasticmapreduce.amazonaws.com", "elasticmapreduce.amazonaws.com.cn" ] } } }

Pour permettre à une entité IAM de supprimer des rôles liés à un service AWSServiceRoleForEMRCleanup

Ajoutez l'instruction suivante à la stratégie d'autorisation de l'entité IAM qui doit supprimer un rôle lié à un service :

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/elasticmapreduce.amazonaws.com*/AWSServiceRoleForEMRCleanup*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "elasticmapreduce.amazonaws.com", "elasticmapreduce.amazonaws.com.cn" ] } } }

Création d'un rôle lié à un service pour Amazon EMR

Vous n'avez pas besoin de créer manuellement le rôle AWSServiceRoleForEMRCleanup. Lorsque vous lancez un cluster, soit pour la première fois, soit lorsqu'un rôle lié à un service n'est pas présent, Amazon EMR crée le rôle lié à un service pour vous. Vous devez disposer des autorisations de création du rôle lié au service. Pour consulter un exemple d'instruction qui ajoute cette fonctionnalité à la stratégie d'autorisations d'une entité IAM (utilisateur, groupe ou rôle, par exemple), consultez Autorisations du rôle lié à un service pour Amazon EMR.

Important

Si vous utilisiez Amazon EMR avant le 24 octobre 2017, lorsque les rôles liés à un service n'étaient pas pris en charge, il a alors créé le rôle AWSServiceRoleForEMRCleanup dans votre compte. Pour plus d'informations, consultez Un nouveau rôle est apparu dans mon compte IAM.

Modification d'un rôle lié à un service pour Amazon EMR

Amazon EMR ne vous permet pas de modifier le rôle lié à au service AWSServiceRoleForEMRCleanup. Une fois que vous avez créé un rôle lié à un service, vous ne pouvez pas changer le nom du rôle, car plusieurs entités peuvent faire référence à ce rôle. Néanmoins, vous pouvez modifier la description du rôle à l'aide d'IAM.

Modification de la description d'un rôle lié à un service (console IAM)

Vous pouvez utiliser la console IAM, pour modifier la description d'un rôle lié à un service.

Pour modifier la description d'un rôle lié à un service (console)
  1. Dans le panneau de navigation de la console IAM, sélectionnez Roles (Rôles).

  2. Choisissez le nom du rôle à modifier.

  3. À droite de Description du rôle, choisissez Modifier.

  4. Saisissez une nouvelle description dans le champ et sélectionnez Save changes (Enregistrer les modifications).

Modification de la description d'un rôle lié à un service (CLI IAM)

Vous pouvez utiliser les commandes IAM du AWS Command Line Interface pour modifier la description d'un rôle lié à un service.

Pour changer la description d'un rôle d'un rôle lié à un service (CLI)
  1. (Facultatif) Pour afficher la description actuelle d'un rôle, utilisez les commandes suivantes :

    $ aws iam get-role --role-name role-name

    Utilisez le nom du rôle, pas l'ARN, pour faire référence aux rôles avec les commandes CLI. Par exemple, si un rôle a l'ARN : arn:aws:iam::123456789012:role/myrole, vous faites référence au rôle en tant que myrole.

  2. Pour mettre à jour la description d'un rôle lié à un service, utilisez l'une des commandes suivantes :

    $ aws iam update-role-description --role-name role-name --description description

Modification de la description d'un rôle lié à un service (API IAM)

Vous pouvez utiliser l'API IAM pour modifier la description d'un rôle lié à un service.

Pour changer la description d'un rôle lié à un service (API)
  1. (Facultatif) Pour afficher la description actuelle d'un rôle, utilisez la commande suivante :

    API IAM : GetRole

  2. Pour mettre à jour la description d'un rôle, utilisez la commande suivante :

    API IAM : UpdateRoleDescription

Suppression d'un rôle lié à un service pour Amazon EMR

Si vous n'avez plus besoin d'utiliser une fonction ou un service qui nécessite un rôle lié à un service, nous vous recommandons de supprimer ce rôle. De cette façon, vous n'avez aucune entité inutilisée non surveillée ou non gérée activement. Cependant, vous devez nettoyer votre rôle lié à un service avant de pouvoir le supprimer.

Nettoyage d'un rôle lié à un service

Avant de pouvoir utiliser IAM pour supprimer un rôle lié à un service, vous devez d'abord vérifier qu'aucune session n'est active pour le rôle et supprimer toutes les ressources utilisées par le rôle.

Pour vérifier si une session est active pour le rôle lié à un service dans la console IAM
  1. Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le panneau de navigation, sélectionnez Rôles. Sélectionnez le nom (et non la case à cocher) du rôle AWSServiceRoleForEMRCleanup.

  3. Sur la page Récapitulatif du rôle sélectionné, choisissez Access Advisor.

  4. Dans l'onglet Access Advisor, consultez l'activité récente pour le rôle lié à un service.

    Note

    Si vous n'êtes pas certain qu'Amazon EMR utilise le rôle AWSServiceRoleForEMRCleanup, vous pouvez essayer de supprimer ce rôle. Si le service utilise le rôle, la suppression échoue et vous avez accès aux régions dans lesquelles le rôle est utilisé. Si le rôle est utilisé, vous devez attendre que la session se termine avant de pouvoir le supprimer. Vous ne pouvez pas révoquer la session d'un rôle lié à un service.

Pour supprimer les ressources Amazon EMR utilisées par le rôle AWSServiceRoleForEMRCleanup
  • Mettez fin à tous les clusters de votre compte. Pour de plus amples informations, veuillez consulter Arrêter un cluster.

Suppression d'un rôle lié à un service (console IAM)

Vous pouvez utiliser la console IAM pour supprimer un rôle lié à un service.

Pour supprimer un rôle lié à un service (console)
  1. Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le panneau de navigation, sélectionnez Rôles. Sélectionnez la case à cocher en regard de AWSServiceRoleForEMRCleanup, et non le nom ou la ligne.

  3. Pour les actions sur les Rôle en haut de la page, sélectionnez Supprimer.

  4. Dans la boîte de dialogue de confirmation, vérifiez les dernières données consultées dans le service. Elles indiquent quels rôles, parmi ceux sélectionnés, ont accédé en dernier à un service AWS. Cela vous permet de confirmer si le rôle est actif actuellement. Pour poursuivre, choisissez Oui, supprimer.

  5. Consultez les notifications de la console IAM pour surveiller la progression de la suppression du rôle lié à un service. Dans la mesure où la suppression du rôle lié à un service IAM est asynchrone, une fois que vous soumettez le rôle afin qu'il soit supprimé, la suppression peut réussir ou échouer. Si la tâche échoue, vous pouvez choisir View details (Afficher les détails) ou View Resources (Afficher les ressources) à partir des notifications pour connaître le motif de l'échec de la suppression. Si la suppression échoue parce que certaines ressources du service sont actuellement utilisées par le rôle, la raison de l'échec comprend une liste de ressources.

Suppression d'un rôle lié à un service (CLI IAM)

Vous pouvez utiliser les commandes IAM de la AWS Command Line Interface pour supprimer un rôle lié à un service. Dans la mesure où un rôle lié à un service ne peut pas être supprimé s'il est utilisé ou si des ressources lui sont associées, vous devez envoyer une demande de suppression. Si ces conditions ne sont pas satisfaites, cette demande peut être refusée.

Pour supprimer un rôle lié à un service (CLI)
  1. Pour vérifier l'état de la tâche de suppression, vous devez capturer l'information deletion-task-id dans la réponse. Tapez la commande suivante pour envoyer une demande de suppression d'un rôle lié à un service :

    $ aws iam delete-service-linked-role --role-name AWSServiceRoleForEMRCleanup
  2. Tapez la commande suivante pour vérifier l'état de la tâche de suppression :

    $ aws iam get-service-linked-role-deletion-status --deletion-task-id deletion-task-id

    L'état de la tâche de suppression peut être NOT_STARTED, IN_PROGRESS, SUCCEEDED ou FAILED. Si la suppression échoue, l'appel renvoie le motif de l'échec, afin que vous puissiez apporter une solution.

Suppression d'un rôle lié à un service (API IAM)

Vous pouvez utiliser l'API IAM pour supprimer un rôle lié à un service. Dans la mesure où un rôle lié à un service ne peut pas être supprimé s'il est utilisé ou si des ressources lui sont associées, vous devez envoyer une demande de suppression. Si ces conditions ne sont pas satisfaites, cette demande peut être refusée.

Pour supprimer un rôle lié à un service (API)
  1. Pour envoyer une demande de suppression d'un rôle lié à un service, appelez DeleteServiceLinkedRole. Dans la demande, spécifiez le nom du rôle AWSServiceRoleForEMRCleanup.

    Pour vérifier l'état de la tâche de suppression, vous devez capturer l'information DeletionTaskId dans la réponse.

  2. Pour vérifier l'état de la suppression, appelez GetServiceLinkedRoleDeletionStatus. Dans la demande, spécifiez le DeletionTaskId.

    L'état de la tâche de suppression peut être NOT_STARTED, IN_PROGRESS, SUCCEEDED ou FAILED. Si la suppression échoue, l'appel renvoie le motif de l'échec, afin que vous puissiez apporter une solution.

Régions prises en charge pour les rôles liés à un service Amazon EMR

Amazon EMR prend en charge l'utilisation des rôles liés à un service vers les régions suivantes.

Nom de la région Identité de la région Prise en charge dans Amazon EMR
US East (Virginie du Nord) us-east-1 Oui
USA Est (Ohio) us-east-2 Oui
USA Ouest (Californie du Nord) us-west-1 Oui
USA Ouest (Oregon) us-west-2 Oui
Asie-Pacifique (Mumbai) ap-south-1 Oui
Asie-Pacifique (Osaka) ap-northeast-3 Oui
Asie-Pacifique (Séoul) ap-northeast-2 Oui
Asie-Pacifique (Singapore) ap-southeast-1 Oui
Asie-Pacifique (Sydney) ap-southeast-2 Oui
Asie Pacifique (Tokyo) ap-northeast-1 Oui
Canada (Centre) ca-central-1 Oui
Europe (Francfort) eu-central-1 Oui
Europe (Irlande) eu-west-1 Oui
Europe (Londres) eu-west-2 Oui
Europe (Paris) eu-west-3 Oui
Amérique du Sud (São Paulo) sa-east-1 Oui