Passer au contenu

Pourquoi Systems Manager n'affiche-t-il pas mon instance Amazon EC2 en tant qu'instance gérée ?

Lecture de 12 minute(s)
0

Je souhaite savoir pourquoi je reçois le message d'erreur « SSM Agent is not online” or “Connection Lost” ou pourquoi mon instance Amazon Elastic Compute Cloud (Amazon EC2) n'est pas visible dans Fleet Manager.

Brève description

Vous recevez les notifications suivantes si votre AWS Systems Manager Agent (SSM Agent) est hors ligne sur votre instance Amazon Elastic Compute Cloud (Amazon EC2) :

Remarque : Si votre SSM Agent est hors ligne, votre instance n'apparaît pas comme étant gérée dans Systems Manager.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

Remplissez les prérequis suivants, puis utilisez le dossier d’exploitation AWSSupport-TroubleshootManagedInstance pour déterminer pourquoi SSM Agent est hors ligne ou ne peut pas se connecter à Systems Manager. Pour plus d'informations, consultez la section Exécuter une opération d'automatisation optimisée par Systems Manager Automation et Configuration de l'automatisation.

Vous pouvez également utiliser l'interface de ligne de commande AWS pour résoudre les problèmes liés à votre instance ou dépanner cette dernière manuellement.

Vérifier que SSM Agent est installé et en cours d'exécution

Important : Tout au long des étapes de résolution de problèmes, sélectionnez la région AWS dans laquelle se trouve votre instance.

Vérifiez que Systems Manager prend en charge votre système d'exploitation. Puis, exécutez la commande spécifique à votre système d'exploitation pour vérifier que vous avez installé SSM Agent.

Remarque : SSM Agent est préinstallé sur la plupart des Amazon Machine Images (AMI). Pour plus d'informations, consultez la section Rechercher des AMI sur lesquelles SSM Agent est préinstallé. Si vous n'avez pas installé SSM Agent dans votre instance, installez-le manuellement sous Linux, Windows ou macOS.

Pour vérifier que SSM Agent est en cours d'exécution et qu’il n'est pas en veille prolongée, procédez comme suit :

  1. Ouvrez la console Amazon EC2.
  2. Dans le volet de navigation de gauche, sélectionnez Instances.
  3. Sélectionnez l’instance.
  4. Choisissez Actions, Surveiller et résoudre les problèmes, Obtenir le journal système.

Si votre SSM Agent est en cours d'exécution, le message « Amazon SSM Agent vx.x.x.x is running » s'affiche.

Si votre SSM Agent est en veille prolongée, vous recevez l'un des messages suivants, suivi du motif de la veille prolongée :

  • « SSM Agent entering hibernation due to error: »
  • « SSM Agent unable to acquire credentials: »

Remarque : Si vous utilisez la version 3.3.2471.0 ou ultérieure de SSM Agent, consultez le journal système de votre instance pour trouver la raison pour laquelle votre SSM Agent est en veille prolongée.

Utiliser le dossier d’exploitation d’automatisation de Systems Manager

Prérequis : Avant de lancer l'automatisation, assurez-vous que votre utilisateur ou rôle Gestion des identités et des accès AWS (AWS IAM) dispose des autorisations nécessaires. Pour plus d’informations, consultez la section Autorisations IAM requises sur AWSSupport-TroubleshootManagedInstance.

Pour exécuter le dossier d’exploitation, procédez comme suit :

  1. Ouvrez le dossier d’exploitation AWSSupport-TroubleshootManagedInstance.
  2. Dans les paramètres d'entrée, saisissez les informations suivantes :
    Pour InstanceId, saisissez l'ID de l'instance concernée. Vous pouvez saisir manuellement l'ID de l'instance ou utiliser le sélecteur d'instance interactif. Si vous utilisez le sélecteur d'instance, modifiez le filtre de Afficher les instances gérées uniquement à Afficher toutes les instances.
    (Facultatif) Dans AutomationAssumeRole, saisissez l’ARN du rôle IAM qui permet à Systems Manager Automation d’effectuer des actions en votre nom. Si vous ne choisissez pas de rôle, AWS Systems Manager Automation utilise les autorisations de l’utilisateur qui exécute ce document.
  3. Sélectionnez Exécuter.

