Comment puis-je résoudre les erreurs de délai d'attente du pipeline de génération dans EC2 Image Builder ?

Lecture de 8 minute(s)
0

Je souhaite résoudre les erreurs de délai d'attente du pipeline de génération dans EC2 Image Builder.

Brève description

Les motifs courants pour lesquels votre pipeline Image Builder peut échouer avec des erreurs de dépassement du délai d’attente des étapes aux étapes de flux de travail LaunchBuildInstance, BootstrapBuildInstance ou ApplyBuildComponent sont présentés ci-dessous :

  • L'instance de génération ne peut pas se connecter à AWS Systems Manager.
  • Le rôle AWS Identity and Access Management (IAM) possède des autorisations incorrectes.
  • Le sous-réseau privé n'a pas accès à Internet.
  • Un nom de périphérique racine existe en doublon.

Résolution

Pour résoudre les erreurs de délai d’attente du pipeline de génération, consultez les scénarios suivants.

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

L’expiration du délai se produit lorsque la génération vérifie la disponibilité de l'agent SSM sur l'instance de génération

Si le délai d’expiration du pipeline de génération survient alors que la génération vérifie l'agent AWS Systems Manager sur l'instance de génération, les erreurs suivantes peuvent s'afficher :

« L’ID d'exécution du flux de travail : a échoué pour le motif suivant : ExpectationNotMet. ssm:*CommandInvocations a renvoyé l’état de terminal Échec à l’étape de flux de travail LaunchBuildInstance. »

« L’ID d'exécution du flux de travail : a échoué pour le motif suivant : Une erreur s'est produite (InvalidInstanceID) lors de l'appel de l'opération SendCommand : Les instances \ [\ [i-1a1b1c1d1e1f1g1h1 ] ] ne sont pas dans un état valide pour le compte dans l'étape de flux de travail LaunchBuildInstance. »

« L’ID d'exécution du flux de travail : a échoué pour le motif suivant : ExpectationNotMet. ec2:DescribeInstanceStatus n'a pas atteint les états du terminal : [['passed']] après 100 tentatives. Motif : Expiration du délai à l'étape de flux de travail LaunchBuildInstance. »

Ces erreurs de dépassement de délai d’attente du pipeline de génération se produisent lorsque l'instance ne dispose pas des autorisations IAM requises sur le rôle d'infrastructure du pipeline. Ces erreurs se produisent également lorsque l'agent SSM peut atteindre les points de terminaison.

L'instance ne dispose pas des autorisations IAM requises

Si vos instances de génération ne disposent pas des autorisations IAM requises, ajoutez la politique gérée AmazonSSMManagedInstanceCore à votre rôle IAM. Votre rôle IAM est spécifié dans la configuration de l'infrastructure d'Image Builder. Assurez-vous également que le rôle AWSServiceRoleForImageBuilder est autorisé à utiliser la clé AWS Key Management Service (AWS KMS). Ce rôle doit accéder à la clé AWS KMS spécifiée sur le dispositif bloquant de la recette de l'image. Pour plus d'informations, consultez la section Autoriser les utilisateurs de clés à utiliser la clé KMS.

L'agent SSM ne peut pas atteindre les points de terminaison

Si l'agent SSM ne parvient pas à atteindre les points de terminaison, procédez comme suit :

  • Si vous créez un sous-réseau public avec une passerelle Internet, configurez le sous-réseau pour attribuer automatiquement une adresse IPv4 publique.
  • Si vous créez un sous-réseau privé avec un NAT, configurez le NAT pour utiliser un sous-réseau public.
  • Si vous créez un sous-réseau privé avec des points de terminaison Amazon Virtual Private Cloud (Amazon VPC), configurez des points de terminaison AWS PrivateLink pour Systems Manager. Pour plus d’informations, consultez la section Comment 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 ?
  • Assurez-vous que le groupe de sécurité et les listes de contrôle d'accès réseau (ACL réseau) autorisent les connexions entrantes pour les ports éphémères (1024—65535). Ils doivent également autoriser les connexions sortantes sur le port 443. Pour les sous-réseaux privés dotés de points de terminaison PrivateLink, le groupe de sécurité attaché au point de terminaison Amazon VPC doit autoriser les connexions entrantes sur le port 443. Ces connexions entrantes doivent être autorisées en provenance du sous-réseau ou du CIDR Amazon VPC.

L’expiration du délai se produit lorsque le build télécharge l'AWS CLI

Lorsque vous créez sur un sous-réseau privé et que vous utilisez les composants aws-cli-version-2-linux ou aws-cli-version-2-windows, l’expiration du délai d’attente du build peut survenir à l'étape ApplyBuildComponents.

Pour un build basé sur des conteneurs, le délai d’expiration du build peut survenir à l'étape BootstrapBuildInstance. L’expiration du délai se produit lorsque l'interface de ligne de commande AWS n'existe pas sur l'AMI de l'instance et que le script d'amorçage essaie d'installer l'interface de ligne de commande AWS via internet.

Pour solutionner cette expiration du délai d’attente, procédez comme suit :

  • Permettez l’accès à internet sur le sous-réseau via une passerelle NAT ou une passerelle Internet.
  • Utilisez une AMI personnalisée sur laquelle l'interface de ligne de commande AWS est installée.

