Solucionar erros da AWS CLI - AWS Command Line Interface

Solucionar erros da AWS CLI

Esta seção aborda erros comuns e os passos para a solução de problemas a serem seguidas para resolver o problema. Sugerimos seguir a Solução geral de problemas primeiro.

Solução geral de problemas para tentar primeiro

Se você receber um erro ou encontrar um problema com a AWS CLI, sugerimos as dicas gerais a seguir para ajudar na solução de problemas.

Voltar ao início

Verificar a formatação do comando AWS CLI

Se você receber um erro indicando que um comando não existe ou que ele não reconhece um parâmetro que a documentação indica estar disponível, é provável que o comando esteja formatado incorretamente. Sugerimos verificar o seguinte:

Para obter mais informações sobre como um comando específico deve ser estruturado, consulte o AWS CLIGuia de referência da versão 2.

Voltar ao início

Confirme se você está executando uma versão recente da AWS CLI

Se você receber um erro indicando que um comando não existe ou que ele não reconhece um parâmetro que o AWS CLIGuia de referência da versão 2 diz que está disponível, primeiro confirme se o comando está formatado corretamente. Se a formatação estiver correta, recomendamos atualizar para a versão mais recente da AWS CLI. Versões atualizadas da AWS CLI são lançadas quase todos os dias úteis. Novos serviços da AWS, recursos e parâmetros são apresentados nessas novas versões da AWS CLI. A única maneira de obter acesso a esses novos serviços, recursos ou parâmetros é atualizar para uma versão que foi lançada depois que esse elemento foi apresentado pela primeira vez.

A maneira como você atualiza sua versão da AWS CLI depende de como ela foi instalada originalmente, conforme descrito em Instalar ou atualizar para a versão mais recente da AWS CLI.

Se você tiver usado um dos instaladores empacotados, talvez precise remover a instalação existente antes de baixar e instalar a versão mais recente para seu sistema operacional.

Voltar ao início

Como usar a opção --debug

Quando a AWS CLI informar um erro que você não compreende imediatamente ou produzir resultados inesperados, você poderá obter mais detalhes sobre o erro executando o comando novamente com a opção --debug. Com esta opção, a AWS CLI gera detalhes sobre cada passo necessário para processar seu comando. Os detalhes na saída podem ajudar a determinar quando o erro ocorreu e fornecem dicas sobre o que o acionou o erro.

É possível enviar a saída para um arquivo de texto para análise posterior ou enviá-lo para AWS Support quando solicitado.

Quando você inclui a opção --debug, os detalhes incluem:

  • Procurar credenciais

  • Analisar os parâmetros fornecidos

  • Criar a solicitação enviada aos servidores da AWS

  • O conteúdo da solicitação enviada para a AWS

  • O conteúdo da resposta não formatada

  • A saída formatada

Veja a seguir um exemplo de um comando executado com e sem a opção --debug.

