View a markdown version of this page

Résolution des problèmes - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes

Cette section décrit comment déboguer et résoudre les problèmes courants liés à l'utilisation de MicroVMS. AWS Lambda

Accès au shell

Utilisez l'accès au shell pour vous connecter directement à une microVM en cours d'exécution à des fins de débogage et de dépannage.

Vous pouvez vous connecter à un shell MicroVM de deux manières :

  • Console  : sélectionnez votre microVM dans la console Lambda et choisissez Connect.

  • CLI  : générez un jeton shell aveccreate-microvm-shell-auth-token, puis utilisez-le pour établir une connexion.

Générez un jeton shell, puis connectez-vous :

aws lambda-microvms create-microvm-shell-auth-token \ --microvm-identifier <id> --expiration-in-minutes 30 # In Console: select MicroVM -> Connect # In shell: ctr task ls, then ctr task exec -t --exec-id shell <id> /bin/sh

La microVM doit avoir été exécutée avec le connecteur SHELL_INGRESS réseau (arn:aws:lambda:us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESS). Si la microVM n'a pas été lancée avec ce connecteur, create-microvm-shell-auth-token renvoie unValidationException.

Pour les autres questions :

  • Vérifiez le terminationMessage champ de la get-microvm réponse pour les micromachines virtuelles résiliées.

  • Consultez les journaux CloudWatch de génération pour détecter les problèmes liés à la création d'images.

  • Vérifiez le StateReason champ correspondant aux connecteurs réseau en FAILED état.

Résolution des problèmes

Cette section propose des solutions aux problèmes courants liés à l'utilisation de Lambda MicroVMS.

Symptôme Cause possible et résolution
La génération de l'image échoue (CREATION_FAILED) Consultez les journaux de construction à l'adresse/aws/lambda/microvms/<image-name>. Vérifiez Dockerfile la syntaxe, les autorisations Amazon S3 et la disponibilité des images de base. Exécutez docker build localement pour reproduire.
MicroVM bloquée PENDING Patientez et réessayez. En cas de persistance, vérifiez l'état du service. Vérifiez que votre quota de simultanéité n'est pas épuisé.
La candidature ne répond pas après le CV Implémentez le hook /resume du cycle de vie pour rétablir les connexions et valider l'état. Vérifiez que votre application est liée au port 8080 (ou au port configuré) après la reprise.
502 Passerelle défectueuse depuis le terminal L'application s'est bloquée ou n'écoute pas. Vérifiez les journaux d'exécution. Vérifiez EXPOSE et CMD entrezDockerfile. En cas de reprise automatique, la microVM n'a peut-être pas pu reprendre (vérifiez l'état à l'aide get-microvm de).
429 demandes de trop Taux de demandes dépassé. Réessayez avec un ralentissement exponentiel et de la gigue.
Suppression des connexions Délai d'inactivité déclenché. Mettez en œuvre des ping/pong keepalives. Ou prolongez maxIdleDurationSeconds la politique d'inactivité.
Latence élevée sur le terminal Saturation de la bande passante. Vérifiez si le trafic dépasse la capacité de bande passante correspondant à la taille de votre microVM. Passez à une taille plus grande.
Le jeton d'authentification a expiré (403) Les jetons ont une date d'expiration configurable. Générez un nouveau jeton avant que l'ancien n'expire. Implémentez une logique d'actualisation des jetons dans votre client.
La sortie du VPC ne fonctionne pas Vérifiez que le connecteur réseau est en ACTIVE état. Vérifiez que les règles des groupes de sécurité autorisent le trafic sortant. Vérifiez que les sous-réseaux disposent d'itinéraires vers vos ressources cibles.

