Exécuter l'outil EC2Rescue sur les instances inaccessibles - AWS Systems Manager

Exécuter l'outil EC2Rescue sur les instances inaccessibles

EC2Rescue peut vous aider à diagnostiquer et à résoudre les problèmes qui peuvent survenir sur les instances Amazon Elastic Compute Cloud (Amazon EC2) pour Linux et Windows Server. Vous pouvez exécuter l'outil manuellement, comme décrit dans Utilisation d'EC2Rescue pour Linux Server et Utilisation d'EC2Rescue pour Windows Server. Vous pouvez aussi exécuter l'outil automatiquement en utilisant Systems Manager Automation et le runbook AWSSupport-ExecuteEC2Rescue. Automation est une fonctionnalité de AWS Systems Manager. Le runbook AWSSupport-ExecuteEC2Rescue est destiné à exécuter une combinaison d'actions Systems Manager, d'actions AWS CloudFormation et de fonctions Lambda qui automatisent les étapes normalement requises pour utiliser EC2Rescue.

Vous pouvez utiliser le runbook AWSSupport-ExecuteEC2Rescue pour dépanner et potentiellement corriger différents types de problèmes liés aux systèmes d'exploitation (SE). Les instances avec des volumes racines chiffrés ne sont pas prises en charge. Pour obtenir une liste complète, consultez les rubriques suivantes :

Windows : consultez Action de résolution dans Utilisation d'EC2Rescue pour Windows Server avec la ligne de commande.

Linux et macOS : certains modules EC2Rescue pour Linux détectent et tentent de corriger des problèmes. Pour de plus amples informations, consultez la documentation aws-ec2rescue-linux pour chaque module sur GitHub.

Comment ça marche

Le dépannage d'une instance avec Automation et le runbook AWSSupport-ExecuteEC2Rescue fonctionne le la façon suivante :

  • Vous spécifiez l'ID de l'instance inaccessible et lancez le runbook.

  • Le système crée un VPC temporaire, puis exécute une série de fonctions Lambda pour configurer le VPC.

  • Le système identifie un sous-réseau pour votre VPC temporaire dans la même zone de disponibilité que votre instance d'origine.

  • Le système lance une instance d'assistant SSM temporaire.

  • Le système arrête l'instance originale et crée une sauvegarde. Ensuite, il rattache le volume racine original à l'instance d'assistant.

  • Le système utilise l'action Run Command pour exécuter EC2Rescue sur l'instance d'assistant. EC2Rescue identifie et essaye de corriger les problèmes sur le volume racine original attaché. Lorsque vous avez terminé, EC2Rescue rattache le volume racine à l'instance d'origine.

  • Le système redémarre votre instance originale et met fin à l'instance temporaire. Le système met également fin au VPC temporaire et aux fonctions Lambda créés au début de l'automatisation.

Avant de commencer

Avant d'exécuter l'automatisation suivante, veillez à exécuter les actions suivantes :

  • Copiez l'ID de l'instance de l'instance inaccessible. Vous spécifierez cet ID au cours de la procédure.

  • Vous pouvez également recueillir l'ID d'un sous-réseau dans la même zone de disponibilité que votre instance inaccessible. L'instance EC2Rescue sera créée dans ce sous-réseau. Si vous ne spécifiez pas de sous-réseau, Automation crée un nouveau VPC temporaire dans votre Compte AWS. Vérifiez que votre Compte AWS possède au moins un VPC disponible. Par défaut, vous pouvez créer cinq VPC par région. Si vous avez déjà créé cinq VPC dans la région, l'automatisation échoue sans apporter les modifications à votre instance. Pour de plus amples informations sur les quotas Amazon VPC, consultez VPC et sous-réseaux dans le Guide de l'utilisateur Amazon VPC.

  • Vous pouvez éventuellement créer et spécifier un rôle AWS Identity and Access Management (IAM) pour Automation. Si vous ne spécifiez pas ce rôle, Automation s'exécute dans le contexte de l'utilisateur qui a exécuté l'automatisation.

Attribution d'autorisations AWSSupport-EC2Rescue pour exécuter des actions sur vos instances

EC2Rescue a besoin d'autorisation pour réaliser une série d'action sur vos instances pendant l'automatisation. Ces actions appellent les services AWS Lambda, IAM et Amazon EC2 pour essayer en toute sécurité de corriger les problèmes liés à vos instances. Si vous avez des autorisations niveau administrateur dans votre Compte AWS et/ou VPC, vous pouvez peut-être exécuter l'instance d'Automation sans configurer les autorisations, comme décrit dans cette section. Si vous ne possédez pas les autorisations niveau administrateur, donc vous, ou un administrateur, devez configurer les autorisations en utilisant l'une des options suivantes.