$ aws iam list-groups --profile MyTestProfile { "Groups": [ { "Path": "/", "GroupName": "MyTestGroup", "GroupId": "AGPA0123456789EXAMPLE", "Arn": "arn:aws:iam::123456789012:group/MyTestGroup", "CreateDate": "2019-08-12T19:34:04Z" } ] }
$ aws iam list-groups --profile MyTestProfile --debug 2019-08-12 12:36:18,305 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-cli/1.16.215 Python/3.7.3 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.12.205 2019-08-12 12:36:18,305 - MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI: ['iam', 'list-groups', '--debug'] 2019-08-12 12:36:18,305 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function add_scalar_parsers at 0x7fdf173161e0> 2019-08-12 12:36:18,305 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function register_uri_param_handler at 0x7fdf17dec400> 2019-08-12 12:36:18,305 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function inject_assume_role_provider_cache at 0x7fdf17da9378> 2019-08-12 12:36:18,307 - MainThread - botocore.credentials - DEBUG - Skipping environment variable credential check because profile name was explicitly set. 2019-08-12 12:36:18,307 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function attach_history_handler at 0x7fdf173ed9d8> 2019-08-12 12:36:18,308 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/iam/2010-05-08/service-2.json 2019-08-12 12:36:18,317 - MainThread - botocore.hooks - DEBUG - Event building-command-table.iam: calling handler <function add_waiters at 0x7fdf1731a840> 2019-08-12 12:36:18,320 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/iam/2010-05-08/waiters-2.json 2019-08-12 12:36:18,321 - MainThread - awscli.clidriver - DEBUG - OrderedDict([('path-prefix', <awscli.arguments.CLIArgument object at 0x7fdf171ac780>), ('marker', <awscli.arguments.CLIArgument object at 0x7fdf171b09e8>), ('max-items', <awscli.arguments.CLIArgument object at 0x7fdf171b09b0>)]) 2019-08-12 12:36:18,322 - MainThread - botocore.hooks - DEBUG - Event building-argument-table.iam.list-groups: calling handler <function add_streaming_output_arg at 0x7fdf17316510> 2019-08-12 12:36:18,322 - MainThread - botocore.hooks - DEBUG - Event building-argument-table.iam.list-groups: calling handler <function add_cli_input_json at 0x7fdf17da9d90> 2019-08-12 12:36:18,322 - MainThread - botocore.hooks - DEBUG - Event building-argument-table.iam.list-groups: calling handler <function unify_paging_params at 0x7fdf17328048> 2019-08-12 12:36:18,326 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/iam/2010-05-08/paginators-1.json 2019-08-12 12:36:18,326 - MainThread - awscli.customizations.paginate - DEBUG - Modifying paging parameters for operation: ListGroups 2019-08-12 12:36:18,326 - MainThread - botocore.hooks - DEBUG - Event building-argument-table.iam.list-groups: calling handler <function add_generate_skeleton at 0x7fdf1737eae8> 2019-08-12 12:36:18,326 - MainThread - botocore.hooks - DEBUG - Event before-building-argument-table-parser.iam.list-groups: calling handler <bound method OverrideRequiredArgsArgument.override_required_args of <awscli.customizations.cliinputjson.CliInputJSONArgument object at 0x7fdf171b0a58>> 2019-08-12 12:36:18,327 - MainThread - botocore.hooks - DEBUG - Event before-building-argument-table-parser.iam.list-groups: calling handler <bound method GenerateCliSkeletonArgument.override_required_args of <awscli.customizations.generatecliskeleton.GenerateCliSkeletonArgument object at 0x7fdf171c5978>> 2019-08-12 12:36:18,327 - MainThread - botocore.hooks - DEBUG - Event operation-args-parsed.iam.list-groups: calling handler functools.partial(<function check_should_enable_pagination at 0x7fdf17328158>, ['marker', 'max-items'], {'max-items': <awscli.arguments.CLIArgument object at 0x7fdf171b09b0>}, OrderedDict([('path-prefix', <awscli.arguments.CLIArgument object at 0x7fdf171ac780>), ('marker', <awscli.arguments.CLIArgument object at 0x7fdf171b09e8>), ('max-items', <awscli.customizations.paginate.PageArgument object at 0x7fdf171c58d0>), ('cli-input-json', <awscli.customizations.cliinputjson.CliInputJSONArgument object at 0x7fdf171b0a58>), ('starting-token', <awscli.customizations.paginate.PageArgument object at 0x7fdf171b0a20>), ('page-size', <awscli.customizations.paginate.PageArgument object at 0x7fdf171c5828>), ('generate-cli-skeleton', <awscli.customizations.generatecliskeleton.GenerateCliSkeletonArgument object at 0x7fdf171c5978>)])) 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.path-prefix: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.marker: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.max-items: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.cli-input-json: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.starting-token: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.page-size: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.generate-cli-skeleton: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,329 - MainThread - botocore.hooks - DEBUG - Event calling-command.iam.list-groups: calling handler <bound method CliInputJSONArgument.add_to_call_parameters of <awscli.customizations.cliinputjson.CliInputJSONArgument object at 0x7fdf171b0a58>> 2019-08-12 12:36:18,329 - MainThread - botocore.hooks - DEBUG - Event calling-command.iam.list-groups: calling handler <bound method GenerateCliSkeletonArgument.generate_json_skeleton of <awscli.customizations.generatecliskeleton.GenerateCliSkeletonArgument object at 0x7fdf171c5978>> 2019-08-12 12:36:18,329 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role 2019-08-12 12:36:18,329 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role-with-web-identity 2019-08-12 12:36:18,329 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: shared-credentials-file 2019-08-12 12:36:18,329 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials 2019-08-12 12:36:18,330 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/endpoints.json 2019-08-12 12:36:18,334 - MainThread - botocore.hooks - DEBUG - Event choose-service-name: calling handler <function handle_service_name_alias at 0x7fdf1898eb70> 2019-08-12 12:36:18,337 - MainThread - botocore.hooks - DEBUG - Event creating-client-class.iam: calling handler <function add_generate_presigned_url at 0x7fdf18a028c8> 2019-08-12 12:36:18,337 - MainThread - botocore.regions - DEBUG - Using partition endpoint for iam, us-west-2: aws-global 2019-08-12 12:36:18,337 - MainThread - botocore.args - DEBUG - The s3 config key is not a dictionary type, ignoring its value of: None 2019-08-12 12:36:18,340 - MainThread - botocore.endpoint - DEBUG - Setting iam timeout as (60, 60) 2019-08-12 12:36:18,341 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/_retry.json 2019-08-12 12:36:18,341 - MainThread - botocore.client - DEBUG - Registering retry handlers for service: iam 2019-08-12 12:36:18,342 - MainThread - botocore.hooks - DEBUG - Event before-parameter-build.iam.ListGroups: calling handler <function generate_idempotent_uuid at 0x7fdf189b10d0> 2019-08-12 12:36:18,342 - MainThread - botocore.hooks - DEBUG - Event before-call.iam.ListGroups: calling handler <function inject_api_version_header_if_needed at 0x7fdf189b2a60> 2019-08-12 12:36:18,343 - MainThread - botocore.endpoint - DEBUG - Making request for OperationModel(name=ListGroups) with params: {'url_path': '/', 'query_string': '', 'method': 'POST', 'headers': {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent': 'aws-cli/1.16.215 Python/3.7.3 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.12.205'}, 'body': {'Action': 'ListGroups', 'Version': '2010-05-08'}, 'url': 'https://iam.amazonaws.com/', 'context': {'client_region': 'aws-global', 'client_config': <botocore.config.Config object at 0x7fdf16e9a4a8>, 'has_streaming_input': False, 'auth_type': None}} 2019-08-12 12:36:18,343 - MainThread - botocore.hooks - DEBUG - Event request-created.iam.ListGroups: calling handler <bound method RequestSigner.handler of <botocore.signers.RequestSigner object at 0x7fdf16e9a470>> 2019-08-12 12:36:18,343 - MainThread - botocore.hooks - DEBUG - Event choose-signer.iam.ListGroups: calling handler <function set_operation_specific_signer at 0x7fdf18996f28> 2019-08-12 12:36:18,343 - MainThread - botocore.auth - DEBUG - Calculating signature using v4 auth. 2019-08-12 12:36:18,343 - MainThread - botocore.auth - DEBUG - CanonicalRequest: POST / content-type:application/x-www-form-urlencoded; charset=utf-8 host:iam.amazonaws.com x-amz-date:20190812T193618Z content-type;host;x-amz-date 5f776d91EXAMPLE9b8cb5eb5d6d4a787a33ae41c8cd6eEXAMPLEca69080e1e1f 2019-08-12 12:36:18,344 - MainThread - botocore.auth - DEBUG - StringToSign: AWS4-HMAC-SHA256 20190812T193618Z 20190812/us-east-1/iam/aws4_request ab7e367eEXAMPLE2769f178ea509978cf8bfa054874b3EXAMPLE8d043fab6cc9 2019-08-12 12:36:18,344 - MainThread - botocore.auth - DEBUG - Signature: d85a0EXAMPLEb40164f2f539cdc76d4f294fe822EXAMPLE18ad1ddf58a1a3ce7 2019-08-12 12:36:18,344 - MainThread - botocore.endpoint - DEBUG - Sending http request: <AWSPreparedRequest stream_output=False, method=POST, url=https://iam.amazonaws.com/, headers={'Content-Type': b'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent': b'aws-cli/1.16.215 Python/3.7.3 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.12.205', 'X-Amz-Date': b'20190812T193618Z', 'Authorization': b'AWS4-HMAC-SHA256 Credential=AKIA01234567890EXAMPLE-east-1/iam/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=d85a07692aceb401EXAMPLEa1b18ad1ddf58a1a3ce7EXAMPLE', 'Content-Length': '36'}> 2019-08-12 12:36:18,344 - MainThread - urllib3.util.retry - DEBUG - Converted retries value: False -> Retry(total=False, connect=None, read=None, redirect=0, status=None) 2019-08-12 12:36:18,344 - MainThread - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): iam.amazonaws.com:443 2019-08-12 12:36:18,664 - MainThread - urllib3.connectionpool - DEBUG - https://iam.amazonaws.com:443 "POST / HTTP/1.1" 200 570 2019-08-12 12:36:18,664 - MainThread - botocore.parsers - DEBUG - Response headers: {'x-amzn-RequestId': '74c11606-bd38-11e9-9c82-559da0adb349', 'Content-Type': 'text/xml', 'Content-Length': '570', 'Date': 'Mon, 12 Aug 2019 19:36:18 GMT'} 2019-08-12 12:36:18,664 - MainThread - botocore.parsers - DEBUG - Response body: b'<ListGroupsResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/">\n <ListGroupsResult>\n <IsTruncated>false</IsTruncated>\n <Groups>\n <member>\n <Path>/</Path>\n <GroupName>MyTestGroup</GroupName>\n <Arn>arn:aws:iam::123456789012:group/MyTestGroup</Arn>\n <GroupId>AGPA1234567890EXAMPLE</GroupId>\n <CreateDate>2019-08-12T19:34:04Z</CreateDate>\n </member>\n </Groups>\n </ListGroupsResult>\n <ResponseMetadata>\n <RequestId>74c11606-bd38-11e9-9c82-559da0adb349</RequestId>\n </ResponseMetadata>\n</ListGroupsResponse>\n' 2019-08-12 12:36:18,665 - MainThread - botocore.hooks - DEBUG - Event needs-retry.iam.ListGroups: calling handler <botocore.retryhandler.RetryHandler object at 0x7fdf16e9a780> 2019-08-12 12:36:18,665 - MainThread - botocore.retryhandler - DEBUG - No retry needed. 2019-08-12 12:36:18,665 - MainThread - botocore.hooks - DEBUG - Event after-call.iam.ListGroups: calling handler <function json_decode_policies at 0x7fdf189b1d90> { "Groups": [ { "Path": "/", "GroupName": "MyTestGroup", "GroupId": "AGPA123456789012EXAMPLE", "Arn": "arn:aws:iam::123456789012:group/MyTestGroup", "CreateDate": "2019-08-12T19:34:04Z" } ] }

Voltar ao início

Habilitar e analisar logs de histórico de comandos da AWS CLI

É possível habilitar os logs do histórico de comandos da AWS CLI usando a configuração de arquivo cli_history. Após habilitar essa configuração, a AWS CLI registra o histórico de comandos da aws.

Você pode listar seu histórico usando o comando aws history list e usar os command_ids resultantes no comando aws history show para obter detalhes. Para obter mais informações, consulte aws history no guia de referência da AWS CLI.

Quando você inclui a opção --debug, os detalhes incluem:

  • Chamadas de API feitas para o botocore

  • Códigos de status

  • Respostas HTTP

  • Cabeçalhos

  • Códigos de retorno

Você pode usar essas informações para confirmar que os dados do parâmetro e as chamadas de API estão se comportando da maneira esperada e deduzir em que etapa do processo seu comando está falhando.

Voltar ao início

Confirmar se a AWS CLI está configurada

Vários erros podem ocorrer se os arquivos config e credentials ou o perfil ou usuário do IAM não estiverem configurados corretamente. Para obter mais informações sobre como resolver erros nos arquivos config e credentials ou no seu usuário ou perfis do IAM, consulte Erros de acesso negado e Credenciais inválidas e erros de chave.

Voltar ao início

Erros de comando não encontrado

Esse erro significa que o sistema operacional não pode encontrar o comando da AWS CLI. A instalação pode estar incompleta ou exigir atualização.

Causa possível: você está tentando usar um recurso mais recente da AWS CLI do que a versão instalada ou tem formatação incorreta

Exemplo de texto de erro:

$ aws s3 copy usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help aws: error: argument subcommand: Invalid choice, valid choices are: ls | website cp | mv ....

Vários erros podem ocorrer se o comando estiver formatado incorretamente ou se você estiver usando uma versão anterior ao lançamento do recurso. Para obter mais informações sobre a solução de erros em torno desses dois problemas, consulte Verificar a formatação do comando AWS CLI e Confirme se você está executando uma versão recente da AWS CLI.

Voltar ao início

Causa possível: o terminal precisa ser reiniciado após a instalação

Exemplo de texto de erro:

$ aws --version command not found: aws

Se o comando aws não puder ser encontrado após a primeira instalação ou atualização da AWS CLI, talvez seja necessário reiniciar o terminal para que ele reconheça todas as atualizações da PATH.

Voltar ao início

Possível causa: AWS CLI não foi totalmente instalada

Exemplo de texto de erro:

$ aws --version command not found: aws

Se o comando aws não puder ser encontrado após a primeira instalação ou atualização da AWS CLI, talvez a instalação não tenha sido totalmente concluída. Tente reinstalar seguindo os passos da sua plataforma em Instalar ou atualizar para a versão mais recente da AWS CLI.

Voltar ao início

Possível causa: a AWS CLI não tem permissões (Linux)

Se não for possível encontrar o comando aws após a primeira instalação ou atualização da AWS CLI no Linux, talvez ela não tenha permissões execute na pasta em que está instalada. Execute o seguinte comando com o PATH para a instalação da AWS CLI para fornecer permissões chmod para a AWS CLI:

$ sudo chmod -R 755 /usr/local/aws-cli/

Voltar ao início

Causa possível: o PATH do sistema operacional não foi atualizado durante a instalação.

Exemplo de texto de erro:

$ aws --version command not found: aws

Talvez seja necessário adicionar o executável aws à variável de ambiente PATH do sistema operacional. Para adicionar a AWS CLI ao seu PATH, use as instruções a seguir para seu sistema operacional.

Linux and macOS
  1. Encontre o script de perfil do shell no diretório de usuário. Se não tiver certeza de qual shell você tem, execute echo $SHELL.

    $ ls -a ~ . .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads
    • Bash.bash_profile, .profile, ou .bash_login

    • Zsh.zshrc

    • Tcsh.tcshrc, .cshrc, ou .login

  2. Adicione um comando de exportação ao script de perfil. O comando a seguir adiciona seu compartimento local à variável PATH atual.

    export PATH=/usr/local/bin:$PATH
  3. Recarregue o perfil atualizado em sua sessão atual.

    $ source ~/.bash_profile
Windows
  1. Em um prompt de comando do Windows, use o comando where com o parâmetro /R path para encontrar o local do arquivo aws. Os resultados retornam todas as pastas que contêm aws.

    C:\> where /R c:\ aws c:\Program Files\Amazon\AWSCLIV2\aws.exe ...

    Por padrão, a AWS CLI versão 2 está localizada em:

    c:\Program Files\Amazon\AWSCLIV2\aws.exe
  2. Pressione a tecla Windows e digite environment variables.

  3. Na lista de sugestões, escolha Edit environment variables for your account (Editar variáveis de ambiente para sua conta).

  4. Selecione PATH e, em seguida, Edit (Editar).

  5. Adicione o caminho encontrado no campo Variable value (Valor da variável). Por exemplo, C:\Program Files\Amazon\AWSCLIV2\aws.exe.

  6. Escolha OK duas vezes para aplicar as novas configurações.

  7. Feche todos os prompts de comando em execução e abra novamente a janela do prompt de comando.

Voltar ao início

O comando “aws --version” retorna uma versão diferente da que você instalou

Seu terminal pode estar retornando um PATH diferente do AWS CLI que você espera.

Causa possível: o terminal precisa ser reiniciado após a instalação

Se o comando aws mostrar a versão errada, talvez seja necessário reiniciar o terminal para que ele reconheça todas as atualizações de PATH. Todos os terminais abertos precisam estar fechados, não apenas o terminal ativo.

Voltar ao início

Causa possível: o sistema precisa ser reiniciado após a instalação

Se o comando aws mostrar a versão errada e reiniciar o terminal não funcionar, talvez seja necessário reiniciar o sistema para que ele reconheça as atualizações de PATH.

Voltar ao início

Causa possível: você tem várias versões da AWS CLI

Se você atualizou a AWS CLI e usou um método de instalação diferente da instalação pré-existente, isso poderá fazer com que várias versões sejam instaladas. Por exemplo, se no Linux ou no macOS você usou pip para a instalação atual, mas tentou atualizar usando o arquivo de instalação .pkg, isso poderá causar alguns conflitos, especialmente com o PATH apontando para a versão antiga.

Para resolver isso, desinstale todas as versões daAWS CLI e execute uma instalação limpa.

Depois de desinstalar todas as versões, siga as instruções apropriadas do seu sistema operacional para instalar a versão desejada da AWS CLI versão 1 ou da AWS CLIversão 2.

nota

Se isso estiver acontecendo depois que você instalou a AWS CLI versão 2 com uma instalação pré-existente da AWS CLI versão 1, siga as instruções de migração em Instruções para a migração para a AWS CLI versão 2.

Voltar ao início

O comando “aws --version” retorna uma versão após a desinstalação da AWS CLI

Isso geralmente ocorre quando ainda há uma AWS CLI instalada em algum lugar do sistema.

Causa possível: o terminal precisa ser reiniciado após a instalação

Se o comando aws --version mostrar a versão errada, talvez seja necessário reiniciar o terminal para que ele reconheça todas as atualizações.

Voltar ao início

Causa possível: você tem várias versões da AWS CLI em seu sistema, ou não usou o mesmo método de desinstalação usado para instalar a AWS CLI original.

A AWS CLI talvez não seja desinstalada corretamente se você desinstalou a AWS CLI usando um método diferente do usado para instalá-la ou se você instalou várias versões. Por exemplo, se você usou pip para a instalação atual, deverá usar pip para desinstalá-la. Para resolver isso, desinstale a AWS CLI usando o mesmo método usado para instalá-la.

  1. Siga as instruções apropriadas do seu sistema operacional e do método de instalação original para desinstalar a AWS CLI versão 1 e a AWS CLIversão 2.

  2. Feche todos os terminais que você abriu.

  3. Abra seu terminal preferido, insira o seguinte comando e confirme que nenhuma versão é retornada.

    $ aws --version command not found: aws

    Se você ainda tiver uma versão listada na saída, a AWS CLIprovavelmente foi instalada usando um método diferente, ou há várias versões. Se você não souber com qual método você instalou a AWS CLI, siga as instruções de cada método de desinstalação para a AWS CLIversão 1 e a AWS CLI versão 2 apropriado para o sistema operacional até que nenhuma saída de versão seja recebida.

    nota

    Se você usou um gerenciador de pacotes para instalar a AWS CLI (pip, apt, brew etc.), use o mesmo gerenciador de pacotes para desinstalá-la. Siga as instruções fornecidas pelo gerenciador de pacotes sobre como desinstalar todas as versões de um pacote.

Voltar ao início

A AWS CLI processou um comando com um nome de parâmetro incompleto

Possível causa: você usou uma abreviação reconhecida do parâmetro AWS CLI

Como a AWS CLI é criada usando Python, a AWS CLI usa a biblioteca argparse de Python, incluindo o argumento allow_abbrev. As abreviações dos parâmetros são reconhecidas pela AWS CLI e processadas.

O exemplo de comando create-change-set a seguir altera o nome da pilha do CloudFormation. O parâmetro --change-set-n é reconhecido como uma abreviação de --change-set-name e a AWS CLI processa o comando.

$ aws cloudformation create-change-set --stack-name my-stack --change-set-n my-change-set

Quando a abreviação pode ser de vários comandos, o parâmetro não será reconhecido como uma abreviação.

O exemplo de comando create-change-set a seguir altera o nome da pilha do CloudFormation. O parâmetro --change-set- não é reconhecido como uma abreviação, pois há vários parâmetros dos quais ele pode ser uma abreviação, como --change-set-name e --change-set-type. Portanto, a AWS CLI não processa o comando.

$ aws cloudformation create-change-set --stack-name my-stack --change-set- my-change-set
Atenção

Não use abreviações de parâmetros propositadamente. Elas não são confiáveis e não são compatíveis com versões anteriores. Se algum novo parâmetro for adicionado a um comando que confunda as abreviações, os comandos serão interrompidos.

Além disso, se o parâmetro for um argumento de valor único, ele poderá causar um comportamento inesperado com os comandos. Se várias instâncias de um argumento de valor único forem transmitidas, somente a última instância será executada. No exemplo a seguir, o parâmetro --filters é um argumento de valor único. Os parâmetros --filters e --filter são especificados. O parâmetro --filter é uma abreviação de --filters. Isso faz com que duas instâncias de --filters sejam aplicadas e somente o último argumento --filter se aplica.

$ aws ec2 describe-vpc-peering-connections \ --filters Name=tag:TagName,Values=VpcPeeringConnection \ --filter Name=status-code,Values=active

Confirme se você está usando parâmetros válidos antes de executar um comando para evitar comportamentos inesperados.

Voltar ao início

Erros de acesso negado

Causa possível: o arquivo do programa AWS CLI não tem permissão de “execução”

No Linux ou no macOS, verifique se o programa aws tem permissões de execução para o usuário que está chamando. Normalmente, as permissões são definidas como 755.

Para adicionar permissão de execução ao usuário, execute o comando a seguir, substituindo ~/.local/bin/aws pelo caminho para o programa no computador:

$ chmod +x ~/.local/bin/aws

Voltar ao início

Causa possível: sua identidade do IAM não tem permissão para executar a operação.

Exemplo de texto de erro:

$ aws s3 ls An error occurred (AcessDenied) when calling the ListBuckets operation: Access denied.

Quando você executa um comando da AWS CLI, as operações da AWS são realizadas em seu nome, usando credenciais que associam você a uma conta ou perfil do IAM. As políticas associadas devem conceder permissão para chamar as ações de API que correspondem aos comandos executados com a AWS CLI.

A maioria dos comandos chama uma única ação com um nome que corresponde ao nome do comando. No entanto, comandos personalizados como aws s3 sync chamam várias APIs. É possível ver quais APIs um comando chama usando a opção --debug.

Se você tiver certeza de que o usuário ou o perfil tem as permissões apropriadas atribuídas pela política, verifique se o comando da AWS CLI está usando as credenciais esperadas. Consulte a próxima seção sobre credenciais para verificar se as credenciais que a AWS CLI está usando são as esperadas.

Para obter informações sobre como atribuir permissões do IAM, consulte Visão geral do gerenciamento de acesso: permissões e políticas no Manual do usuário do IAM.

Voltar ao início

Credenciais inválidas e erros de chave

Exemplo de texto de erro:

$ aws s3 ls An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id you provided does not exist in our records.
$ aws s3 ls An error occurred (InvalidClientTokenId) when calling the ListBuckets operation: The security token included in the request is invalid.
Causa possível: a AWS CLI está lendo credenciais de um local inesperado.

A AWS CLI pode estar lendo credenciais de um local diferente do que o esperado ou as informações de par de chaves estão incorretas. Execute a aws configure list para confirmar quais credenciais são usadas.

O exemplo a seguir mostra como verificar as credenciais usadas para o perfil padrão.

$ aws configure list Name Value Type Location ---- ----- ---- -------- profile <not set> None None access_key ****************XYVA shared-credentials-file secret_key ****************ZAGY shared-credentials-file region us-west-2 config-file ~/.aws/config

O exemplo a seguir mostra como verificar as credenciais de um perfil nomeado.

$ aws configure list --profile saanvi Name Value Type Location ---- ----- ---- -------- profile saanvi manual --profile access_key **************** shared-credentials-file secret_key **************** shared-credentials-file region us-west-2 config-file ~/.aws/config

Para confirmar os detalhes do par de chaves, verifique os arquivos config e credentials. Para obter mais informações sobre os arquivos config e credentials, consulte Configurações do arquivo de configuração e credenciais. Para obter mais informações sobre credenciais e autenticação, incluindo a precedência de credenciais, consulte Autenticação e credenciais de acesso.

Voltar ao início

Causa possível: o relógio do computador está fora de sincronia.

Se você estiver usando credenciais válidas, seu relógio poderá estar fora de sincronia. No Linux ou macOS, execute date para verificar a hora.

$ date

Se o relógio do sistema não estiver correto dentro de alguns minutos, use ntpd para sincronizar.

$ sudo service ntpd stop $ sudo ntpdate time.nist.gov $ sudo service ntpd start $ ntpstat

No Windows, use as opções de data e hora no Painel de controle para configurar o relógio do sistema.

Voltar ao início

Assinatura não corresponde aos erros

Exemplo de texto de erro:

$ aws s3 ls An error occurred (SignatureDoesNotMatch) when calling the ListBuckets operation: The request signature we calculated does not match the signature you provided. Check your key and signing method.

Quando a AWS CLI executa um comando, ela envia uma solicitação criptografada para os servidores da AWS a fim de executar as operações de serviço apropriadas da AWS. Suas credenciais (a chave de acesso e a chave secreta) estão envolvidas na criptografia e permitem à AWS autenticar a pessoa que está fazendo a solicitação. Há vários fatores que podem interferir na operação correta desse processo, conforme indicado a seguir.

Causa possível: o relógio está fora de sincronia com os servidores da AWS

Para ajudar a proteger contra ataques de reprodução, a hora atual pode ser usada durante o processo de criptografia/descriptografia. Se a hora do cliente e a hora do servidor não coincidirem além do permitido, o processo poderá falhar e a solicitação será rejeitada. Isso também pode acontecer quando você executa um comando em uma máquina virtual cujo relógio está fora de sincronia com o relógio da máquina host. Uma causa possível é quando a máquina virtual hiberna e, depois de ativada, demora algum tempo para sincronizar o relógio com a máquina host.

No Linux ou macOS, execute date para verificar a hora.

$ date

Se o relógio do sistema não estiver correto dentro de alguns minutos, use ntpd para sincronizar.

$ sudo service ntpd stop $ sudo ntpdate time.nist.gov $ sudo service ntpd start $ ntpstat

No Windows, use as opções de data e hora no Painel de controle para configurar o relógio do sistema.

Voltar ao início

Causa possível: o sistema operacional está processando incorretamente chaves da AWS que contêm determinados caracteres especiais

Se a chave da AWS incluir determinados caracteres especiais, como -, +, / ou %, algumas variantes do sistema operacional processarão a string incorretamente e farão com que a string de chave seja interpretada incorretamente.

Se você processar as chaves usando outras ferramentas ou scripts, como ferramentas que criam o arquivo de credenciais em uma nova instância como parte de sua criação, essas ferramentas e scripts poderão ter seu próprio tratamento de caracteres especiais que faça com que eles sejam transformados em algo não reconhecido pela AWS.

Sugerimos gerar novamente a chave secreta para obter uma que não inclua o caractere especial que está causando problemas.

Voltar ao início

Erros de certificado SSL

Possível causa: a AWS CLI não confia no certificado do proxy

Exemplo de texto de erro:

$ aws s3 ls [SSL: CERTIFICATE_ VERIFY_FAILED] certificate verify failed

Quando você usa um comando AWS CLI, você recebe uma mensagem de erro de [SSL: CERTIFICATE_ VERIFY_FAILED] certificate verify failed. Isso ocorre porque a AWS CLI não confia no certificado do seu proxy devido a fatores como ele ser autoassinado, com sua empresa definida como a autoridade de certificação (CA). Isso impede que a AWS CLI encontre o certificado raiz de CA da sua empresa empresas no registro de CA local .

Para corrigir isso, instrua a AWS CLI sobre onde encontrar o arquivo .pem da sua empresa usando a opção de arquivo de configuração ca_bundle, a opção de linha de comando --ca-bundle ou a variável de ambiente AWS_CA_BUNDLE.

Voltar ao início

Causa possível: sua configuração não está apontando para o local correto do certificado raiz da CA

Exemplo de texto de erro:

$ aws s3 ls SSL validation failed for regionname [Errno 2] No such file or directory

Isso é causado devido ao local do arquivo do pacote da Autoridade de Certificação (CA) estar configurado incorretamente na AWS CLI. Para corrigir isso, confirme o local em que o arquivo .pem está localizado e atualize a configuração da AWS CLI usando o arquivo de configuração ca_bundle, a opção de linha de comando da --ca-bundle ou a variável de ambiente AWS_CA_BUNDLE.

Voltar ao início

Erros JSON inválidos

Exemplo de texto de erro:

$ aws dynamodb update-table \ --provisioned-throughput '{"ReadCapacityUnits":15,WriteCapacityUnits":10}' \ --table-name MyDDBTable Error parsing parameter '--provisioned-throughput': Invalid JSON: Expecting property name enclosed in double quotes: line 1 column 25 (char 24) JSON received: {"ReadCapacityUnits":15,WriteCapacityUnits":10}

Ao usar um comando da AWS CLI, você recebe a mensagem de erro “Invalid JSON“. Esse erro geralmente aparece quando você insere um comando com um formato JSON esperado e a AWS CLI não consegue ler o JSON corretamente.

Possível causa: você não inseriu um JSON válido para a AWS CLI usar

Confirme se você inseriu um JSON válido para seu comando. Sugerimos usar um validador JSON para o JSON que você está tendo dificuldade de formatar.

Para uso mais avançado de JSON na linha de comando, considere usar um processador JSON de linha de comando, como jq, para criar strings JSON. Para obter mais informações sobre o jq, consulte o repositório do jq no GitHub.

Voltar ao início

Possível causa: as regras de aspas do seu terminal estão impedindo que o JSON válido seja enviado à AWS CLI

Antes de a AWS CLI receber qualquer coisa de um comando, seu terminal processa o comando usando regras próprias de aspas e escape. Devido às regras de formatação de um terminal, parte do seu conteúdo JSON pode ser removido antes de o comando ser passado para a AWS CLI. Ao formular comandos, use as regras de aspas do seu terminal.

Para solucionar problemas, use o echo para ver como o shell está lidando com seus parâmetros:

$ echo {"ReadCapacityUnits":15,"WriteCapacityUnits":10} ReadCapacityUnits:15 WriteCapacityUnits:10
$ echo '{"ReadCapacityUnits":15,"WriteCapacityUnits":10}' {"ReadCapacityUnits":15,"WriteCapacityUnits":10}

Modifique seu comando até que o JSON válido seja retornado.

Para uma solução de problemas mais detalhada, use o parâmetro --debug para visualizar os logs de depuração, pois eles exibirão exatamente o que foi passado para a AWS CLI:

$ aws dynamodb update-table \ --provisioned-throughput '{"ReadCapacityUnits":15,WriteCapacityUnits":10}' \ --table-name MyDDBTable \ --debug 2022-07-19 22:25:07,741 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-cli/1.18.147 Python/2.7.18 Linux/5.4.196-119.356.amzn2int.x86_64 botocore/1.18.6 2022-07-19 22:25:07,741 - MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI: ['dynamodb', 'update-table', '--provisioned-throughput', '{"ReadCapacityUnits":15,WriteCapacityUnits":10}', '--table-name', 'MyDDBTable', '--debug']

Use as regras de aspas do seu terminal para corrigir quaisquer problemas que a entrada JSON tenha ao ser enviada à AWS CLI. Para obter mais informações sobre regras de aspas, consulte Aspas com strings na AWS CLI.

nota

Se estiver enfrentando problemas para obter um JSON válido para a AWS CLI, recomendamos ignorar as regras de aspas do terminal referentes à entrada de dados JSON usando blobs para passar seus dados JSON diretamente à AWS CLI. Para obter mais informações sobre o Blobs, consulte Blob.

Voltar ao início

Recursos adicionais

Para obter ajuda adicional para problemas de AWS CLI, acesse a Comunidade da AWS CLI no GitHub ou a Comunidade da AWS re:Post.

Voltar ao início