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 AWS Batch
Vous devrez peut-être résoudre des problèmes liés à vos environnements informatiques, à vos files d'attente de tâches, à vos définitions de tâches ou à vos tâches. Ce chapitre explique comment résoudre ces problèmes dans votre AWS Batch environnement.
AWS Batch utilise les politiques, les rôles et les autorisations IAM et s'exécute sur l'infrastructure Amazon EC2, Amazon ECS et Amazon AWS Fargate Elastic Kubernetes Service. Pour résoudre les problèmes liés à ces services, consultez les rubriques suivantes :
-
Résolution des problèmes liés à l'IAM dans le guide de l'utilisateur IAM
-
Résolution des problèmes liés à Amazon ECS dans le manuel du développeur Amazon Elastic Container Service
-
Résolution des problèmes liés à Amazon EKS dans le guide de l'utilisateur Amazon EKS
-
Résoudre les problèmes liés aux instances EC2 dans le guide de l'utilisateur Amazon EC2
Table des matières
- AWS Batch
- INVALIDenvironnement informatique
- Offres d'emploi bloquées dans un RUNNABLE statut
- Instances ponctuelles non étiquetées lors de la création
- Les instances ponctuelles ne sont pas réduites
- Impossible de récupérer les secrets de Secrets Manager
- Impossible de contourner les exigences en ressources liées à la définition des tâches
- Message d'erreur lorsque vous mettez à jour le desiredvCpus paramètre
- AWS Batch sur Amazon EKS
AWS Batch
INVALID
environnement informatique
Il est possible que vous ayez mal configuré un environnement informatique géré. Si c'est le cas, l'environnement informatique entre dans un INVALID
état et ne peut pas accepter de postes à des fins de placement. Les sections suivantes décrivent les causes possibles et la procédure de dépannage en fonction de la cause.
Nom de rôle ou ARN incorrect
La raison la plus courante pour laquelle un environnement informatique entre dans un INVALID
état est que le rôle de AWS Batch service ou le rôle Amazon EC2 Spot Fleet porte un nom ou un nom de ressource Amazon (ARN) incorrect. Cela est plus courant dans les environnements informatiques créés à l'aide du AWS CLI ou des AWS SDK. Lorsque vous créez un environnement informatique dans le AWS Management Console, AWS Batch cela vous aide à choisir le service ou les rôles Spot Fleet appropriés. Supposons toutefois que vous saisissiez manuellement le nom ou l'ARN et que vous ne les saisissiez pas correctement. Ensuite, l'environnement de calcul qui en résulte l'est égalementINVALID
.
Supposons toutefois que vous saisissiez manuellement le nom ou l'ARN d'une ressource IAM dans une AWS CLI
commande ou dans le code de votre SDK. Dans ce cas, AWS Batch impossible de valider la chaîne. AWS Batch
Il faut plutôt accepter la mauvaise valeur et tenter de créer l'environnement. Si la création de l'environnement AWS Batch échoue, celui-ci passe à un INVALID
état et les erreurs suivantes s'affichent.
Pour un rôle de service non valide :
CLIENT_ERROR - Not authorized to perform sts:AssumeRole (Service:
AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID:
dc0e2d28-2e99-11e7-b372-7fcc6fb65fe7)
Pour un rôle de parc d'instances Spot non valide :
CLIENT_ERROR - Parameter: SpotFleetRequestConfig.IamFleetRole is invalid. (Service:
AmazonEC2; Status Code: 400; Error Code: InvalidSpotFleetRequestConfig; Request ID:
331205f0-5ae3-4cea-bac4-897769639f8d) Parameter: SpotFleetRequestConfig.IamFleetRole is
invalid
L'une des causes fréquentes de ce problème est le scénario suivant. Vous ne spécifiez le nom d'un rôle IAM que lorsque vous utilisez le AWS CLI ou les AWS SDK, au lieu du nom complet de la ressource Amazon (ARN). Selon la façon dont vous avez créé le rôle, l'ARN peut contenir un préfixe de aws-service-role
chemin. Par exemple, si vous créez manuellement le rôle de AWS Batch
service à l'aide des procédures décrites dansUtilisation de rôles liés à un service pour AWS Batch, l'ARN de votre rôle de service peut ressembler à ce qui suit.
arn:aws:iam::123456789012
:role/AWSBatchServiceRole
Toutefois, si vous avez créé le rôle de service dans le cadre de l'assistant de première exécution de la console aujourd'hui, l'ARN de votre rôle de service peut ressembler à ce qui suit.
arn:aws:iam::123456789012
:role/aws-service-role/AWSBatchServiceRole
Ce problème peut également se produire si vous associez la politique de AWS Batch niveau de service (AWSBatchServiceRole
) à un rôle non lié au service. Par exemple, vous pouvez recevoir un message d'erreur semblable au suivant dans ce scénario :
CLIENT_ERROR - User: arn:aws:sts::
account_number
:assumed-role/batch-replacement-role/aws-batch is not authorized to perform:action
on resource ...
Pour résoudre ce problème, effectuez l'une des opérations suivantes.
-
Utilisez une chaîne vide pour le rôle de service lorsque vous créez l'environnement de AWS Batch calcul.
-
Spécifiez le rôle de service au format suivant :
arn:aws:iam::
.account_number
:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch
Lorsque vous spécifiez uniquement le nom d'un rôle IAM lorsque vous utilisez le AWS CLI ou les AWS SDK, cela AWS Batch suppose que votre ARN n'utilise pas le préfixe de aws-service-role
chemin. C'est pourquoi nous vous recommandons de spécifier l'ARN complet pour vos rôles IAM lorsque vous créez des environnements informatiques.
Pour réparer un environnement informatique mal configuré de cette façon, consultezRéparation d'un environnement INVALID informatique.
Réparation d'un environnement INVALID
informatique
Lorsqu'un environnement informatique est dans un INVALID
état, mettez-le à jour pour réparer le paramètre non valide. Dans le cas Nom de rôle ou ARN incorrect contraire, mettez à jour l'environnement de calcul en utilisant le rôle de service approprié.
Pour réparer un environnement de calcul mal configuré
-
Ouvrez la AWS Batch console à l'adresse https://console.aws.amazon.com/batch/
. -
Dans la barre de navigation, sélectionnez le Région AWS à utiliser.
-
Dans le panneau de navigation, choisissez Environnements de calcul.
-
Sur la page Environnements de calcul, cochez la case en regard de l'environnement de calcul à modifier, puis choisissez Modifier.
-
Sur la page Mettre à jour l'environnement de calcul, pour Rôle de service, choisissez le rôle IAM à utiliser avec votre environnement de calcul. La console AWS Batch affiche uniquement les rôles ayant la relation d'approbation appropriée pour les environnements de calcul.
-
Choisissez Enregistrer pour mettre à jour votre environnement de calcul.
Offres d'emploi bloquées dans un RUNNABLE
statut
Supposons que votre environnement informatique contienne des ressources informatiques, mais que vos tâches ne progressent pas au-delà de RUNNABLE
leur statut. Dans ce cas, il est probable que quelque chose empêche le placement des tâches sur une ressource informatique et bloque vos files d'attente de tâches. Voici comment savoir si votre tâche attend son tour ou si elle est bloquée et bloque la file d'attente.
S'il AWS Batch détecte que vous avez une RUNNABLE
tâche en tête et que vous bloquez la file d'attente, vous recevrez un événement de blocage de la part d'Amazon CloudWatch Events indiquant le motif du blocage. La même raison est également mise à jour dans le statusReason
champ dans le cadre ListJobs
d'appels d'DescribeJobs
API.
Vous pouvez éventuellement configurer le jobStateTimeLimitActions
paramètre par le biais CreateJobQueue
d'actions UpdateJobQueue
d'API.
Note
À l'heure actuelle, la seule action que vous pouvez utiliser jobStateLimitActions.action
est d'annuler une tâche.
Le jobStateTimeLimitActions
paramètre est utilisé pour spécifier un ensemble d'actions exécutées AWS Batch sur des tâches dans un état spécifique. Vous pouvez définir un seuil de temps en secondes via le maxTimeSeconds
champ.
Lorsqu'une tâche est dans un RUNNABLE
état définistatusReason
, AWS Batch exécute l'action spécifiée après son maxTimeSeconds
expiration.
Par exemple, vous pouvez définir le jobStateTimeLimitActions
paramètre pour qu'il attende jusqu'à 4 heures pour toute tâche dont l'RUNNABLE
état attend la disponibilité d'une capacité suffisante. Vous pouvez le faire en statusReason
réglant sur 144000 avant d'annuler la tâche et de laisser la tâche suivante passer en tête de file d'attente. CAPACITY:INSUFFICIENT_INSTANCE_CAPACITY
maxTimeSeconds
Voici les raisons invoquées lorsqu' AWS Batch il détecte qu'une file d'attente de tâches est bloquée. Cette liste fournit les messages renvoyés par les actions ListJobs
et DescribeJobs
API. Il s'agit également des mêmes valeurs que vous pouvez définir pour le jobStateLimitActions.statusReason
paramètre.
-
Raison : tous les environnements informatiques connectés présentent des erreurs de capacité insuffisante. Sur demande, AWS Batch détecte les instances Amazon EC2 présentant des erreurs de capacité insuffisante. L'annulation de la tâche, manuellement ou en activant le
jobStateTimeLimitActions
paramètrestatusReason
, permet à la tâche suivante de passer en tête de file d'attente.-
statusReason
message lorsque la tâche est bloquée :CAPACITY:INSUFFICIENT_INSTANCE_CAPACITY - Service cannot fulfill the capacity requested for instance type [instanceTypeName]
-
reason
utilisé pourjobStateTimeLimitActions
:CAPACITY:INSUFFICIENT_INSTANCE_CAPACITY
-
statusReason
message après l'annulation de la tâche :Canceled by JobStateTimeLimit action due to reason: CAPACITY:INSUFFICIENT_INSTANCE_CAPACITY
Remarque :
-
Le rôle AWS Batch de service nécessite une
autoscaling:DescribeScalingActivities
autorisation pour que cette détection fonctionne. Si vous utilisez le rôleAWSServiceRoleForBatch
lié à un service (SLR) ou la politiqueAWSBatchServiceRolePolicy
gérée, vous n'avez aucune action à effectuer car leurs politiques d'autorisation sont mises à jour. -
Si vous utilisez le SLR ou la politique gérée, vous devez ajouter les
ec2:DescribeSpotFleetRequestHistory
autorisationsautoscaling:DescribeScalingActivities
et afin de pouvoir recevoir les événements de file d'attente de tâches bloqués et le statut des tâches mis à jour lorsque vous êtes connectéRUNNABLE
. En outre, AWS Batch a besoin de ces autorisations pour effectuer descancellation
actions via lejobStateTimeLimitActions
paramètre, même si elles sont configurées dans la file d'attente des tâches. -
Dans le cas d'une tâche multinode parallel (MNP), si l'environnement de calcul Amazon EC2 à priorité élevée associé rencontre des
insufficient capacity
erreurs, il bloque la file d'attente même si un environnement de calcul de priorité inférieure rencontre cette erreur.
-
-
Raison : Tous les environnements informatiques ont un
maxvCpus
paramètre inférieur aux exigences de la tâche. L'annulation de la tâche, manuellement ou en activant lejobStateTimeLimitActions
paramètrestatusReason
, permet à la tâche suivante de passer en tête de file d'attente. Vous pouvez éventuellement augmenter lemaxvCpus
paramètre de l'environnement informatique principal pour répondre aux besoins de la tâche bloquée.-
statusReason
message lorsque la tâche est bloquée :MISCONFIGURATION:COMPUTE_ENVIRONMENT_MAX_RESOURCE - CE(s) associated with the job queue cannot meet the CPU requirement of the job.
-
reason
utilisé pourjobStateTimeLimitActions
:MISCONFIGURATION:COMPUTE_ENVIRONMENT_MAX_RESOURCE
-
statusReason
message après l'annulation de la tâche :Canceled by JobStateTimeLimit action due to reason: MISCONFIGURATION:COMPUTE_ENVIRONMENT_MAX_RESOURCE
-
-
Raison : aucun environnement informatique ne possède d'instance répondant aux exigences du poste. Lorsqu'une tâche demande des ressources, AWS Batch détecte qu'aucun environnement informatique associé n'est en mesure de prendre en charge la tâche entrante. L'annulation de la tâche, manuellement ou en activant le
jobStateTimeLimitActions
paramètrestatusReason
, permet à la tâche suivante de passer en tête de file d'attente. Vous pouvez éventuellement redéfinir les types d'instances autorisés dans l'environnement de calcul pour ajouter les ressources de travail nécessaires.-
statusReason
message lorsque la tâche est bloquée :MISCONFIGURATION:JOB_RESOURCE_REQUIREMENT - The job resource requirement (vCPU/memory/GPU) is higher than that can be met by the CE(s) attached to the job queue.
-
reason
utilisé pourjobStateTimeLimitActions
:MISCONFIGURATION:JOB_RESOURCE_REQUIREMENT
-
statusReason
message après l'annulation de la tâche :Canceled by JobStateTimeLimit action due to reason: MISCONFIGURATION:JOB_RESOURCE_REQUIREMENT
-
-
Raison : Tous les environnements informatiques présentent des problèmes de rôle de service. Pour résoudre ce problème, comparez vos autorisations de rôle de service aux autorisations de rôle de service AWS Batch géré et corrigez les éventuelles lacunes.
Il est recommandé d'utiliser le AWS Batch SLR dans les environnements informatiques afin d'éviter des erreurs similaires.
L'annulation de la tâche, manuellement ou en activant le
jobStateTimeLimitActions
paramètrestatusReason
, permet à la tâche suivante de passer en tête de file d'attente. Si le ou les problèmes liés au rôle de service ne sont pas résolus, il est probable que la prochaine tâche soit également bloquée. Il est préférable d'étudier et de résoudre ce problème manuellement.-
statusReason
message lorsque la tâche est bloquée :MISCONFIGURATION:SERVICE_ROLE_PERMISSIONS – Batch service role has a permission issue.
-
reason
utilisé pourjobStateTimeLimitActions
:MISCONFIGURATION:SERVICE_ROLE_PERMISSIONS
-
statusReason
message après l'annulation de la tâche :Canceled by JobStateTimeLimit action due to reason: MISCONFIGURATION:SERVICE_ROLE_PERMISSIONS
-
-
Raison : Tous les environnements informatiques ne sont pas valides. Pour plus d'informations, consultez la section Environnement de
INVALID
calcul. Remarque : Vous ne pouvez pas configurer une action programmable via lejobStateTimeLimitActions
paramètre pour résoudre cette erreur.-
statusReason
message lorsque la tâche est bloquée :ACTION_REQUIRED - CE(s) associated with the job queue are invalid.
-
-
Raison : AWS Batch a détecté une file d'attente bloquée, mais n'est pas en mesure d'en déterminer la raison. Remarque : Vous ne pouvez pas configurer une action programmable via le
jobStateTimeLimitActions
paramètre pour résoudre cette erreur. Pour plus d'informations sur le dépannage, consultez Pourquoi mon AWS Batch travail est-il bloqué dans RUNNABLE ou dans AWS Re:post. -
statusReason
message lorsque la tâche est bloquée :UNDETERMINED - Batch job is blocked, root cause is undetermined.
-
Si vous n'avez pas reçu d'événement de la part d' CloudWatch Events ou si vous avez reçu un événement pour une raison inconnue, voici quelques causes courantes de ce problème.
- Le pilote de
awslogs
journal n'est pas configuré sur vos ressources informatiques -
AWS Batch les tâches envoient leurs informations de journal à CloudWatch Logs. Dans ce cas, vous devez configurer vos ressources de calcul de manière à ce qu'elles utilisent le pilote de journal
awslogs
. Supposons que vous basiez votre AMI de ressources de calcul sur l'AMI optimisée pour Amazon ECS (ou Amazon Linux). Ce pilote est ensuite enregistré par défaut dans leecs-init
package. Supposons maintenant que vous utilisiez une autre AMI de base. Vous devez ensuite vérifier que le pilote deawslogs
journal est spécifié comme pilote de journal disponible avec la variable d'ECS_AVAILABLE_LOGGING_DRIVERS
environnement lorsque l'agent de conteneur Amazon ECS est démarré. Pour plus d’informations, consultez Spécification de l'AMI des ressources de calcul et Création d'une AMI de ressources de calcul. - Ressources insuffisantes
-
Si vos définitions de tâches spécifient plus de ressources de processeur ou de mémoire que ce que vos ressources de calcul peuvent allouer, vos tâches ne sont jamais placées. Supposons, par exemple, que votre tâche spécifie 4 GiB de mémoire et que vos ressources de calcul soient inférieures à celles disponibles. Il arrive alors que la tâche ne puisse pas être placée sur ces ressources informatiques. Dans ce cas, vous devez réduire la mémoire spécifiée dans la définition de tâche ou ajouter des ressources de calcul à votre environnement. Une partie de la mémoire est réservée à l'agent de conteneur Amazon ECS et à d'autres processus critiques du système. Pour plus d’informations, consultez Ressource de calcul Gestion de la mémoire.
- Pas d'accès à Internet pour les ressources informatiques
Les ressources de calcul ont besoin de communiquer avec le point de terminaison de service Amazon ECS service. Cela peut être via un point de terminaison d'un VPC d'interface ou via vos ressources de calcul ayant des adresses IP publiques.
Pour plus d'informations sur les points de terminaison d'un VPC d'interface, veuillez consulter Points de terminaison d'un VPC d'interface Amazon ECS AWS PrivateLink) dans le Guide du développeur Amazon Elastic Container Service.
Si vous n'avez pas de point de terminaison d'un VPC d'interface configuré et que vos ressources de calcul n'ont pas d'adresses IP publiques, elles doivent utiliser la traduction d'adresse réseau (NAT) pour fournir cet accès. Pour de plus amples informations, veuillez consulter Passerelles NAT dans le Guide de l'utilisateur Amazon VPC. Pour plus d’informations, consultez Création d'un VPC.
- Limite d'instances Amazon EC2 atteinte
-
Le nombre d'instances Amazon EC2 dans lesquelles votre compte peut être lancé Région AWS est déterminé par votre quota d'instances EC2. Certains types d'instances sont également soumis à un per-instance-type quota. Pour plus d'informations sur le quota d'instances Amazon EC2 de votre compte, notamment sur la manière de demander une augmentation de limite, consultez les limites de service Amazon EC2 dans le guide de l'utilisateur Amazon EC2.
- L'agent de conteneur Amazon ECS n'est pas installé
-
L'agent de conteneur Amazon ECS doit être installé sur l'Amazon Machine Image (AMI) pour permettre l' AWS Batch exécution de tâches. L'agent de conteneur Amazon ECS est installé par défaut sur les AMI optimisées Amazon ECS. Pour plus d'informations sur l'agent de conteneur Amazon ECS, consultez la section relative à l'agent de conteneur Amazon ECS dans le guide du développeur Amazon Elastic Container Service.
Pour plus d'informations, voir Pourquoi mon AWS Batch travail est-il RUNNABLE
bloqué ?
Instances ponctuelles non étiquetées lors de la création
Le balisage des instances Spot pour les ressources de AWS Batch calcul est pris en charge depuis le 25 octobre 2017. Auparavant, la politique gérée par IAM recommandée (AmazonEC2SpotFleetRole
) pour le rôle Amazon EC2 Spot Fleet ne contenait pas d'autorisations permettant de baliser les instances Spot lors du lancement. La nouvelle politique gérée par IAM recommandée s'appelleAmazonEC2SpotFleetTaggingRole
. Il prend en charge le balisage des instances Spot au lancement.
Pour corriger le balisage des instances Spot lors de leur création, suivez la procédure suivante pour appliquer la politique de gestion IAM actuellement recommandée à votre rôle Amazon EC2 Spot Fleet. Ainsi, toutes les futures instances Spot créées avec ce rôle seront autorisées à appliquer des balises d'instance lors de leur création.
Pour appliquer la politique gérée par IAM actuelle à votre rôle Amazon EC2 Spot Fleet
Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/
. -
Choisissez Rôles, puis choisissez votre rôle Amazon EC2 Spot Fleet.
-
Choisissez Attach policy (Attacher une politique).
-
Sélectionnez l'AmazonEC2, SpotFleetTaggingRole puis choisissez Attach policy.
-
Choisissez à nouveau votre rôle dans Amazon EC2 Spot Fleet pour supprimer la politique précédente.
-
Sélectionnez le x à droite de la SpotFleetRole politique AmazonEC2, puis choisissez Détacher.
Les instances ponctuelles ne sont pas réduites
AWS Batch a introduit le rôle AWSServiceRoleForBatchlié au service le 10 mars 2021. Si aucun rôle n'est spécifié dans le serviceRole
paramètre de l'environnement de calcul, ce rôle lié au service est utilisé comme rôle de service. Supposons toutefois que le rôle lié à un service soit utilisé dans un environnement de calcul EC2 Spot, mais que le rôle Spot utilisé n'inclut pas la politique gérée par SpotFleetTaggingRoleAmazonEC2. Dans ce cas, l'instance Spot n'est pas réduite. Par conséquent, vous recevrez un message d'erreur avec le message suivant : « Vous n'êtes pas autorisé à effectuer cette opération ». Procédez comme suit pour mettre à jour le rôle de flotte ponctuelle que vous utilisez dans le spotIamFleetRole
paramètre. Pour plus d'informations, consultez les sections Utilisation de rôles liés à un service et Création d'un rôle pour déléguer des autorisations à un AWS service dans le Guide de l'utilisateur IAM.
Rubriques
Associez la politique SpotFleetTaggingRole gérée par AmazonEC2 à votre rôle Spot Fleet dans le AWS Management Console
Pour appliquer la politique gérée par IAM actuelle à votre rôle Amazon EC2 Spot Fleet
Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/
. -
Choisissez Rôles, puis choisissez votre rôle Amazon EC2 Spot Fleet.
-
Choisissez Attach policy (Attacher une politique).
-
Sélectionnez l'AmazonEC2, SpotFleetTaggingRole puis choisissez Attach policy.
-
Choisissez à nouveau votre rôle dans Amazon EC2 Spot Fleet pour supprimer la politique précédente.
-
Sélectionnez le x à droite de la SpotFleetRole politique AmazonEC2, puis choisissez Détacher.
Associez la politique SpotFleetTaggingRole gérée par Amazon EC2 à votre rôle Spot Fleet à l'aide du AWS CLI
Les exemples de commandes supposent que votre rôle Amazon EC2 Spot Fleet s'appelle AmazonEC2. SpotFleetRole
Si votre rôle utilise un nom différent, ajustez les commandes en conséquence.
Pour associer la politique SpotFleetTaggingRole gérée par AmazonEC2 à votre rôle Spot Fleet
-
Pour associer la politique IAM SpotFleetTaggingRole gérée par AmazonEC2 à votre SpotFleetRole rôle
AmazonEC2
, exécutez la commande suivante à l'aide du. AWS CLI$
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetTaggingRole \ --role-name
AmazonEC2SpotFleetRole
-
Pour dissocier la politique IAM SpotFleetRole gérée par AmazonEC2 de votre SpotFleetRole rôle
AmazonEC2
, exécutez la commande suivante à l'aide du. AWS CLI$
aws iam detach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetRole \ --role-name
AmazonEC2SpotFleetRole
Impossible de récupérer les secrets de Secrets Manager
Si vous utilisez une AMI avec un agent Amazon ECS antérieur à la version 1.16.0-1, vous devez utiliser la variable de configuration de l'agent Amazon ECS ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true
pour utiliser cette fonctionnalité. Vous pouvez l'ajouter au ./etc/ecs/ecs.config
fichier d'une nouvelle instance de conteneur lorsque vous créez cette instance. Vous pouvez également l'ajouter à une instance existante. Si vous l'ajoutez à une instance existante, vous devez redémarrer l'agent ECS après l'avoir ajouté. Pour plus d'informations, consultez Configuration de l'agent du conteneur Amazon ECS dans le Manuel du développeur Amazon Elastic Container Service.
Impossible de contourner les exigences en ressources liées à la définition des tâches
Les remplacements de mémoire et de vCPU spécifiés dans la structure memory
et les vcpus
membres de la structure ContainerOverrides, qui ont été transmis à SubmitJob, ne peuvent pas remplacer les exigences en matière de mémoire et de vCPU spécifiées dans la structure ResourceRequirements de la définition de tâche.
Si vous essayez de contourner ces exigences en matière de ressources, le message d'erreur suivant peut s'afficher :
« Cette valeur a été soumise dans une clé obsolète et peut entrer en conflit avec la valeur fournie par les exigences en ressources de la définition de tâche. »
Pour corriger cela, spécifiez les exigences en matière de mémoire et de vCPU dans le membre ResourceRequirements de ContainerOverrides. Par exemple, si vos remplacements de mémoire et de vCPU sont spécifiés dans les lignes suivantes.
"containerOverrides": { "memory":
8192
, "vcpus":4
}
Modifiez-les comme suit :
"containerOverrides": { "resourceRequirements": [ { "type": "MEMORY", "value": "
8192
" }, { "type": "VCPU", "value": "4
" } ], }
Procédez de la même manière aux exigences en matière de mémoire et de vCPU spécifiées dans l'objet ContainerProperties dans la définition de la tâche. Par exemple, si vos exigences en matière de mémoire et de vCPU sont spécifiées dans les lignes suivantes.
{ "containerProperties": { "memory":
4096
, "vcpus":2
, }
Modifiez-les comme suit :
"containerProperties": { "resourceRequirements": [ { "type": "MEMORY", "value": "
4096
" }, { "type": "VCPU", "value": "2
" } ], }
Message d'erreur lorsque vous mettez à jour le desiredvCpus
paramètre
Le message d'erreur suivant s'affiche lorsque vous utilisez l' AWS Batch API pour mettre à jour le paramètre vCPU (desiredvCpus
) souhaité.
Manually scaling down compute environment is not supported. Disconnecting job queues
from compute environment will cause it to scale-down to minvCpus
.
Ce problème se produit si la desiredvCpus
valeur mise à jour est inférieure à la desiredvCpus
valeur actuelle. Lorsque vous mettez à jour la desiredvCpus
valeur, les deux conditions suivantes doivent être vraies :
-
La
desiredvCpus
valeur doit être comprise entre lesmaxvCpus
valeursminvCpus
et. -
La
desiredvCpus
valeur mise à jour doit être supérieure ou égale à ladesiredvCpus
valeur actuelle.
AWS Batch sur Amazon EKS
Rubriques
INVALID
environnement informatique
Il est possible que vous ayez mal configuré un environnement informatique géré. Si c'est le cas, l'environnement informatique entre dans un INVALID
état et ne peut pas accepter de postes à des fins de placement. Les sections suivantes décrivent les causes possibles et la procédure de dépannage en fonction de la cause.
Version non prise en charge Kubernetes
Un message d'erreur semblable au suivant peut s'afficher lorsque vous utilisez l'opération d'CreateComputeEnvironment
API ou l'opération d'UpdateComputeEnvironment
API pour créer ou mettre à jour un environnement de calcul. Ce problème se produit si vous spécifiez une Kubernetes version non prise en charge dansEC2Configuration
.
At least one imageKubernetesVersion in EC2Configuration is not supported.
Pour résoudre ce problème, supprimez l'environnement informatique, puis recréez-le avec une Kubernetes version prise en charge.
Vous pouvez effectuer une mise à niveau de version mineure sur votre cluster Amazon EKS. Par exemple, vous pouvez mettre à niveau le cluster de 1.xx
à 1.yy
même si la version mineure n'est pas prise en charge.
Toutefois, l'état de l'environnement de calcul peut changer INVALID
après une mise à jour majeure de la version. Par exemple, si vous effectuez une mise à niveau d'une version majeure de 1.xx
vers2.yy
. Si la version majeure n'est pas prise en charge par AWS Batch, un message d'erreur semblable au suivant s'affiche.
reason=CLIENT_ERROR - ...
EKS
Cluster version [2.yy
] is unsupported
Pour résoudre ce problème, spécifiez une Kubernetes version prise en charge lorsque vous utilisez une opération d'API pour créer ou mettre à jour un environnement informatique.
AWS Batch sur Amazon, EKS prend actuellement en charge les Kubernetes versions suivantes :
-
1.29
-
1.28
-
1.27
-
1.26
-
1.25
-
1.24
-
1.23
Le profil d'instance n'existe pas
Si le profil d'instance spécifié n'existe pas, le statut de l'environnement de calcul AWS Batch sur Amazon EKS est remplacé parINVALID
. Vous voyez une erreur définie dans le statusReason
paramètre qui ressemble à ce qui suit.
CLIENT_ERROR - Instance profile arn:aws:iam::...:instance-profile/
<name>
does not exist
Pour résoudre ce problème, spécifiez ou créez un profil d'instance de travail. Pour de plus amples informations, veuillez consulter Rôle IAM de nœud Amazon EKS dans le Guide de l'utilisateur Amazon EKS.
Espace de Kubernetes noms non valide
Si AWS Batch sur Amazon EKS ne parvient pas à valider l'espace de noms de l'environnement de calcul, le statut de l'environnement de calcul est remplacé par. INVALID
Par exemple, ce problème peut se produire si l'espace de noms n'existe pas.
Un message d'erreur semblable au suivant s'affiche dans le statusReason
paramètre.
CLIENT_ERROR - Unable to validate Kubernetes Namespace
Ce problème peut se produire si l'une des conditions suivantes est vraie :
-
La chaîne d'Kubernetesespace de noms de l'
CreateComputeEnvironment
appel n'existe pas. Pour plus d'informations, consultez CreateComputeEnvironment. -
Les autorisations de contrôle d'accès basé sur les rôles (RBAC) requises pour gérer l'espace de noms ne sont pas correctement configurées.
-
AWS Batch n'a pas accès au point de terminaison du serveur Kubernetes d'API Amazon EKS.
Pour résoudre ce problème, consultez Vérifiez que le aws-auth ConfigMap est correctement configuré. Pour plus d’informations, consultez Commencer à utiliser AWS Batch Amazon EKS.
Environnement informatique supprimé
Supposons que vous supprimiez un cluster Amazon EKS avant de supprimer le cluster associé AWS Batch dans l'environnement informatique Amazon EKS. Ensuite, l'état de l'environnement de calcul est changé enINVALID
. Dans ce scénario, l'environnement de calcul ne fonctionne pas correctement si vous recréez le cluster Amazon EKS portant le même nom.
Pour résoudre ce problème, supprimez puis recréez l'environnement de calcul AWS Batch sur Amazon EKS.
Les nœuds ne rejoignent pas le cluster Amazon EKS
AWS Batch sur Amazon EKS réduit un environnement de calcul s'il détermine que tous les nœuds n'ont pas rejoint le cluster Amazon EKS. Lorsque AWS Batch sur Amazon EKS réduit l'environnement de calcul, le statut de l'environnement de calcul est modifié enINVALID
.
Note
AWS Batch ne modifie pas immédiatement l'état de l'environnement informatique afin que vous puissiez résoudre le problème.
Un message d'erreur semblable à l'un des suivants s'affiche dans le statusReason
paramètre :
Your compute environment has been INVALIDATED and scaled down because none of the
instances joined the underlying ECS Cluster. Common issues preventing instances joining are
the following: VPC/Subnet configuration preventing communication to ECS, incorrect Instance
Profile policy preventing authorization to ECS, or customized AMI or LaunchTemplate
configurations affecting ECS agent.
Your compute environment has been INVALIDATED and scaled down because none of the
nodes joined the underlying Amazon EKS Cluster. Common issues preventing nodes joining are the
following: networking configuration preventing communication to Amazon EKS Cluster, incorrect Amazon EKS
Instance Profile or Kubernetes RBAC policy preventing authorization to Amazon EKS Cluster, customized
AMI or LaunchTemplate configurations affecting Amazon EKS/Kubernetes node bootstrap.
Lorsque vous utilisez une AMI Amazon EKS par défaut, les causes les plus fréquentes de ce problème sont les suivantes :
-
Le rôle d'instance n'est pas configuré correctement. Pour de plus amples informations, veuillez consulter Rôle IAM de nœud Amazon EKS dans le Guide de l'utilisateur Amazon EKS.
-
Les sous-réseaux ne sont pas correctement configurés. Pour plus d'informations, consultez les exigences et considérations relatives aux VPC et aux sous-réseaux Amazon EKS dans le guide de l'utilisateur Amazon EKS.
-
Le groupe de sécurité n'est pas configuré correctement. Pour plus d'informations, consultez les exigences et considérations relatives aux groupes de sécurité Amazon EKS dans le guide de l'utilisateur Amazon EKS.
Note
Vous pouvez également voir une notification d'erreur dans le Personal Health Dashboard (PHD).
AWS Batch sur Amazon EKS, le RUNNABLE
statut de la tâche est bloqué
Un aws-auth
ConfigMap
est automatiquement créé et appliqué à votre cluster lorsque vous créez un groupe de nœuds gérés ou un groupe de nœuds à l'aide deeksctl
. Un aws-auth
ConfigMap
est initialement créé pour permettre aux nœuds de rejoindre votre cluster. Toutefois, vous pouvez également utiliser le aws-auth
ConfigMap
pour ajouter un accès de contrôle d'accès basé sur les rôles (RBAC) aux utilisateurs et aux rôles.
Pour vérifier que le aws-auth
ConfigMap
est correctement configuré, procédez comme suit :
-
Récupérez les rôles mappés dans :
aws-auth
ConfigMap
$
kubectl get configmap -n kube-system aws-auth -o yaml
-
Vérifiez que le
roleARN
est configuré comme suit.rolearn: arn:aws:iam::
aws_account_number
:role/AWSServiceRoleForBatchNote
Vous pouvez également consulter les journaux du plan de contrôle Amazon EKS. Pour plus d'informations, consultez la section Connexion au plan de contrôle Amazon EKS dans le guide de l'utilisateur Amazon EKS.
Pour résoudre un problème lié au blocage d'une tâche dans un RUNNABLE
statut, nous vous recommandons de kubectl
réappliquer le manifeste. Pour plus d’informations, consultez Étape 1 : Préparation de votre cluster Amazon EKS pour AWS Batch. Vous pouvez également l'utiliser kubectl
pour modifier manuellement le aws-auth
ConfigMap
. Pour plus d'informations, consultez la section Activation de l'accès des utilisateurs et des rôles IAM à votre cluster dans le guide de l'utilisateur Amazon EKS.
Vérifiez que le aws-auth ConfigMap
est correctement configuré
Pour vérifier que le aws-auth
ConfigMap
est correctement configuré, procédez comme suit :
-
Récupérez les rôles mappés dans le
aws-auth
ConfigMap
.$
kubectl get configmap -n kube-system aws-auth -o yaml
-
Vérifiez que le
roleARN
est configuré comme suit.rolearn: arn:aws:iam::
aws_account_number
:role/AWSServiceRoleForBatchNote
Le chemin
aws-service-role/batch.amazonaws.com/
a été supprimé de l'ARN du rôle lié au service. Cela est dû à un problème avec la carteaws-auth
de configuration. Pour plus d'informations, consultez la section Les rôles dotés de chemins ne fonctionnent pas lorsque le chemin est inclus dans leur ARN dans le aws-authconfigmap. Note
Vous pouvez également consulter les journaux du plan de contrôle Amazon EKS. Pour plus d'informations, consultez la section Connexion au plan de contrôle Amazon EKS dans le guide de l'utilisateur Amazon EKS.
Pour résoudre un problème lié au blocage d'une tâche dans un RUNNABLE
statut, nous vous recommandons de kubectl
réappliquer le manifeste. Pour plus d’informations, consultez Étape 1 : Préparation de votre cluster Amazon EKS pour AWS Batch. Vous pouvez également l'utiliser kubectl
pour modifier manuellement le aws-auth
ConfigMap
. Pour plus d'informations, consultez la section Activation de l'accès des utilisateurs et des rôles IAM à votre cluster dans le guide de l'utilisateur Amazon EKS.
Les autorisations ou les liaisons RBAC ne sont pas correctement configurées
Si vous rencontrez des problèmes d'autorisation RBAC ou de liaison, vérifiez que le aws-batch
Kubernetes rôle peut accéder à l'espace de Kubernetes noms :
$
kubectl get namespace
namespace
--as=aws-batch
$
kubectl auth can-i get ns --as=aws-batch
Vous pouvez également utiliser la kubectl describe
commande pour afficher les autorisations associées à un rôle de cluster ou à un espace de Kubernetes noms.
$
kubectl describe clusterrole
aws-batch-cluster-role
Voici un exemple de sortie.
Name: aws-batch-cluster-role
Labels: <none>
Annotations: <none>
PolicyRule:
Resources Non-Resource URLs Resource Names Verbs
--------- ----------------- -------------- -----
configmaps [] [] [get list watch]
nodes [] [] [get list watch]
pods [] [] [get list watch]
daemonsets.apps [] [] [get list watch]
deployments.apps [] [] [get list watch]
replicasets.apps [] [] [get list watch]
statefulsets.apps [] [] [get list watch]
clusterrolebindings.rbac.authorization.k8s.io [] [] [get list]
clusterroles.rbac.authorization.k8s.io [] [] [get list]
namespaces [] [] [get]
$
kubectl describe role
aws-batch-compute-environment-role
-nmy-aws-batch-namespace
Voici un exemple de sortie.
Name: aws-batch-compute-environment-role
Labels: <none>
Annotations: <none>
PolicyRule:
Resources Non-Resource URLs Resource Names Verbs
--------- ----------------- -------------- -----
pods [] [] [create get list watch delete patch]
serviceaccounts [] [] [get list]
rolebindings.rbac.authorization.k8s.io [] [] [get list]
roles.rbac.authorization.k8s.io [] [] [get list]
Pour résoudre ce problème, réappliquez les autorisations et rolebinding
les commandes RBAC. Pour plus d'informations, voir Étape 1 : Préparation de votre cluster Amazon EKS pour AWS Batch.