Lorsque je crée un nouveau service Amazon Elastic Container Service (Amazon ECS), le message d'erreur suivant s'affiche : « Creation of service was not idempotent. »
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.
L'erreur not idempotent se produit lorsque vous créez un service portant le même nom qu'un service existant dans la base de données Amazon ECS. Pour résoudre ce problème, prenez les mesures suivantes.
Assurez-vous de ne pas utiliser un nom de cluster existant
Si vous essayez de créer un cluster portant le même nom qu'un cluster existant, vous rencontrez l'une des erreurs suivantes :
« InvalidParameterException: Creation of service was not idempotent. »
-ou-
« Invalid request provided: CreateService error: Create service is not idempotent. »
Pour résoudre l'erreur, assurez-vous qu'aucun service portant le même nom n'existe. Si vous avez récemment supprimé un service portant le même nom, vérifiez que son état est SUPPRIMÉ.
Remarque : L'erreur not idempotent peut se produire même si vous supprimez le cluster existant, car celui-ci est peut-être encore en phase de suppression.
Si le service est à l’état MISE HORS SERVICE, vérifiez si des tâches du service sont bloquées lors de la mise hors service. Pour afficher l'état de toutes les tâches de votre cluster, exécutez l'API DescribeTasks. Vous pouvez également procéder comme suit :
- Ouvrez la console Amazon ECS.
- Dans la page de navigation, sélectionnez Clusters.
- Sélectionnez votre cluster.
- Choisissez l'onglet Tâches.
Vérifiez l'appel d'API UpdateService pour le service supprimé afin de vérifier s'il est toujours actif. Vérifiez également l'appel d'API Delete Service pour voir si l’erreur survient pour la raison suivante : « Service contains registered instances; delete the instances before deleting the service ». Si l'API Delete Service contient cette raison, supprimez l'instance.
Recréez le rôle IAM supprimé
Si vous utilisez un rôle AWS Identity and Access Management (IAM) pour une tâche, vous devez d'abord supprimer la tâche avant de supprimer le rôle. Le rôle IAM doit être disponible tout au long du cycle de vie de la tâche. Cela inclut la mise hors service des ressources.
Si vous avez d'abord supprimé le rôle IAM, procédez comme suit pour le recréer :
- Pour obtenir le nom du rôle IAM précédent, exécutez la commande describe-services suivante :
aws ecs describe-services --cluster clustername --services servicename
Remarque : Remplacez clustername par le nom de votre cluster et servicename par le nom du service.
- Recréez le rôle IAM avec le même nom. Pour plus d'informations sur les autorisations requises, consultez la section Autorisations de rôle lié à un service pour Amazon ECS.
Remarque : Pour trouver des informations sur l'utilisateur qui a supprimé le rôle, consultez l'événement AWS CloudTrail DeleteRole.
Créez un nouveau service avec un nom différent
Si vous ne parvenez toujours pas à créer un nouveau service portant le même nom que le service supprimé, créez-en un avec un nom différent.
Informations connexes
CreateService