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.
Sumário
- Solução geral de problemas para tentar primeiro
- Erros de comando não encontrado
- O comando “aws --version” retorna uma versão diferente da que você instalou
- O comando “aws --version” retorna uma versão após a desinstalação da AWS CLI
- A AWS CLI processou um comando com um nome de parâmetro incompleto
- Erros de acesso negado
- Credenciais inválidas e erros de chave
- Assinatura não corresponde aos erros
- Erros de certificado SSL
- Erros JSON inválidos
- Recursos adicionais
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.
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:
-
Verifique se há erros de ortografia e de formatação no comando.
-
Confirme se todos os escapes e citações apropriados para o seu terminal estão corretos em seu comando.
-
Gere um esqueleto de AWS CLI para confirmar a estrutura do comando.
-
Para JSON, consulte a solução adicional de problemas referente a valores JSON. Se você estiver tendo problemas com a formatação JSON de processamento de terminal, sugerimos ignorar as regras de cotação do terminal usando Blobs para passar dados JSON diretamente para a AWS CLI.
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
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
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.
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"
}
]
}
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
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.
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.
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.
- 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 daPATH
. - 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. - 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õesexecute
na pasta em que está instalada. Execute o seguinte comando com oPATH
para a instalação da AWS CLI para fornecer permissõeschmod
para a AWS CLI:$
sudo chmod -R 755
/usr/local/aws-cli/
- 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 ambientePATH
do sistema operacional. Para adicionar a AWS CLI ao seuPATH
, use as instruções a seguir para seu sistema operacional.
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 dePATH
. Todos os terminais abertos precisam estar fechados, não apenas o terminal ativo. - 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 dePATH
. - 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 oPATH
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.
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. - 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á usarpip
para desinstalá-la. Para resolver isso, desinstale a AWS CLI usando o mesmo método usado para instalá-la.-
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.
-
Feche todos os terminais que você abriu.
-
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.
-
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 argumentoallow_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-setQuando 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-setAtençã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=activeConfirme se você está usando parâmetros válidos antes de executar um comando para evitar comportamentos inesperados.
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 como755
.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
- 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.
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
ecredentials
. Para obter mais informações sobre os arquivosconfig
ecredentials
, 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. - 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.
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.
- 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.
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çãoca_bundle
, a opção de linha de comando --ca-bundle ou a variável de ambienteAWS_CA_BUNDLE
. - 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 directoryIsso é 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çãoca_bundle
, a opção de linha de comando da --ca-bundle ou a variável de ambienteAWS_CA_BUNDLE
.
Erros JSON inválidos
Exemplo de texto de erro:
$
aws dynamodb update-table \ --provisioned-throughput
'{"ReadCapacityUnits":15,WriteCapacityUnits":10}'
\ --table-name MyDDBTableError 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 ojq
, consulte o repositório do jqno GitHub. - 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 \ --debug2022-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.
Recursos adicionais
Para obter ajuda adicional para problemas de AWS CLI, acesse a Comunidade da AWS CLI