Une fois l'automatisation terminée, examinez la section Sorties. La variable FinalOutput.Message indique si Systems Manager gère l'instance, si une vérification a réussi ou échoué et fournit des informations sur le mode de résolution d’un échec.

Utiliser l'AWS CLI pour résoudre des problèmes liés à votre SSM Agent hors ligne

Procédez comme suit :

  1. Vérifiez que vous pouvez accéder à votre instance via SSH ou le protocole Remote Desktop Protocol.
  2. Exécutez la commande ssm-cli de l’AWS CLI pour résoudre les problèmes de disponibilité des instances gérées :
    Linux et MacOS
    ssm-cli get-diagnostics --output table
    Windows
    ssm-cli.exe get-diagnostics --output table
    PowerShell
    .\ssm-cli.exe get-diagnostics --output table
    Remarque : Sur les ordinateurs Windows Server, vous devez accéder au répertoire C:\Program Files\Amazon\SSM avant d'exécuter la commande ssm-cli.

Si SSM Agent ne fonctionne pas correctement, il est possible que la commande ssm-cli ne soit pas disponible. Pour plus d’informations, consultez la section Résolution des problèmes liés à SSM Agent.

Résoudre manuellement des problèmes liés à votre instance Amazon EC2

Vérifier la connectivité aux points de terminaison de Systems Manager sur le port 443

La vérification de la connectivité aux points de terminaison de Systems Manager sur le port 443 est spécifique à votre système d'exploitation et aux paramètres de votre sous-réseau. Pour obtenir la liste des points de terminaison de Systems Manager par région, consultez la section Points de terminaison de service.

Remarque : Dans les exemples suivants, le point de terminaison ssmmessages est nécessaire pour le gestionnaire de session.

Instances Linux EC2

Utilisez les commandes Telnet ou Netcat pour vérifier la connectivité aux points de terminaison sur le port 443 pour les instances Linux EC2. Netcat n’est pas préinstallé sur les instances EC2. Pour installer Netcat manuellement, consultez la page Ncat sur le site Web de Nmap.

Remarque : Dans les commandes suivantes, remplacez RegionID par l'ID de région de votre instance.

Commandes Telnet :

telnet ssm.RegionID.amazonaws.com 443
telnet ec2messages.RegionID.amazonaws.com 443
telnet ssmmessages.RegionID.amazonaws.com 443

Exemple de connexion Telnet :

root@111800186:~# telnet ssm.us-east-1.amazonaws.com 443
Trying 52.46.141.158...
Connected to ssm.us-east-1.amazonaws.com.
Escape character is '^]'.

Pour quitter Telnet, appuyez sur les touches Ctrl et ]. Saisissez quitter, puis appuyez sur Entrée.

Commandes Netcat :

nc -vz ssm.RegionID.amazonaws.com 443
nc -vz ec2messages.RegionID.amazonaws.com 443
nc -vz ssmmessages.RegionID.amazonaws.com 443

Instances Windows EC2

Pour vérifier la connectivité aux points de terminaison sur le port 443 pour les instances Windows EC2, exécutez les commandes Windows PowerShell suivantes :

Test-NetConnection ssm.RegionID.amazonaws.com -port 443
Test-NtConnection ec2messages.RegionID.amazonaws.com -port 443
Test-NetConnection ssmmessages.RegionID.amazonaws.com -port 443

Sous-réseaux publics

Les points de terminaison Systems Manager sont des points de terminaison publics. Pour résoudre les problèmes de connectivité liés aux instances d'un sous-réseau public, la table de routage de votre instance doit acheminer le trafic Internet vers une passerelle Internet. Aussi, vos groupes de sécurité Amazon Virtual Private Cloud (Amazon VPC) et vos listes de contrôle d’accès réseau (ACL réseau) doivent autoriser les connexions sortantes sur le port 443.

Sous-réseaux privés

Utilisez des adresses IP privées pour accéder en privé aux API Amazon EC2 et Systems Manager. Pour résoudre les problèmes de connectivité avec une instance d'un sous-réseau privé, la table de routage de votre instance doit acheminer le trafic Internet vers une passerelle NAT. Vous devez également configurer votre point de terminaison de VPC pour atteindre les points de terminaison Systems Manager.