Erreurs courantes (création d'images)

Erreur Cause Solution
S3_ACCESS_DENIED Le rôle de compilation n'est pas autorisé à récupérer l'artefact Amazon S3. Ajoutez une s3:GetObject autorisation pour votre compartiment d'artefacts.
S3_NO_SUCH_KEY La clé d'artefact n'existe pas dans le compartiment. Vérifiez que le chemin Amazon S3 est correct.
S3_NO_SUCH_BUCKET Le compartiment Amazon S3 n'existe pas. Vérifiez le nom du compartiment et confirmez qu'il a été créé.
S3_INVALID_OBJECT Artefact appartenant à Glacier ou à une classe de stockage non directement accessible. Déplacez l'artefact vers la classe de stockage Standard.
S3_CROSS_REGION_ACCESS_DENIED L'artefact se trouve dans une région différente de celle de l'image microVM. Assurez-vous que votre artefact se trouve dans la même région que votre image microVM.
ARCHIVE_DOCKERFILE_NOT_FOUND Il manque un Dockerfile dans le répertoire racine de l'archive Zip. Ajoutez un Dockerfile à la racine de votre archive zip.
ARCHIVE_INVALID Le fichier d'archive n'est pas un ZIP valide ou est endommagé. Re-create l'archive zip et retéléchargez-la.
CONTAINER_BUILD_FAILED DockerfileInstructions non valides, fichiers manquants ou erreurs de syntaxe. Déboguez votre version Dockerfile locale à l'aide docker build de.
DISK_STORAGE_FULL MicroVM a manqué d'espace de stockage lors de la construction. Réduisez la taille des artefacts ou contactez l'assistance.
INTERNAL_PLATFORM_ERROR Une erreur interne s’est produite. Réessayez. Si vous persistez, contactez le support.

Résolution des problèmes liés au connecteur réseau

Code d’erreur Cause Solution
DisallowedByVpcEncryptionControl Le VPC dispose d'une politique de contrôle du chiffrement qui empêche les interfaces réseau ou le trafic non chiffrés. Lambda ne peut pas créer d'ENI répondant aux exigences de chiffrement. Ajoutez Lambda à la liste d'exclusion du contrôle de chiffrement VPC. Si l'exclusion n'est pas possible, utilisez un VPC ou un sous-réseau auquel aucun contrôle de chiffrement restrictif n'est appliqué.
Ec2RequestLimitExceeded Lambda effectue des appels d'API EC2 (par exemple,CreateNetworkInterface,DescribeSubnets) pour configurer la connectivité. Un trop grand nombre d'appels d'API EC2 simultanés entraîne un ralentissement. Réessayez l'opération après un court laps de temps. En cas de persistance, réduisez les opérations simultanées du connecteur réseau ou demandez une augmentation de la limite de limitation de l'API EC2 via le support. AWS
InsufficientRolePermissions Le rôle d'opérateur ne dispose pas des autorisations EC2 requises. Assurez-vous que le rôle IAM dispose des autorisations réseau EC2 nécessaires.
InternalError Une erreur inattendue s'est produite dans le service Lambda lors du traitement de la demande de connecteur réseau. Réessayez. Si le problème persiste après plusieurs tentatives, contactez le AWS support en indiquant l'ARN du connecteur réseau et l'horodatage approximatif.
InvalidSecurityGroup L'ID du groupe de sécurité n'existe pas, a été supprimé ou n'appartient pas au même VPC que les sous-réseaux spécifiés. Vérifiez que tous les ID de groupe de sécurité existent et appartiennent au même VPC que les sous-réseaux. aws ec2 describe-security-groups --group-ids <sg-id>À utiliser pour valider.
InvalidSubnet L'ID de sous-réseau n'existe pas, a été supprimé ou appartient à un VPC différent de celui prévu. Vérifiez que tous les ID de sous-réseau existent et appartiennent au VPC correct. aws ec2 describe-subnets --subnet-ids <subnet-id>À utiliser pour valider.
SubnetOutOfIPAddresses Le bloc CIDR du sous-réseau est épuisé : toutes les adresses IP sont attribuées aux ENI, aux instances et à d'autres ressources. Lambda ne peut donc pas créer d'interface réseau. Libérez des adresses IP en supprimant les adresses inutilisées ENIs/instances ou utilisez un autre sous-réseau doté de la capacité disponible. Envisagez des sous-réseaux plus grands (par exemple, /24 ou plus) pour les connecteurs réseau.