Aws-cli: o clidriver na versão 1.13.0 está quebrado

Criado em 29 nov. 2017  ·  21Comentários  ·  Fonte: aws/aws-cli

Depois de pip instalar awscli==1.13.0 em um contêiner Docker baseado em python: 3.6.2 , a execução de qualquer comando aws retorna

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'

Revertido para awscli==1.12.0 e tudo funciona bem.

Comentários muito úteis

Isso corrigiu para mim:

$ sudo -H pip install awscli --upgrade

Todos 21 comentários

Parece que sua versão cli e botocore estão fora de sincronia de alguma forma. Para awscli v1.13.0, certifique-se de ter pelo menos o botocore v1.8.3.

Estou tendo exatamente o mesmo problema:

`` `[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

Como @karimtabet disse, reverter para 1.12.0 funciona.

Exatamente o mesmo erro que @ cabral404 , usando:

aws-cli / 1.14.6
botocore / 1.8.12
Python / 2.7.12

Tenho o mesmo problema ao executar com meu usuário, se sudo é usado aws cli funciona bem, parece que tem problemas de permissão quando instalado de pacotes ou pip.

Minha solução alternativa é a seguinte:

  • Remova o aws cli do pip com pip uninstall awscli
    ou
  • Remova remova os pacotes aws-cli (como packman -R aws-cli )
  • Em seguida, use o pacote aws
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

Mais informações estão aqui http://docs.aws.amazon.com/cli/latest/userguide/awscli-install-bundle.html#install -bundle-user

Embora a reversão para uma versão anterior possa funcionar, as versões mais recentes que não funcionam devido a falhas nas importações parecem um problema de como o pacote awscli foi instalado ou como os pacotes python em geral são gerenciados em seu sistema. Neste caso, provavelmente há outra versão do botocore em algum lugar que está tendo precedência sobre a que está sendo exibida na saída de pip freeze .

Como @Danpiel menciona, remover todos os outros métodos de instalação e usar um instalador empacotado é uma solução possível, pois usa um virtualenv isolado para executar o aws cli.

Para quem ainda está enfrentando isso, forneça o seguinte:
1) Qual sistema operacional você está usando?
2) Como você instalou o pacote awscli ?
3) Como você tentou atualizar o pacote awscli ?

Isso corrigiu para mim:

$ 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

Eu também estou enfrentando o mesmo problema.

mesmo problema que @optimisticanshul
versão aws: awscli-1.14.19
botocore: botocore-1.8.23
python: Python 2.7.13

Gambiarra:

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

Resultado aws funciona

Estou enfrentando um problema semelhante. A única diferença é que quando tento acessá-lo como usuário root, recebo o erro, mas ao acessá-lo como usuário ec2, funciona perfeitamente.

Saída como ec2-user

[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"
    }
}

Saída como usuário 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

Também vendo o mesmo problema.

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

Tentei atualizar o botocore via pip, sem sucesso até agora.

Atualização: eu também tentei sudo pip install awscli --force-reinstall --upgrade que foi mencionado em # 641, mas isso também não ajudou.

O mesmo problema aqui usando o Windows:

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

Tentei as soluções alternativas sugeridas acima, com a desinstalação e reinstalação de awscli e botocore, e ainda estou recebendo a mensagem:

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

Se você tiver o CLI instalado por meio de qualquer mecanismo diferente de pip (como um gerenciador de pacotes do Linux), você precisará desinstalá-lo também para certificar-se de limpar seu sistema antes de reinstalar. Para Windows, eu recomendo fortemente o uso do instalador que fornecemos aqui

mesmo aqui, mas corrigido com atualizações.
os que falharam

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": [

...
]
}

Ainda obtendo erros com a maioria das versões atuais:
awscli == 1.14.53
boto == 2.48.0
boto3 == 1.6.6
botocore == 1.9.6

Comando: aws ecr get-login --region $ AWS_DEFAULT_REGION
Imagem: Ubuntu - aws / codebuild / docker: 17.09.0

Traceback (última chamada mais recente):
Arquivo "/ usr / local / bin / aws", linha 19, em
import awscli.clidriver
Arquivo "/usr/local/lib/python2.7/dist-packages/awscli/clidriver.py", linha 24, em
de botocore.history import get_global_history_recorder
ImportError: Nenhum módulo denominado histórico

Encontrou uma solução de trabalho:
awscli == 1.11.157
boto3 == 1.6.7
botocore == 1.9.7

Parece que uma correção foi aplicada e as versões do boto3 e do botocore foram atualizadas. Quaisquer que sejam as atualizações feitas, parece que corrigiu o problema.

Parece que o was não consegue analisar o arquivo de configuração. Resolvi o problema criando um novo arquivo ~ / .aws / config.

Eu tive o mesmo problema na instalação do CentOS com o yum. Removi os pacotes com o yum e instalei o awscli com pip e agora tudo funciona bem.

Para aqueles que instalam do centos 7 com epel, awscli foi removido do epel e incluído no centos base repo. no entanto, as dependências mudaram, apenas remova os seguintes pacotes (se nada mais os usar)

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

em seguida, reinstale a partir do repo centos-base

Fechando o velho problema. Conforme mencionado, o problema é devido a versões mais antigas do botocore sendo usadas com a CLI. Contanto que você esteja instalando via pip ou qualquer outro método de instalação compatível , você obterá uma versão funcional da CLI.

Remova o pacote de botocore
pip uninstall botocore

instale o awscli novamente
pip install awscli

Agora funciona para mim

sudo -H pip install awscli --upgrade

@mariosotil você nos salvou!

Esta página foi útil?
0 / 5 - 0 avaliações