Attribution des autorisations en utilisant les politiques IAM

Vous pouvez attacher la politique IAM suivante à votre utilisateur, groupe ou rôle IAM en tant que politique en ligne, ou vous pouvez créer une nouvelle politique IAM gérée et la relier à votre utilisateur, groupe ou rôle. Pour plus d'informations au sujet de l'ajout d'une politique en ligne à votre compte utilisateur, groupe ou rôle, consultez la page Utilisation de politiques en ligne. Pour plus d'informations sur la création d'une nouvelle politique gérée, consultez la page Utilisation de politiques gérées.

Note

Si vous créez une nouvelle politique IAM gérée, vous devez aussi l'attacher à la politique gérée AmazonSSMAutomationRole pour que vos instances puissent communiquer avec l'API Systems Manager.

Politique IAM pour AWSSupport-EC2Rescue

Remplacez account ID (ID du compte) par vos propres informations.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:account ID:function:AWSSupport-EC2Rescue-*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::awssupport-ssm.*/*.template", "arn:aws:s3:::awssupport-ssm.*/*.zip" ], "Effect": "Allow" }, { "Action": [ "iam:CreateRole", "iam:CreateInstanceProfile", "iam:GetRole", "iam:GetInstanceProfile", "iam:PutRolePolicy", "iam:DetachRolePolicy", "iam:AttachRolePolicy", "iam:PassRole", "iam:AddRoleToInstanceProfile", "iam:RemoveRoleFromInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DeleteInstanceProfile" ], "Resource": [ "arn:aws:iam::account ID:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::account ID:instance-profile/AWSSupport-EC2Rescue-*" ], "Effect": "Allow" }, { "Action": [ "lambda:CreateFunction", "ec2:CreateVpc", "ec2:ModifyVpcAttribute", "ec2:DeleteVpc", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:DetachInternetGateway", "ec2:DeleteInternetGateway", "ec2:CreateSubnet", "ec2:DeleteSubnet", "ec2:CreateRoute", "ec2:DeleteRoute", "ec2:CreateRouteTable", "ec2:AssociateRouteTable", "ec2:DisassociateRouteTable", "ec2:DeleteRouteTable", "ec2:CreateVpcEndpoint", "ec2:DeleteVpcEndpoints", "ec2:ModifyVpcEndpoint", "ec2:Describe*", "autoscaling:DescribeAutoScalingInstances" ], "Resource": "*", "Effect": "Allow" } ] }

Attribution des autorisations en utilisant un modèle AWS CloudFormation

AWS CloudFormation automatise le processus de création des rôles et politiques IAM en utilisant un modèle préconfiguré. Utilisez la procédure suivante pour créer les rôles et les politiques IAM pour l'automatisation EC2Rescue à l'aide d'AWS CloudFormation.

Pour créer les rôles et les politiques IAM obligatoire pour EC2Rescue
  1. Téléchargez AWSSupport-EC2RescueRole.zip et extrayez le fichier AWSSupport-EC2RescueRole.json pour l'enregistrer dans un répertoire de votre machine locale.

  2. Si votre Compte AWS est une partition spéciale, modifiez le modèle pour remplacer les valeurs de l'ARN par celles de votre partition.

    Par exemple, pour les régions de Chine, remplacez toutes les occurrences de arn:aws par arn:aws-cn.

  3. Connectez-vous à la AWS Management Console et ouvrez la console AWS CloudFormation à l'adresse https://console.aws.amazon.com/cloudformation.

  4. Sélectionnez Créer une pile, Avec de nouvelles ressources (standard).

  5. Sur la page Créer une pile, pour Prérequis - Préparer le modèle, sélectionnez Le modèle est prêt.

  6. Dans Spécifier le modèle, sélectionnez Charger un modèle de fichier.

  7. Sélectionnez Choisir le fichier, puis recherchez et sélectionnez le fichier AWSSupport-EC2RescueRole.json dans le répertoire où vous l'avez extrait.

  8. Sélectionnez Suivant.

  9. Dans la page Spécifier les détails de la pile, pour le champ Nom de la pile, entrez un nom pour identifier cette pile, puis sélectionnez Suivant.

  10. (Facultatif) Dans la zone Balises, appliquez une ou plusieurs paires nom/valeur de clé de balise à la pile.

    Les balises sont des métadonnées facultatives que vous affectez à une ressource. Les balises vous permettent de classer une ressource de différentes façons, par exemple, par objectif, par propriétaire ou par environnement. Par exemple, vous pouvez baliser une pile pour identifier le type de tâches qu'elle exécute, les types de cibles ou d'autres ressources concernées, et l'environnement dans lequel elle est exécutée.

  11. Choisissez Next (Suivant)

  12. Sur la page Révision, passez en revue les détails de la pile, puis faites défiler vers le bas et sélectionnez l'option Je reconnais que AWS CloudFormation pourrait créer des ressources IAM.

  13. Sélectionnez Créer une pile.

    AWS CloudFormation affiche le statut CREATE_IN_PROGRESS pendant quelques minutes. Le statut passe à CREATE_COMPLETE après la création de la pile. Vous pouvez également choisir l'icône d'actualisation pour vérifier le statut du processus de création.

  14. Dans la liste Piles, sélectionnez l'option à côté de la pile que vous venez de créer, puis sélectionnez l'onglet Sorties.

  15. Notez la Valeur. Il s'agit de l'ARN de l'AssumeRole. Vous spécifiez cet ARN lorsque vous exécutez l'automatisation lors de la procédure suivante, Exécution d'Automation.