L’expiration du délai se produit lorsqu'un nom de périphérique racine existe en doublon

Lorsque vous utilisez l'API CreateImageRecipe pour créer une recette, des erreurs peuvent se produire lorsque vous nommez le périphérique racine /dev/xvda ou /dev/sda1. Pour éviter que le nom du périphérique racine ne soit dupliqué dans l'instance de génération, vérifiez le mappage du périphérique racine dans l'AMI source. S'il existe un nom de périphérique racine dupliqué, une expiration du délai se produit avec l'erreur suivante :

« L’ID d'exécution du flux de travail : a échoué pour le motif suivant : ExpectationNotMet. ec2:DescribeInstanceStatus n'a pas atteint les états du terminal : [['passed']] après 100 tentatives. Motif : Expiration du délai à l'étape de flux de travail LaunchBuildInstance. »

Remarque : Lorsque vous utilisez des recettes d'images depuis la console de gestion AWS, vous ne pouvez pas créer un nom de périphérique dupliqué. De plus, les types d'instances AWS Nitro System (ou types d'instances Xen) sont les seuls types d'instances qui ne donnent pas d’erreurs en raison d'un nom de périphérique dupliqué.

Pour un périphérique racine dans une AMI, exécutez la commande describe-images pour confirmer le nom de périphérique de l'AMI source. Utilisez le même nom de périphérique que celui indiqué dans la recette de l’image.

L’expiration du délai se produit lorsque la génération reçoit des composants Image Builder

Si vous créez sur un sous-réseau privé et qu'Image Builder échoue lors du téléchargement des composants, l'erreur suivante s'affiche :

« a échoué avec le motif : échec du téléchargement du composant EC2 Image Builder, erreur d’opération imagebuilder : GetComponent, nombre maximum de tentatives dépassé, 3, expiration du délai d’entrée/sortie TCP. »

Pour résoudre l'erreur précédente, vérifiez la configuration. Vous pouvez également créer un point de terminaison d’interface Amazon VPC s'il n'existe pas pour les mêmes VPC et sous-réseau que ceux utilisés dans votre configuration Image Builder Infrastructure.

L’expiration du délai se produit lorsque la génération récupère la liste de miroirs

Si vous créez sur un sous-réseau privé avec une AMI basée sur Amazon Linux, l'erreur de délai d’attente suivante peut se produire :

« Impossible de récupérer la liste des miroirs ; l'erreur était 12 : Le délai d’expiration a été atteint. »

La liste de miroirs Amazon Linux est stockée sur Amazon Simple Storage Service (Amazon S3). Vérifiez qu'il existe un point de terminaison de passerelle Amazon VPC pour Amazon S3. Vous pouvez également créer un point de terminaison de la passerelle Amazon VPC. La liste de préfixes Amazon S3 est automatiquement ajoutée à la table de routage lorsque vous créez un point de terminaison. Toutefois, il est recommandé de vérifier que la liste de préfixes est ajoutée.

Si vous créez sur une AMI non Amazon Linux, la liste de miroirs n'est pas stockée sur Amazon S3. Aussi, un délai d’expiration de génération peut se produire lorsque la génération obtient repository/mirrorlist. Assurez-vous d'autoriser l'adresse ou l'URL du référentiel dans votre pare-feu réseau ou proxy. Si le dépot/la liste de miroirs requiert Internet, permettez l’accès à internet sur le sous-réseau via une passerelle NAT.

L’expiration du délai se produit à l'étape ApplyBuildComponents

Si un délai d’expiration de génération se produit à l'étape ApplyBuildComponents, l'erreur suivante s'affiche :

« L’ID d'exécution du flux de travail : a échoué pour le motif suivant : ExpectationNotMet. ssm:ListCommandInvocations n’a pas répondu aux états de terminal : [['Success']] après 1 440 tentatives. Motif : Expiration du délai à l'étape de flux de travail ApplyBuildComponents. »

Pour résoudre cette erreur, procédez comme suit :

  • Analysez les journaux envoyés au compartiment Amazon S3 de l'infrastructure. Pour plus d'informations, consultez la liste relative à Amazon Simple Storage Service (Amazon S3) dans la section Consulter les journaux d'exécution du flux de travail du chapitre Résoudre les problèmes liés aux générations du pipeline.
  • Analysez les journaux des composants qui se trouvent sur l'instance Amazon Elastic Compute Cloud (Amazon EC2) utilisée pour créer ou tester une nouvelle image. Avant de consulter les journaux, désactivez la fonctionnalité Résilier l’instance en cas d’échec lors de la session de dépannage de la configuration de l'infrastructure.
    Remarque : Le fichier journal detailedoutput.json décrit le motif pour lequel le composant a échoué ou expiré. Le fichier application.log fournit des informations de dépannage pour le débogage.
  • Vérifiez la valeur du paramètre timeoutSeconds spécifiée dans le schéma YAML de votre document. La valeur par défaut est 7200. Mettez à jour cette valeur pour chaque étape du composant selon les besoins. La valeur de -1 est infinie.

Informations connexes

Pourquoi mon pipeline de génération d'images échoue-t-il avec l'erreur « L'étape a expiré alors qu’elle vérifie la disponibilité de l'agent Systems Manager sur les instances cibles » dans Image Builder ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 4 mois