Solución de errores para la AWS CLI
En esta sección se describen los errores comunes y los pasos de solución de problemas que se deben seguir para resolver el problema. Le sugerimos seguir primero la solución de problemas generales.
Contenido
- Solución de problemas generales para probar primero
- Compruebe su formato de comandos de la AWS CLI
- Compruebe la Región de AWS que utiliza su comando de la AWS CLI.
- Confirme que está ejecutando una versión reciente de la AWS CLI
- Use la opción --debug
- Habilite y revise los registros del historial del comando AWS CLI
- Confirme que se ha configurado su AWS CLI
- Errores de comando no encontrado
- El comando "aws --version" devuelve una versión diferente a la instalada
- El comando "aws --version" devuelve una versión después de desinstalar la AWS CLI
- La AWS CLI ha procesado un comando con un nombre de parámetro incompleto
- Errores de acceso denegado
- Errores de credenciales y claves no válidas
- Errores de firma que no coincide
- Errores de certificado SSL
- Errores de JSON no válido
- Recursos adicionales de
Solución de problemas generales para probar primero
Si recibe un error o encuentra un problema con la AWS CLI, le sugerimos los siguientes consejos generales para solucionar problemas.
Compruebe su formato de comandos de la AWS CLI
Si aparece un error en el que se indica que no existe un comando o que no se reconoce un parámetro (Parameter validation failed
) que según la documentación está disponible, es posible que el comando tenga un formato incorrecto. Le sugerimos que compruebe lo siguiente:
-
Compruebe si hay errores ortográficos y de formato en el comando.
-
Confirme que todas las comillas y caracteres de escape apropiados para su terminal son correctos en el comando.
-
Generar un esqueleto de AWS CLI para confirmar la estructura del comando.
-
Para JSON, consulte la solución de problemas para valores JSON. Si tiene problemas con su terminal para procesar el formato JSON, le sugerimos omitir las reglas de entrecomillado del terminal utilizando Blobs para pasar los datos JSON directamente a la AWS CLI.
Para obtener más información sobre cómo debe estructurarse un comando específico, consulte la AWS CLIguía de referencia de la versión 2
Compruebe la Región de AWS que utiliza su comando de la AWS CLI.
nota
Cuanto utilice la AWS CLI, debe especificar una Región de AWS, ya sea de forma explícita o estableciendo una región predeterminada. Para obtener una lista de todas las Regiones de AWS que se pueden especificar, consulte Regiones y puntos de conexión de AWS en la Referencia general de Amazon Web Services. Los designadores de Región de AWS que la AWS CLI utiliza son los mismos nombres que aparecen en las URL y los puntos de conexión de servicio de AWS Management Console.
Se pueden producir errores o resultados inesperados si un Servicio de AWS no está disponible para la Región de AWS especificada o si los recursos están ubicados en una Región de AWS diferente. La Región de AWS se ajusta de las siguientes formas, en el orden de prioridad:
-
La opción de línea de comandos de la
--region
. -
La variable de entorno compatible con el SDK de la
AWS_REGION
. -
La variable de entorno de la
AWS_DEFAULT_REGION
. -
La configuración del perfil de la region.
Verifique que está usando la Región de AWS correcta para sus recursos.
Confirme que está ejecutando una versión reciente de la AWS CLI
Si recibe un error que indica que un comando no existe, o que no reconoce un parámetro que en la AWS CLIguía de referencia de la versión 2
La forma de actualizar la versión de AWS CLI depende de si la instaló originalmente como se describe en Instalación o actualización de la versión más reciente de AWS CLI.
Si ha utilizado uno de los instaladores del paquete, debe eliminar la instalación existente antes de descargar e instalar la versión más reciente para su sistema operativo.
Use la opción --debug
Cuando la AWS CLI informa de un error que no entiende inmediatamente, o produce resultados que no espera, puede obtener más detalles sobre el error si ejecuta de nuevo el comando con la opción --debug
. Con esta opción, la AWS CLI emite detalles sobre cada paso que realiza para procesar su comando. Los detalles de la salida pueden ayudarlo a determinar cuándo se produce el error y proporciona pistas sobre dónde comenzó.
Puede enviar el resultado a un archivo de texto para revisarlo posteriormente o enviarlo a AWS Support cuando se le solicite.
Cuando se incluye la opción --debug
, algunos detalles son:
-
Búsqueda de credenciales
-
Análisis de los parámetros proporcionados
-
Creación de la solicitud enviada a los servidores de AWS
-
El contenido de la solicitud enviada a AWS
-
El contenido de la respuesta sin procesar
-
La salida con formato
A continuación, se muestra un ejemplo de la ejecución de un comando con y sin la opción --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"
}
]
}
Habilite y revise los registros del historial del comando AWS CLI
Puede habilitar los registros del historial del comando AWS CLI con la configuración de archivo cli_history
. Después de habilitar esta configuración, la AWS CLI registra el historial de comandos aws
.
Puede hacer una lista de su historial con el comando aws history list
y utilizar los command_ids resultantes en el comando aws history show
para obtener más información. Para obtener más información, consulte aws
history
Cuando se incluye la opción --debug
, algunos detalles son:
-
Llamadas de la API realizadas a botocore
-
Códigos de estado
-
Respuestas HTTP
-
Encabezados
-
Códigos de devolución
Puede usar esta información para confirmar que los datos de parámetros y las llamadas a la API se comportan de la manera esperada y, a continuación, puede deducir en qué etapa del proceso está fallando el comando.
Confirme que se ha configurado su AWS CLI
Pueden producirse varios errores si los archivos config
y credentials
o su rol o usuario de IAM no están configurados correctamente. Para obtener más información sobre la resolución de errores con los archivos config
y credentials
o su usuario o roles de IAM, consulte Errores de acceso denegado y Errores de credenciales y claves no válidas.
Errores de comando no encontrado
Este error significa que el sistema operativo no puede encontrar el comando de la AWS CLI. Puede que la instalación esté incompleta o sea necesario actualizarla.
- Causa posible: está intentando utilizar una característica de AWS CLI más reciente que la versión instalada, o tiene un formato incorrecto
-
Ejemplo de texto de error:
$
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 ....Pueden producirse varios errores si su comando tiene un formato incorrecto o si está utilizando una versión anterior a la publicación de la característica. Para obtener más información sobre la resolución de errores en torno a estos dos problemas, consulte Compruebe su formato de comandos de la AWS CLI y Confirme que está ejecutando una versión reciente de la AWS CLI.
- Causa posible: es necesario reiniciar el terminal después de la instalación
-
Ejemplo de texto de error:
$
aws --version
command not found: aws
Si el comando
aws
no se encuentra después de instalar o actualizar la AWS CLI, es posible que tenga que reiniciar su terminal para que reconozca las actualizaciones dePATH
. - Causa posible: la AWS CLI no se ha instalado completamente
-
Ejemplo de texto de error:
$
aws --version
command not found: aws
Si no se puede encontrar el comando
aws
después de instalar o actualizar la AWS CLI, es posible que no se haya instalado completamente. Intente reinstalar siguiendo los pasos correspondientes a su plataforma en Instalación o actualización de la versión más reciente de AWS CLI. - Causa posible: la AWS CLI no tiene permisos (Linux)
-
Si no se puede encontrar el comando
aws
después de instalar o actualizar la AWS CLI en Linux, es posible que no tenga permisosexecute
para la carpeta en la que se instaló. Ejecute el siguiente comando con elPATH
a su instalación AWS CLI, para proporcionar permisoschmod
para la AWS CLI:$
sudo chmod -R 755
/usr/local/aws-cli/
- Causa posible: la variable
PATH
del sistema operativo no se ha actualizado durante la instalación -
Ejemplo de texto de error:
$
aws --version
command not found: aws
Es posible que tenga que añadir el ejecutable
aws
a la variable de entornoPATH
del sistema operativo. Para agregar AWS CLI aPATH
, utilice las instrucciones siguientes correspondientes a su sistema operativo.
El comando "aws --version
" devuelve una versión diferente a la instalada
Es posible que su terminal le devuelva un valor de PATH
para la AWS CLI distinto al que espera.
- Causa posible: es necesario reiniciar el terminal después de la instalación
-
Si el comando
aws
muestra la versión incorrecta, es posible que tenga que reiniciar su terminal para que reconozca las actualizaciones dePATH
. Todos los terminales abiertos deben estar cerrados, no solo el terminal activo. - Causa posible: es necesario reiniciar el sistema después de la instalación
-
Si el comando
aws
muestra la versión incorrecta y el reinicio del terminal no funcionó, es posible que tenga que reiniciar el terminal para que reconozca las actualizaciones dePATH
. - Causa posible: tiene varias versiones de la AWS CLI
-
Si ha actualizado la AWS CLI y ha utilizado un método de instalación diferente al de su instalación anterior, podría provocar la instalación de varias versiones. Por ejemplo, si en Linux o macOS ha utilizado
pip
para su instalación actual, pero ha intentado la actualización mediante el archivo de instalación de.pkg
, esto podría causar algunos conflictos, especialmente con suPATH
apuntando a la versión antigua.Para resolver esto, desinstale todas las versiones de la AWS CLI y realice una instalación limpia.
Después de desinstalar todas las versiones, siga las instrucciones correspondientes a su sistema operativo para instalar la versión que desee de la AWS CLI versión 1 o la AWS CLI versión 2.
nota
Si esto sucede después de haber instalado la AWS CLI versión 2 con una instalación preexistente de la AWS CLI versión 1, siga las instrucciones de migración en Instalación de la versión 2 de la AWS CLI a partir de la versión 1 de la AWS CLI.
El comando "aws --version
" devuelve una versión después de desinstalar la AWS CLI
Esto suele ocurrir cuando todavía hay una AWS CLI instalada en algún lugar de su sistema.
- Causa posible: es necesario reiniciar el terminal después de la desinstalación
-
Si el comando
aws --version
sigue funcionando, es posible que tenga que reiniciar su terminal para que reconozca las actualizaciones del terminal. - Causa posible: tiene varias versiones de la AWS CLI en su sistema, o no ha utilizado el mismo método de desinstalación que usó para instalar originalmente la AWS CLI
-
Es posible que la AWS CLI no se desinstale correctamente si desinstaló la AWS CLI con un método diferente al que utilizó para instalarla, o si instaló varias versiones. Por ejemplo, si utilizó
pip
para su instalación actual, debe utilizarpip
para desinstalarla. Para solucionarlo, desinstale AWS CLI con el mismo método que utilizó para instalarla.-
Siga las instrucciones adecuadas para el sistema operativo y el método de instalación original para desinstalar la AWS CLI versión 1 y AWS CLI versión 2.
-
Cierre todos los terminales que tenga abiertos.
-
Abra su terminal preferido, ingrese el siguiente comando y confirme que no se devuelve ninguna versión.
$
aws --version
command not found: aws
Si todavía tiene una versión en la lista de salida, lo más probable es que la AWS CLI se haya instalado con un método diferente o que haya varias versiones. Si no sabe con qué método instaló la AWS CLI, siga las instrucciones de cada método de desinstalación para la AWS CLI versión 1 y la AWS CLI versión 2 adecuadas a su sistema operativo hasta que no reciba ninguna salida de versión.
nota
Si ha utilizado un administrador de paquetes para instalar la AWS CLI (
pip
,apt
,brew
, etc.), debe utilizar el mismo administrador de paquetes para desinstalarla. Asegúrese de seguir las instrucciones proporcionadas por el administrador de paquetes sobre cómo desinstalar todas las versiones de un paquete.
-
La AWS CLI ha procesado un comando con un nombre de parámetro incompleto
- Posible causa: ha utilizado una abreviatura reconocida del parámetro de la AWS CLI
-
Dado que la AWS CLI se crea utilizando Python, la AWS CLI utiliza la biblioteca
argparse
de Python, incluido el argumentoallow_abbrev
. Las abreviaturas de los parámetros son reconocidas y procesadas por la AWS CLI. El siguiente comando de ejemplo
create-change-set
cambia el nombre de la pila de CloudFormation. El parámetro --change-set-n
se reconoce como una abreviatura de--change-set-name
y la AWS CLI procesa el comando.$
aws cloudformation create-change-set --stack-name my-stack
--change-set-n
my-change-setCuando su abreviatura pueda ser varios comandos, el parámetro no se reconocerá como abreviatura.
El siguiente comando de ejemplo
create-change-set
cambia el nombre de la pila de CloudFormation. El parámetro --change-set-
no se reconoce como una abreviatura, ya que existen múltiples parámetros de los que podría ser una abreviatura, como--change-set-name
y--change-set-type
. Por lo tanto la AWS CLI no procesa el comando.$
aws cloudformation create-change-set --stack-name my-stack
--change-set-
my-change-setaviso
No utilice abreviaturas de parámetros a propósito. No son fiables y no son compatibles con versiones anteriores. Si se agrega algún parámetro nuevo a un comando que confunda sus abreviaturas, se interrumpirán sus comandos.
Además, si el parámetro es un argumento de un solo valor, puede provocar un comportamiento inesperado con sus comandos. Si se pasan varias instancias de un argumento de un solo valor, solo se ejecutará la última instancia. En el siguiente ejemplo, el parámetro
--filters
es un argumento de un solo valor. Se especifican los parámetros--filters
y--filter
. El parámetro--filter
es una abreviatura de--filters
. Esto hace que se apliquen dos instancias de--filters
y solo se aplica el último argumento--filter
.$
aws ec2 describe-vpc-peering-connections \
--filters
Name=tag:TagName,Values=VpcPeeringConnection \--filter
Name=status-code,Values=activeConfirme que utiliza parámetros válidos antes de ejecutar un comando para evitar comportamientos inesperados.
Errores de acceso denegado
- Causa posible: el archivo de programa de la AWS CLI no tiene el permiso "run" (ejecutar)
-
En Linux o macOS, asegúrese de que el programa
aws
tiene permisos de ejecución para el usuario que realiza la llamada. Normalmente, los permisos se establecen en755
.Para añadir permisos de ejecución al usuario, ejecute el siguiente comando sustituyendo
~ /.local/bin/aws
por la ruta que tiene el programa en el equipo.$
chmod +x
~/.local/bin/aws
- Causa posible: su identidad de IAM no tiene permiso para realizar la operación
-
Ejemplo de texto de error:
$
aws s3 ls
An error occurred (AcessDenied) when calling the ListBuckets operation: Access denied.
Cuando ejecuta un comando de la AWS CLI, las operaciones de AWS se realizan en su nombre, utilizando credenciales que lo asocian a un rol o cuenta de IAM. Las políticas asociadas deben concederle permiso para llamar a las acciones de la API correspondientes a los comandos que ejecuta con la AWS CLI.
La mayoría de los comandos llaman a una única acción que tiene un nombre que coincide con el nombre del comando. Sin embargo, los comandos personalizados como
aws s3 sync
llamar a múltiples API. Mediante la--debug
opción puede ver a qué API llama un comando.Si sabe con seguridad que el usuario o rol tiene los permisos adecuados asignados por la política, compruebe que el comando de la AWS CLI utiliza las credenciales que espera. Consulte la siguiente sección sobre credenciales para verificar que las credenciales que utiliza la AWS CLI son las adecuadas.
Para obtener más información acerca de la asignación de permisos de IAM, consulte Información general sobre la administración del acceso: permisos y políticas en la Guía del usuario de IAM.
Errores de credenciales y claves no válidas
Ejemplo de texto de error:
$
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 posible: la AWS CLI está leyendo las credenciales incorrectas o de una ubicación inesperada
-
Puede que la AWS CLI esté leyendo las credenciales desde un lugar diferente al que espera, o que la información de su par de claves sea incorrecta. Puede ejecutar
aws configure list
para confirmar las credenciales que se utilizan.En el siguiente ejemplo se muestra cómo comprobar las credenciales utilizadas para el perfil predeterminado.
$
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
En el siguiente ejemplo se muestra cómo comprobar las credenciales de un perfil con nombre.
$
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 los detalles de su par de claves, compruebe sus archivos
config
ycredentials
. Para obtener más información sobre los archivosconfig
y credentials
, consulte Opciones de los archivos de configuración y credenciales en la AWS CLI. Para obtener más información sobre credenciales y autenticación, incluida la precedencia de las credenciales, consulte Credenciales de autenticación y acceso para la AWS CLI. - Causa posible: el reloj del equipo no está sincronizado
-
Si está utilizando credenciales válidas, puede que el reloj no esté sincronizado. En Linux o macOS, ejecute
date
para verificar la hora.$
date
Si el reloj del sistema no es correcto en unos minutos, utilice
ntpd
para sincronizarlo.$
sudo service ntpd stop
$
sudo ntpdate time.nist.gov
$
sudo service ntpd start
$
ntpstat
En Windows, utilice las opciones de fecha y hora del Panel de control para configurar el reloj del sistema.
Errores de firma que no coincide
Ejemplo de texto de error:
$
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.
Cuando la AWS CLI ejecuta un comando, envía una solicitud cifrada a los servidores de AWS para realizar las operaciones del servicio de AWS correspondientes. Sus credenciales (la clave de acceso y la clave secreta) se incluyen en el cifrado y permiten que AWS autentique a la persona que realiza la solicitud. Tal y como se indica a continuación, hay varias cosas que pueden interferir con el funcionamiento correcto de este proceso.
- Causa posible: el reloj no está sincronizado con los servidores de AWS
-
Para protegerse de los ataques de reproducción
, puede utilizar la hora actual durante el proceso de cifrado y descifrado. Si la hora del cliente y el servidor no coinciden en una cantidad superior a la permitida, puede que el proceso produzca un error y se rechace la solicitud. Esto también puede ocurrir cuando ejecuta un comando en una máquina virtual cuyo reloj no está sincronizado con el reloj de la máquina host. Una causa posible es cuando la máquina virtual está en hibernación y tarda algún tiempo en reactivarse para sincronizar el reloj con la máquina host. En Linux o macOS, ejecute
date
para verificar la hora.$
date
Si el reloj del sistema no es correcto en unos minutos, utilice
ntpd
para sincronizarlo.$
sudo service ntpd stop
$
sudo ntpdate time.nist.gov
$
sudo service ntpd start
$
ntpstat
En Windows, utilice las opciones de fecha y hora del Panel de control para configurar el reloj del sistema.
- Causa posible: el sistema operativo está administrando incorrectamente las claves de AWS que contienen determinados caracteres especiales
-
Si las claves de AWS incluyen determinados caracteres especiales, como
-
,+
,/
o%
, algunas variantes del sistema operativo procesan la cadena de forma incorrecta y hacen que la cadena de clave se interprete incorrectamente.Si procesa las claves utilizando otras herramientas o scripts, como herramientas que compilan el archivo de credenciales en una nueva instancia cuando se crea, esas herramientas y scripts podrían tratar los caracteres especiales de forma distinta, lo que hace que se transformen en algo que AWS ya no reconoce.
Sugerimos regenerar la clave secreta para obtener una que no incluya el carácter especial que causa problemas.
Errores de certificado SSL
- Causa posible: la AWS CLI no confía en el certificado de su proxy
-
Ejemplo de texto de error:
$
aws s3 ls
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
Cuando utiliza un comando de AWS CLI, se recibe un mensaje de error
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
. Esto se produce porque AWS CLI no confía en el certificado del proxy debido a que ciertos factores como el certificado del proxy están autofirmados, con su empresa establecida como la entidad de certificación (CA). Esto evita que la AWS CLI encuentre el certificado raíz de la CA de su empresa en el registro local de CA.Para solucionarlo, indíquele a la AWS CLI dónde encontrar el archivo
.pem
de su empresa utilizando el ajuste de archivo de configuración delca_bundle
, la opción de línea de comandos de --ca-bundle o la variable de entorno deAWS_CA_BUNDLE
. - Causa posible: la configuración no apunta a la ubicación correcta del certificado raíz de la CA
-
Ejemplo de texto de error:
$
aws s3 ls
SSL validation failed for
regionname
[Errno 2] No such file or directoryEsto se debe a que la ubicación del archivo del paquete de la autoridad de certificación (CA) está configurada incorrectamente en la AWS CLI. Para solucionarlo, confirme dónde se encuentra su archivo
.pem
de su empresa y actualice la configuración de la AWS CLI mediante la opción del archivo de configuraciónca_bundle
, la opción de la línea de comandos --ca-bundle o la variable de entornoAWS_CA_BUNDLE
. - Causa posible: la configuración no está usando la Región de AWS correcta.
-
Ejemplo de texto de error:
$
aws s3 ls
[SSL: CERTIFICATE_ VERIFY_FAILED] certificate verify failed
Se pueden producir errores o resultados inesperados si un Servicio de AWS no está disponible para la Región de AWS especificada o si los recursos están ubicados en una Región de AWS diferente. Para ver los pasos de solución de problemas, consulte Compruebe la Región de AWS que utiliza su comando de la AWS CLI..
- Causa posible: es necesario actualizar su versión de TLS
-
Ejemplo de texto de error:
$
aws s3 ls
[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] unsafe legacy renegotiation disabled
El Servicio de AWS utiliza una versión de TLS que no es compatible con la versión de TLS de su dispositivo. Para resolver este problema, actualice a una versión de TLS compatible. Para obtener más información, consulte Aplicación de una versión de TLS mínima para la AWS CLI.
Errores de JSON no válido
Ejemplo de texto de error:
$
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}
Cuando utiliza un comando de AWS CLI, se recibe un mensaje de error “Invalid JSON
“. Suele ser un error que aparece cuando se introduce un comando con un formato JSON esperado y AWS CLI no puede leer el JSON correctamente.
- Causa posible: no ha introducido un JSON válido para que lo use AWS CLI
-
Confirme que ha introducido un JSON válido para el comando. Le sugerimos que utilice un validador de JSON para el JSON con problemas de formato.
Para conocer un uso más avanzado de JSON en la línea de comandos, considere usar un procesador JSON de línea de comandos, como
jq
, para crear cadenas JSON. Para obtener más información sobrejq
, consulte el repositorio jqen GitHub. - Causa posible: las reglas de centrecomillado de su terminal impiden que se envíe un JSON válido a la AWS CLI
-
Antes de que la AWS CLI reciba cualquier cosa de un comando, su terminal procesa el comando utilizando sus propias reglas de entrecomillado y escapes. Debido a las reglas de formato de un terminal, es posible que parte del contenido JSON se elimine antes de que el comando se pase a la AWS CLI. Al formular comandos, asegúrese de usar sus reglas de entrecomillado del terminal.
Para solucionar problemas, utilice el comando
echo
para ver cómo el shell gestiona los parámetros:$
echo {"ReadCapacityUnits":15,"WriteCapacityUnits":10}
ReadCapacityUnits:15 WriteCapacityUnits:10
$
echo '{"ReadCapacityUnits":15,"WriteCapacityUnits":10}'
{"ReadCapacityUnits":15,"WriteCapacityUnits":10}
Modifique su comando hasta que se devuelva su JSON válido.
Para obtener una solución más detallada, use el parámetro
--debug
para ver los registros de depuración, ya que muestran exactamente lo que se pasó a la 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 las reglas de entrecomillado de tu terminal para solucionar cualquier problema que tenga su entrada JSON cuando se envía a la AWS CLI. Para obtener más información sobre las reglas de entrecomillado, consulte Entrecomillado de cadenas y uso de literales en la AWS CLI.
nota
Si tiene problemas para obtener JSON válido en la AWS CLI, le recomendamos omitir las reglas de entrecomillado de un terminal para la entrada de datos JSON, use Blobs para pasar los datos JSON directamente a la AWS CLI. Para obtener más información acerca de Blobs, consulte o Blob.
Recursos adicionales de
Para obtener ayuda adicional con sus problemas de AWS CLI, visite la comunidad de la AWS CLI