Exécution d'Automation

Important

L'automatisation suivante arrête l'instance inaccessible. L'arrêt de l'instance peut entraîner la perte de données sur des volumes de stockage d'instance attachés (le cas échéant). L'arrêt de l'instance peut aussi causer le changement de l'adresse IP publique, si aucune adresse IP Elastic n'est associée.

Pour exécuter l'automatisation AWSSupport-ExecuteEC2Rescue
  1. Ouvrez la console AWS Systems Manager à l'adresse https://console.aws.amazon.com/systems-manager/.

  2. Dans le panneau de navigation de gauche, sélectionnez Automation (Automatisation).

  3. Sélectionnez Execute automation (Exécuter l'automatisation).

  4. Dans la section Document d'automatisation, sélectionnez M'appartenant ou appartenant à Amazon dans la liste.

  5. Dans la liste des runbooks, sélectionnez le bouton de la carte pour AWSSupport-ExecuteEC2Rescue, puis sélectionnez Next (Suivant).

  6. Sur la page Exécuter le document d'automatisation, sélectionnez Exécution simple.

  7. Dans la section Détails du document, vérifiez que l'option Version du document est définie sur la version par défaut la plus importante. Par exemple, $DEFAULT ou 3 (par défaut).

  8. Dans la section Paramètres d'entrée, spécifiez les paramètres suivants :

    1. Pour UnreachableInstanceId, spécifiez l'ID de l'instance inaccessible.

    2. (Facultatif) Pour EC2RescueInstanceType, spécifiez un type pour l'instance EC2Rescue. Le type d'instance par défaut est t2.medium.

    3. Pour AutomationAssumeRole, si vous avez créé des rôles pour cette automatisation à l'aide de la procédure AWS CloudFormation décrite plus haut dans cette rubrique, sélectionnez l'ARN d'AssumeRole que vous avez créé dans la console AWS CloudFormation.

    4. (Facultatif) Pour LogDestination, spécifiez un compartiment S3 si vous souhaitez collecter les journaux de niveau du système d'exploitation tout en dépannant votre instance. Les journaux sont chargés automatiquement dans le compartiment spécifié.

    5. Pour SubnetId, spécifiez un sous-réseau dans un VPC existant dans la même zone de disponibilité que l'instance inaccessible. Par défaut, Systems Manager crée un VPC, mais vous pouvez spécifier un sous-réseau dans un VPC existant si vous le souhaitez.

      Note

      Si vous ne voyez pas l'option permettant de spécifier un compartiment ou un ID de sous-réseau, vérifiez que vous utilisez la version Default (Par défaut) la plus récente du runbook.

  9. (Facultatif) Dans la section Tags (Balises), appliquez une ou plusieurs paires nom/valeur de clé de balise pour aider à identifier l'automatisation, par exemple, Key=Purpose,Value=EC2Rescue.

  10. Sélectionnez Execute (Exécuter).

Le runbook crée une AMI de sauvegarde dans le cadre de l'automatisation. Toutes les autres ressources créées par l'automatisation sont automatiquement supprimées, mais cette AMI reste dans votre compte. L'AMI est nommée selon la convention suivante :

AMI de sauvegarde : AWSSupport-EC2Rescue:UnreachableInstanceId

Vous pouvez localiser cette AMI dans la console Amazon EC2 en recherchant l'ID d'exécution d'Automation.