Pour plus d’informations, consultez la section Comment puis-je créer des points de terminaison de VPC pour pouvoir utiliser Systems Manager afin de gérer des instances EC2 privées sans accès Internet ?

Remarque : chaque point de terminaison d’interface crée une interface réseau élastique dans le sous-réseau fourni.

Dans le cadre des bonnes pratiques de sécurité pour les sous-réseaux privés, vérifiez les paramètres suivants :

  • Le groupe de sécurité attaché à l’interface réseau de votre point de terminaison de VPC autorise le trafic entrant de port TCP 443 en provenance du groupe de sécurité attaché à votre instance.
  • Le groupe de sécurité attaché à votre instance autorise la sortie de trafic du port TCP 443 jusqu’à l’adresse IP privée de l’interface réseau du point de terminaison de votre VPC.

Vérifier la configuration de Configuration de la gestion de l’hôte par défaut

Remarque : Si vous n’avez pas activé Configuration de la gestion de l’hôte par défaut, passez à la section Vérifier que le rôle IAM approprié est associé à l’instance.

Si le rôle IAM créé par Configuration de gestion de l’hôte par défaut ne dispose pas d’autorisations suffisantes pour votre cas d'utilisation, vous pouvez ajouter des stratégies.

Toutes les instances associées doivent utiliser le Service de métadonnées d’instance version 2 (IMDSv2). Pour vérifier votre configuration IMDSv2, utilisez la métrique Amazon CloudWatch MetadataNoToken pour déterminer quand IMDSv1 n’est pas utilisé. Puis, vérifiez si vos instances sont transférées à IMDSv2.

Configuration de la gestion de l’hôte par défaut est disponible dans la version 3.2.582.0 ou ultérieure de SSM Agent. Pour vérifier la version de votre SSM Agent, consultez la section Vérification du numéro de version de SSM Agent.

Pour vérifier la configuration de Configuration de gestion de l’hôte par défaut, utilisez la console Systems Manager ou l'AWS CLI.

Console Systems Manager

Procédez comme suit :

  1. Ouvrez la console Systems Manager.
  2. Dans le volet de navigation, choisissez Fleet Manager.
  3. Dans la liste déroulante Gestion de compte, sélectionnez Configuration de la gestion de l’hôte par défaut.
  4. Vérifiez que le paramètre Activer la configuration de la gestion de l’hôte par défaut est activé.

AWS CLI

Exécutez la commande de l'interface de ligne de commande AWS get-service-setting pour vérifier la configuration de Configuration de gestion de l’hôte par défaut :

aws ssm get-service-setting \
--setting-id arn:aws:ssm:RegionID:AccountID:servicesetting/ssm/managed-instance/default-ec2-instance-management-role

Remarque : Remplacez AccountID par l'ID de votre compte AWS.

Après avoir activé Configuration de gestion de l’hôte par défaut, une sortie similaire à la sortie suivante s’affiche :

{
  "ServiceSetting": {
    "SettingId": "/ssm/managed-instance/default-ec2-instance-management-role",
    "SettingValue": "service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole",
     "LastModifiedDate": 1679492424.738,
    "LastModifiedUser": "arn:aws:sts::012345678910:assumed-role/role/role-name",
    "ARN": "arn:aws:ssm:ap-southeast-1:012345678910:servicesetting/ssm/managed-instance/default-ec2-instance-management-role",
    "Status": "Customized"
  }
}

Remarque : si la valeur de SettingValue est $None, cela signifie que Configuration de la gestion de l’hôte par défaut n’est pas configurée.

Vérifier que Configuration de la gestion de l’hôte par défaut utilise un rôle IAM approprié

Il est recommandé d'utiliser le rôle IAM AWSSystemsManagerDefaultEC2InstanceManagementRole lorsque vous configurez Configuration de gestion de l’hôte par défaut. Pour utiliser un autre rôle, assurez-vous que la stratégie IAM AmazonSSMManagedEC2InstanceDefaultPolicy est associée au rôle.

Si vous avez attaché des profils d’instance à vos instances, supprimez toutes les autorisations permettant l’opération ssm:UpdateInstanceInformation. SSM Agent essaie d’utiliser les autorisations de profil d’instance avant d’utiliser les autorisations de Configuration de la gestion de l’hôte par défaut. Lorsque vous autorisez l’opération ssm:UpdateInstanceInformation dans vos profils d’instance, votre instance n’utilise pas les autorisations de Configuration de la gestion de l’hôte par défaut.

