Aws-cli: clidriver dans la version 1.13.0 est cassé

Créé le 29 nov. 2017  ·  21Commentaires  ·  Source: aws/aws-cli

Après l'installation par pip de awscli==1.13.0 dans un conteneur Docker basé sur python:3.6.2 , l'exécution de toutes les commandes aws revient

Traceback (most recent call last):
  File "/usr/local/bin/aws", line 19, in <module>
    import awscli.clidriver
  File "/usr/local/lib/python3.6/site-packages/awscli/clidriver.py", line 24, in <module>
    from botocore.history import get_global_history_recorder
ModuleNotFoundError: No module named 'botocore.history'

Revenu à awscli==1.12.0 et tout fonctionne bien.

Commentaire le plus utile

Cela a corrigé pour moi:

$ sudo -H pip install awscli --upgrade

Tous les 21 commentaires

On dirait que vos versions cli et botocore sont désynchronisées d'une manière ou d'une autre. Pour awscli v1.13.0, assurez-vous d'avoir au moins botocore v1.8.3.

J'ai exactement le même problème :

```[LOCAL][ fcabral@droideka :~]$ sudo pip freeze | egrep '(awscli|boto|boto3|botocore)'
awscli==1.14.5
boto==2.48.0
boto3==1.4.8
botocore==1.8.9

```[LOCAL][fcabral<strong i="12">@droideka</strong>:~]$ aws help
Traceback (most recent call last):
  File "/usr/local/bin/aws", line 19, in <module>
    import awscli.clidriver
  File "/usr/local/lib/python2.7/dist-packages/awscli/clidriver.py", line 24, in <module>
    from botocore.history import get_global_history_recorder
ImportError: No module named history

Comme l'a dit @karimtabet , le retour à la 1.12.0 fonctionne.

Exactement la même erreur que @cabral404 , en utilisant :

aws-cli/1.14.6
botocore/1.8.12
Python/2.7.12

J'ai le même problème lorsqu'il est exécuté avec mon utilisateur, si sudo est utilisé, aws cli fonctionne bien, il semble qu'il ait des problèmes d'autorisation lorsqu'il est installé à partir de packages ou de pip.

Ma solution de contournement ressemble à ceci :

  • Supprimer aws cli de pip avec pip uninstall awscli
    ou
  • Supprimer les packages aws-cli (comme packman -R aws-cli )
  • Ensuite, utilisez aws bundle
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
./awscli-bundle/install -b ~/bin/aws
export PATH=~/bin:$PATH

Plus d'informations sont ici http://docs.aws.amazon.com/cli/latest/userguide/awscli-install-bundle.html#install -bundle-user

Bien que le retour à une version antérieure puisse fonctionner, les versions plus récentes qui ne fonctionnent pas en raison de l'échec des importations ressemblent à un problème d'installation du package awscli ou de gestion des packages python en général sur votre système. Dans ce cas, il existe probablement une autre version de botocore quelque part qui prend le pas sur celle affichée dans la sortie de pip freeze .

Comme @Danpiel mentionne la suppression de toutes les autres méthodes d'installation et l'utilisation d'un programme d'installation groupé est une solution possible car elle utilise un virtualenv isolé pour exécuter l'aws cli.

Pour toute personne encore confrontée à ce problème, veuillez fournir les éléments suivants :
1) Quel système d'exploitation utilisez-vous ?
2) Comment avez-vous installé le package awscli ?
3) Comment avez-vous tenté de mettre à jour le package awscli ?

Cela a corrigé pour moi:

$ sudo -H pip install awscli --upgrade

aws ec2 describe-regions --query 'Regions[].{Name:RegionName}' --output text --region us-east-1
Traceback (most recent call last):
  File "/usr/bin/aws", line 19, in <module>
    import awscli.clidriver
  File "/usr/lib/python2.7/dist-packages/awscli/clidriver.py", line 24, in <module>
    from botocore.history import get_global_history_recorder
ImportError: No module named history

Je suis également confronté au même problème.

même problème que @optimisticanshul
version aws : awscli-1.14.19
botocore : botocore-1.8.23
python : Python 2.7.13

Solution de contournement:

  1. pip uninstall boto3 -y
  2. pip uninstall boto -y
  3. pip uninstall botocore -y
  4. pip install botocore --upgrade

Résultat aws fonctionne

Je suis confronté à un problème similaire. La seule différence est que lorsque j'essaie d'y accéder en tant qu'utilisateur root, j'obtiens l'erreur, mais lorsque j'y accède en tant qu'utilisateur ec2, cela fonctionne très bien.

Sortie en tant qu'utilisateur ec2

