Pourquoi mon pipeline de génération d'image échoue-t-il avec l'erreur « Step timed out while step is verifying the Systems Manager Agent availability on the target instance(s) » dans Image Builder ?

Lecture de 6 minute(s)
0

Le délai de création de mon image est dépassé dans Amazon Elastic Compute Cloud (Amazon EC2) Image Builder. Ensuite, je reçois l'erreur « failure message = 'Step timed out while step is verifying the SSM Agent availability on the target instance(s)' » (message d'erreur = 'L'étape a expiré pendant la vérification de la disponibilité de SSM Agent sur la ou les instances cibles'). Comment puis-je résoudre ce problème ?

Brève description

EC2 Image Builder utilise AWS Systems Manager Automation afin de créer des images personnalisées. Assurez-vous que l'instance Amazon EC2 utilisée pour créer des images et exécuter des tests a accès au service AWS Systems Manager.

Le message d'erreur failure message = 'Step timed out while step is verifying the SSM Agent availability on the target instance(s)' peut se produire pour les raisons suivantes :

  • L'instance de génération ou de test ne peut pas accéder aux points de terminaison Systems Manager. Afin de résoudre ce problème, vérifiez les règles de trafic entrant et sortant de votre groupe de sécurité et de votre liste de contrôle d'accès au réseau (ACL réseau).
  • Le profil d'instance ne dispose pas des autorisations requises. Afin de résoudre ce problème, vérifiez que le profil d'instance est attaché aux politiques appropriées.
  • L'instance ne peut pas atteindre le service de métadonnées d'instance (IMDS). Afin de résoudre ce problème, vérifiez que l'instance peut atteindre IMDS.
  • L'AWS Systems Manager Agent (SSM Agent) n'est pas installé sur l'image de base.

Solution

Vérifiez les règles de trafic sortant et entrant de votre groupe de sécurité et de votre ACL réseau

Si votre instance de création ou de test ne peut pas accéder aux points de terminaison Systems Manager, vérifiez les éléments suivants :

  • La sortie de votre groupe de sécurité est ouverte pour le port 443.
  • L'entrée de votre ACL réseau est ouverte pour les ports éphémères (1024–65535), et sa sortie est ouverte pour le port 443.

Pour les générations de sous-réseaux publics :

  • Le paramètre Enable auto-assign public IPv4 address (Activer l'attribution automatique d'adresse IPv4 publique) doit être activé dans le sous-réseau.
  • La table de routage doit être attachée à une passerelle Internet.

Pour les générations de sous-réseaux privés :

  • La table de routage doit disposer d'une passerelle ou d'une instance NAT, ou de points de terminaison AWS PrivateLink vers Systems Manager (ssm, ssmmessages, ec2messages) et Image Builder. Si la journalisation est activée, la table de routage doit également disposer de points de terminaison vers Amazon Simple Storage Service (Amazon S3) ou Amazon CloudWatch.
  • Le groupe de sécurité pour le point de terminaison Amazon Virtual Private Cloud (Amazon VPC) doit autoriser le trafic entrant sur le port 443 vers le CIDR du VPC.

Vérifiez que le profil d'instance dispose des politiques appropriées

Le profil d'instance est le rôle AWS Identity and Access Management (IAM) défini dans la configuration de l'infrastructure. La génération échoue s'il ne possède pas les autorisations requises. Le profil d'instance doit être attaché aux politiques gérées suivantes pour être autorisé à créer des images :

  • EC2InstanceProfileForImageBuilder
  • EC2InstanceProfileForImageBuilderECRContainerBuilds (pour les images Docker)
  • AmazonSSMManagedInstanceCore

Vous pouvez également créer des politiques personnalisées dotées d'autorisations similaires aux précédentes politiques gérées.

Remarque : vérifiez la politique d'approbation du rôle afin de vous assurer que ec2.amazonaws.com est autorisé à assumer le rôle.

Vérifiez que l'instance peut atteindre IMDS

IMDS est utilisé pour accéder aux métadonnées à partir d'une instance en cours d'exécution. La génération échoue si votre instance ne parvient pas à atteindre IMDS. Assurez-vous que le pare-feu de votre système d'exploitation autorise le trafic 169.254.169.254 sur le port 80 afin que l'instance puisse atteindre IMDS.

Utilisez la commande suivante pour tester la connectivité :

$ telnet 169.254.169.254 80

Si vous utilisez un proxy, configurez SSM Agent de sorte qu'il fonctionne avec un proxy. Pour Linux, veuillez consulter la section Configurer SSM Agent pour utiliser un proxy (Linux). Pour Microsoft Windows, veuillez consulter la section Configurer SSM Agent pour utiliser un proxy pour les instances Windows Server.

Vérifiez que SSM Agent est installé sur l'image de base

L'agent Systems Manager doit être installé sur les instances qu'Image Builder utilise pour créer des images et exécuter des tests.

Linux

Pour les instances Linux Amazon EC2 qui ne disposent pas d'agent SSM, Image Builder installe l'agent SSM sur l'instance de génération par défaut. Toutefois, si vous fournissez des données utilisateur dans la recette, vous devez également vous assurer que l'agent SSM est installé sur l'image de base. Vous pouvez également installer l'agent SSM avec vos données utilisateur saisies.

Windows

Image Builder n'installe pas l'agent SSM sur les instances de build Amazon EC2 pour Windows Server. Afin de vérifier si SSM Agent est préinstallé sur l'image de base, lancez une instance Amazon EC2 à l'aide de l'image de base. Puis, exécutez ensuite la commande suivante dans PowerShell :

Get-Service AmazonSSMAgent

Si l'agent SSM n'est pas préinstallé sur votre image de base, vous devez lancer une instance à partir de votre image source. Ensuite, installez manuellement l'agent SSM sur l'instance EC2, puis créez une nouvelle image de base à partir de votre instance.

Désactivez « Terminate instance on failure » (Résilier l'instance en cas d'échec)

Si les solutions précédentes ne résolvent pas le problème, alors :

1.    Ouvrez la console EC2 Image Builder.

2.    ActivezTerminate instance on failure (Résilier l'instance en cas d'échec) sous Infrastructure configuration (Configuration de l'infrastructure), puis exécutez à nouveau le pipeline.

3.    Connectez-vous à l'instance et exécutez les commandes suivantes afin de vérifier la connexion aux points de terminaison Systems Manager :

Instance Linux

$ curl -v https://ssm.region.amazonaws.com
$ curl -v https://ec2messages.region.amazonaws.com
$ curl -v https://ssmmessages.region.amazonaws.com

Instance Windows

Test-NetConnection ssm.region.amazonaws.com -port 443
Test-NetConnection ec2messages.region.amazonaws.com -port 443
Test-NetConnection ssmmessages.region.amazonaws.com -port 443

Remarque : remplacez region (région) par votre Région AWS.

4.    Utilisez les chemins suivants pour vérifier les journaux SSM et détecter d'éventuelles erreurs :

Linux

  • /var/log/amazon/ssm/amazon-ssm-agent.log
  • /var/log/amazon/ssm/errors.log

Windows

  • %PROGRAMDATA%\Amazon\SSM\Logs\amazon-ssm-agent.log
  • %PROGRAMDATA%\Amazon\SSM\Logs\errors.log

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans