--- title: "Cómo instalar y configurar AWS CLI v2 en Ubuntu 24.04" description: "Instala AWS CLI v2 en Ubuntu 24.04 con el instalador oficial, configura credenciales IAM y perfiles, filtra la salida con --query y sincroniza copias con S3." category: "Integración Cloud" language: es source: https://cubepath.com/es/docs/integración-cloud/instalacion-y-configuracion-de-aws-cli updated: 2026-09-25 --- # Cómo instalar y configurar AWS CLI v2 en Ubuntu 24.04 AWS CLI es la herramienta oficial de Amazon para gestionar los servicios de AWS desde la terminal: S3, EC2, IAM y prácticamente cualquier otro. Instalada en un servidor, permite automatizar tareas como subir copias de seguridad a S3 o consultar el estado de tus recursos desde scripts. En este tutorial instalarás AWS CLI v2 en Ubuntu 24.04 con el instalador oficial, crearás un usuario IAM con permisos mínimos, configurarás credenciales y perfiles, y sincronizarás un directorio con un bucket de S3. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath, con arquitectura x86_64 o arm64. - Un usuario no root con privilegios `sudo`. - Una cuenta de AWS con acceso a la consola para crear un usuario IAM. > Nota: Ubuntu 24.04 ya no incluye el paquete `awscli` en sus repositorios, y el que traían versiones anteriores era la v1, sin mantenimiento activo. Usa el instalador oficial de AWS que se describe a continuación. ## Paso 1: Instalar AWS CLI v2 El instalador oficial es un archivo ZIP que contiene la CLI con su propio intérprete de Python, así que no depende del Python del sistema. Instala `unzip` para poder extraerlo: ```bash sudo apt update sudo apt install -y unzip curl ``` Descarga el instalador en un directorio temporal. Si tu servidor es ARM, sustituye `x86_64` por `aarch64` en la URL (puedes comprobar la arquitectura con `uname -m`): ```bash cd /tmp curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o awscliv2.zip unzip -q awscliv2.zip ``` Ejecuta el instalador. Por defecto copia los archivos en `/usr/local/aws-cli` y crea el enlace `/usr/local/bin/aws`: ```bash sudo ./aws/install ``` Comprueba que el comando está disponible: ```bash aws --version ``` ```output aws-cli/2.x.x Python/3.x.x Linux/6.8.0-xx-generic exe/x86_64.ubuntu.24 ``` Elimina los archivos temporales: ```bash rm -rf /tmp/aws /tmp/awscliv2.zip ``` > Consejo: AWS publica una firma PGP del instalador para verificar su autenticidad. Si tu política de seguridad lo exige, sigue el procedimiento de verificación de la documentación oficial de AWS CLI antes de ejecutar `./aws/install`. ## Paso 2: Crear un usuario IAM con permisos mínimos No uses las credenciales del usuario raíz de la cuenta de AWS en un servidor. Crea un usuario IAM específico con solo los permisos que va a necesitar el servidor: 1. En la consola de AWS, abre **IAM > Usuarios > Crear usuario** y dale un nombre descriptivo, por ejemplo `backup-servidor-web`. No le des acceso a la consola. 2. En los permisos, adjunta directamente una política. Para este tutorial basta con una política que permita trabajar con un único bucket de S3 (la verás en el paso 6). Evita `AdministratorAccess`. 3. Abre el usuario creado, ve a **Credenciales de seguridad > Crear clave de acceso**, elige el caso de uso **Command Line Interface (CLI)** y guarda el **Access Key ID** y la **Secret Access Key**. La clave secreta solo se muestra una vez. ## Paso 3: Configurar las credenciales El comando `aws configure` guarda las credenciales y la configuración por defecto en el directorio `~/.aws` del usuario que lo ejecuta. Ejecútalo con el usuario que va a usar la CLI, sin `sudo`: ```bash aws configure ``` Introduce los valores cuando te los pida. Sustituye las claves por las tuyas y elige la región donde están tus recursos: ```text AWS Access Key ID [None]: AKIAXXXXXXXXXXXXXXXX AWS Secret Access Key [None]: tu_clave_secreta Default region name [None]: eu-west-1 Default output format [None]: json ``` Se crean dos archivos: `~/.aws/credentials` con las claves y `~/.aws/config` con la región y el formato de salida. Comprueba sus permisos, ya que las claves dan acceso a tu cuenta: ```bash ls -l ~/.aws/ ``` ```output -rw------- 1 tu_usuario tu_usuario ... config -rw------- 1 tu_usuario tu_usuario ... credentials ``` Si no aparecen como `-rw-------`, corrígelos con `chmod 600 ~/.aws/credentials ~/.aws/config`. Ahora verifica que las credenciales funcionan. `sts get-caller-identity` no necesita ningún permiso especial y devuelve la identidad con la que te has autenticado: ```bash aws sts get-caller-identity ``` ```output { "UserId": "AIDAXXXXXXXXXXXXXXXXX", "Account": "123456789012", "Arn": "arn:aws:iam::123456789012:user/backup-servidor-web" } ``` Si el ARN corresponde al usuario que acabas de crear, la configuración es correcta. ## Paso 4: Trabajar con varios perfiles Los perfiles permiten usar varias cuentas o usuarios desde el mismo servidor, por ejemplo uno para producción y otro para pruebas. Crea un perfil adicional: ```bash aws configure --profile pruebas ``` Los perfiles quedan guardados como secciones en los mismos archivos. `~/.aws/credentials` tendrá este aspecto: ```ini [default] aws_access_key_id = AKIAXXXXXXXXXXXXXXXX aws_secret_access_key = tu_clave_secreta [pruebas] aws_access_key_id = AKIAYYYYYYYYYYYYYYYY aws_secret_access_key = otra_clave_secreta ``` En `~/.aws/config`, los perfiles que no son el de por defecto llevan el prefijo `profile`: ```ini [default] region = eu-west-1 output = json [profile pruebas] region = us-east-1 output = table ``` Lista los perfiles configurados: ```bash aws configure list-profiles ``` ```output default pruebas ``` Usa un perfil concreto con la opción `--profile`, o con la variable de entorno `AWS_PROFILE` para toda la sesión: ```bash aws sts get-caller-identity --profile pruebas export AWS_PROFILE=pruebas ``` Para ver qué credenciales y región está usando la CLI en este momento, y de dónde salen, ejecuta: ```bash aws configure list ``` ```output Name Value Type Location ---- ----- ---- -------- profile pruebas env ['AWS_PROFILE', 'AWS_DEFAULT_PROFILE'] access_key ****************YYYY shared-credentials-file secret_key ****************YYYY shared-credentials-file region us-east-1 config-file ~/.aws/config ``` Para volver al perfil por defecto, ejecuta `unset AWS_PROFILE`. > Nota: El orden de prioridad es: opciones en la línea de comandos, variables de entorno (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION`, `AWS_PROFILE`) y, por último, los archivos de `~/.aws`. Una variable de entorno olvidada es la causa más habitual de que la CLI use credenciales inesperadas. ## Paso 5: Controlar el formato de salida AWS CLI admite los formatos `json`, `text`, `table` y `yaml`. La opción `--query` filtra la respuesta con sintaxis JMESPath antes de mostrarla, lo que evita tener que procesar el JSON con otras herramientas. Por ejemplo, para listar las regiones disponibles en una tabla: ```bash aws ec2 describe-regions --query 'Regions[].RegionName' --output table ``` Si el usuario tiene permiso de lectura sobre EC2, esta consulta muestra el ID, el tipo, el estado y la IP pública de cada instancia en ejecución: ```bash aws ec2 describe-instances \ --filters "Name=instance-state-name,Values=running" \ --query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name,PublicIpAddress]' \ --output table ``` En scripts, `--output text` es el formato más cómodo, porque devuelve valores separados por tabuladores que se pueden asignar directamente a variables: ```bash CUENTA=$(aws sts get-caller-identity --query Account --output text) echo "$CUENTA" ``` Si el usuario no tiene permisos para una operación, recibirás un error `AccessDenied` o `UnauthorizedOperation`, que confirma que la política IAM de permisos mínimos funciona. ## Paso 6: Sincronizar un directorio con S3 Un uso habitual de AWS CLI en un servidor es enviar copias de seguridad a S3. Crea un bucket. Los nombres de bucket son globales en todo AWS, así que elige uno único, en minúsculas: ```bash aws s3 mb s3://tu-bucket-backups --region eu-west-1 ``` ```output make_bucket: tu-bucket-backups ``` > Nota: Para crear el bucket, el usuario IAM necesita el permiso `s3:CreateBucket`. Si prefieres no dárselo, crea el bucket desde la consola y deja al usuario solo con los permisos de lectura y escritura sobre él. Una política IAM de permisos mínimos para que el usuario trabaje con este bucket, y solo con él, es la siguiente. Adjúntala al usuario desde **IAM > Usuarios > Permisos > Añadir permisos > Crear política insertada** en el editor JSON: ```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::tu-bucket-backups" }, { "Effect": "Allow", "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"], "Resource": "arn:aws:s3:::tu-bucket-backups/*" } ] } ``` Sube un archivo y lista el contenido del bucket: ```bash echo "prueba" > /tmp/prueba.txt aws s3 cp /tmp/prueba.txt s3://tu-bucket-backups/prueba.txt aws s3 ls s3://tu-bucket-backups/ ``` ```output upload: ../tmp/prueba.txt to s3://tu-bucket-backups/prueba.txt 2026-09-25 10:12:03 7 prueba.txt ``` `aws s3 sync` copia solo los archivos nuevos o modificados, lo que lo hace adecuado para copias periódicas. Ejecuta primero una simulación con `--dryrun` para ver qué haría sin transferir nada: ```bash aws s3 sync /var/backups/ s3://tu-bucket-backups/servidor-web/ --exclude "*.tmp" --dryrun ``` Si la lista es la esperada, repite el comando sin `--dryrun`. Añade `--delete` solo si quieres que los archivos borrados en el servidor se eliminen también del bucket; sin esa opción, `sync` nunca borra nada en el destino. Para descargar un archivo, invierte el origen y el destino: ```bash aws s3 cp s3://tu-bucket-backups/prueba.txt ./prueba-descargada.txt ``` ## Paso 7: Actualizar AWS CLI El instalador oficial no se actualiza con `apt`. Para pasar a una versión nueva, descarga de nuevo el ZIP y ejecuta el instalador con `--update`, indicando las mismas rutas de la instalación original: ```bash cd /tmp curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o awscliv2.zip unzip -q -o awscliv2.zip sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update aws --version ``` ## Solución de problemas **`Unable to locate credentials`.** La CLI no encuentra credenciales para el usuario actual. Ejecuta `aws configure list` para ver qué está leyendo. Es frecuente al ejecutar la CLI con `sudo` o desde cron con otro usuario, ya que cada usuario tiene su propio `~/.aws`. **`An error occurred (SignatureDoesNotMatch)` o `InvalidClientTokenId`.** La clave secreta es incorrecta o la clave de acceso se ha desactivado. Crea una nueva clave en IAM, ejecuta `aws configure` de nuevo y desactiva la antigua. **`RequestTimeTooSkewed`.** El reloj del servidor está desincronizado y AWS rechaza las firmas. Comprueba la sincronización con `timedatectl` y que `systemd-timesyncd` está activo. **`aws: command not found`.** Comprueba que existe `/usr/local/bin/aws` y que `/usr/local/bin` está en tu `PATH` con `echo "$PATH"`. Para ver el detalle completo de cualquier error, añade `--debug` al comando. ## Conclusión Has instalado AWS CLI v2 en Ubuntu 24.04 con el instalador oficial, has configurado un usuario IAM con permisos mínimos, has trabajado con perfiles y consultas `--query`, y has sincronizado un directorio con S3. Como siguientes pasos puedes programar el `aws s3 sync` con un temporizador de systemd para tener copias automáticas, activar el versionado del bucket para protegerte de borrados accidentales, o usar IAM Identity Center con `aws configure sso` si gestionas varias cuentas de AWS.