[ec2-user@ip-x-x-x-x ~]$ aws route53 change-resource-record-sets --hosted-zone-id $PrivateHostedZoneId --change-batch file:///home/ec2-user/change.json
{
    "ChangeInfo": {
        "Status": "PENDING",
        "Comment": "Create route53 DNS entry at instance boot up",
        "SubmittedAt": "2018-01-17T12:30:45.534Z",
        "Id": "/change/C1IG3ETCO6MGVW"
    }
}

Sortie en tant qu'utilisateur root

[root@ip-x-x-x-x ec2-user]# aws route53 change-resource-record-sets --hosted-zone-id $PrivateHostedZoneId --change-batch file:///home/ec2-user/change.json
Traceback (most recent call last):
  File "/usr/bin/aws", line 19, in <module>
    import awscli.clidriver
  File "/usr/lib/python2.7/dist-packages/awscli/clidriver.py", line 24, in <module>
    from botocore.history import get_global_history_recorder
ImportError: No module named history

aws-cli : 1.14.9
Python : 2.7.12
Linux : 4.9.76-3.78.amzn1.x86_64
botocore : 1.8.13

Voir aussi le même problème.

Linux : Arch Linux
Python : 3.6.4
aws-cli 1.14.40-1
botocore : 1.8.44-1

J'ai essayé de mettre à niveau botocore via pip, sans succès jusqu'à présent.

Mise à jour : j'ai également essayé sudo pip install awscli --force-reinstall --upgrade qui a été mentionné dans #641 mais cela n'a pas aidé non plus.

Même problème ici sous Windows :

plateforme : win32
python : 3.5.2
awscli : 1.14.41
botocore : 1.8.45

J'ai essayé les solutions de contournement suggérées ci-dessus, avec la désinstallation et la réinstallation d'awscli et de botocore, et je reçois toujours le message :

  File "C:\python\Python3\Scripts\aws.cmd", line 50, in <module>
    import awscli.clidriver
ImportError: No module named awscli.clidriver

Si vous avez installé la CLI via un mécanisme autre que pip (comme un gestionnaire de packages Linux), vous devrez également la désinstaller pour vous assurer de nettoyer votre système avant de réinstaller. Pour Windows, je recommande fortement d'utiliser le programme d'installation que nous fournissons ici

idem ici mais corrigé avec des mises à jour.
ceux qui ont échoué

boto (2.48.0)
boto3 (1.4.7)
botocore (1.7.1)
pip install --upgrade boto3
pip install --upgrade botocore
pip install --upgrade awscli

```
aws ecs list-container-instances --cluster my_ecs_cluster
{
"containerInstanceArns": [

...
]
}

Toujours une erreur avec la plupart des versions actuelles :
awscli==1.14.53
boto==2.48.0
boto3==1.6.6
botocore==1.9.6

Commande : aws ecr get-login --region $AWS_DEFAULT_REGION
Image : Ubuntu - aws/codebuild/ docker:17.09.0

Traceback (appel le plus récent en dernier) :
Fichier "/usr/local/bin/aws", ligne 19, dans
importer awscli.clidriver
Fichier "/usr/local/lib/python2.7/dist-packages/awscli/clidriver.py", ligne 24, dans
depuis botocore.history importer get_global_history_recorder
ImportError : aucun module nommé history

Trouvé une solution de travail:
awscli==1.11.157
boto3==1.6.7
botocore==1.9.7

On dirait qu'un correctif a été appliqué et que les versions boto3 et botocore ont été mises à jour. Quelles que soient les mises à jour qu'ils ont faites, cela semble avoir résolu le problème.

Il semble que le was ne puisse pas analyser le fichier de configuration. J'ai résolu le problème en créant un nouveau fichier ~/.aws/config.

J'ai eu le même problème lors de l'installation de CentOS avec yum. J'ai supprimé les packages avec yum et installé awscli avec pip et maintenant tout fonctionne bien.

Pour ceux qui installent à partir de centos 7 avec epel, awscli a été supprimé d'epel et inclus dans le dépôt de base de centos. Cependant, les dépendances ont changé, supprimez simplement les packages suivants (si rien d'autre ne l'utilise)

python2-s3transfer python-colorama python2-botocore python2-rsa

puis réinstaller à partir du référentiel centos-base

Clôture de l'ancien problème. Comme mentionné, le problème est dû aux anciennes versions de botocore utilisées avec la CLI. Tant que vous effectuez l'installation via pip ou toute autre méthode d'installation prise en charge , vous obtiendrez une version fonctionnelle de la CLI.

Supprimer le paquet botocore
pip désinstaller botocore

réinstaller awscli
pip installer awscli

Maintenant ça marche pour moi

sudo -H pip install awscli --upgrade

@mariosotil tu nous as sauvés !

Cette page vous a été utile?
0 / 5 - 0 notes