Vérifier que le rôle IAM approprié est associé à l’instance

Remarque : Si vous avez activé Configuration de la gestion de l’hôte par défaut, passez à la section Vérifier la connectivité à IMDS.

Pour effectuer des appels d’API vers un point de terminaison Systems Manager, vous devez attacher la politique AmazonSSMManagedInstanceCore au rôle IAM qui est associé à votre instance. Si vous utilisez une politique IAM personnalisée, vérifiez que celle-ci utilise les autorisations disponibles dans AmazonSSMManagedInstanceCore. Assurez-vous également que la politique d’approbation de votre rôle IAM autorise ec2.amazonaws.com à endosser ce rôle. Pour plus d'informations, consultez la section Configuration alternative pour les autorisations d'instance EC2.

Vérifier la connectivité à IMDS

SSM Agent doit communiquer avec IMDS pour obtenir des informations sur votre instance. Pour tester la connexion, exécutez la commande suivante en fonction du système d'exploitation de votre instance :

  • Linux

    nc -vz 169.254.169.254 80
  • Windows

    Test-NetConnection 169.254.169.254 -port 80

Pour vérifier qu'IMDS est configuré pour votre instance existante, utilisez la console Amazon EC2 ou l'AWS CLI.

Console Amazon EC2

Procédez comme suit :

  1. Ouvrez la console Amazon EC2.
  2. Dans le volet de navigation, sélectionnez Instances, puis votre instance.
  3. Sélectionnez Actions, puis Paramètres de l'instance.
  4. Sélectionnez Modifier les options de métadonnées de l'instance.
  5. Dans la boîte de dialogue, assurez-vous que le service de métadonnées d'instance est activé.

AWS CLI

Exécutez la commande de l'interface de ligne de commande AWS describe-instances pour vérifier qu'IMDS est configuré pour votre instance existante :

aws ec2 describe-instances --query "Reservations[*].Instances[*].MetadataOptions" --instance-ids i-012345678910

Exemple de sortie :

[
  [
    {
      "State": "applied",
      "HttpTokens": "optional",
      "HttpPutResponseHopLimit": 1,
      "HttpEndpoint": "enabled",
      "HttpProtocolIpv6": "disabled",
      "InstanceMetadataTags": "disabled"
    }
  ]
]

Remarque : Si la sortie indique « HttpTokens » : « facultatif », IMDSv1 et IMDSv2 sont pris en charge. Si la sortie indique « HttpTokens » : « obligatoire », seul IMDSv2 est pris en charge. Si la sortie indique « HttpEndpoint » : « activé », IMDS est activé.

Si vous utilisez un proxy sur votre instance, celui-ci peut bloquer la connectivité à l’URL des métadonnées. Pour éviter le blocage, configurez SSM Agent afin qu'il fonctionne avec un proxy et définissez no_proxy pour l'URL des métadonnées.

Pour configurer SSM Agent afin qu’il utilise un proxy, consultez la documentation AWS suivante :

Résolution de problèmes supplémentaires

Si votre instance n’apparaît toujours pas sous forme de nœud géré ou qu’elle indique une perte de connexion dans Systems Manager, vérifiez les journaux SSM Agent pour poursuivre le dépannage. Pour Linux et macOS, les journaux se trouvent dans /var/log/amazon/ssm. Pour Windows, les journaux se trouvent dans %PROGRAMDATA%\Amazon\SSM\Logs.

Si votre instance ne rapporte pas à SSM Agent, utilisez le protocole RDP (Remote Desktop Protocol) pour Windows ou SSH pour Linux afin de collecter les journaux. Si vous ne parvenez pas à collecter les journaux, arrêtez votre instance et détachez le volume racine. Puis, attachez le volume racine à une autre instance de la même zone de disponibilité en tant que volume secondaire pour obtenir les journaux.

Informations connexes

Référence du dossier d’exploitation de Systems Manager Automation

Attacher un volume Amazon Elastic Block Store (Amazon EBS) à une instance Amazon EC2

Détacher le volume de l'instance

Rendre un volume Amazon EBS disponible pour une utilisation