curso
Cómo usar la CLI de AWS: Un recorrido guiado para principiantes
AWS es un proveedor de servicios en la nube que ofrece una amplia gama de servicios escalables y bajo demanda, como potencia informática, almacenamiento, bases de datos, aprendizaje automático, redes, análisis y mucho más, desde sus centros de datos en todo el mundo. Consulta los cursos Introducción a AWS y Tecnología y servicios en la nube de AWS para obtener más información.
Para interactuar con los recursos de AWS y configurarlos, podemos utilizar la consola de administración de AWS o la CLI de AWS.
En este tutorial, te guiaremos a través de la instalación de la CLI de AWS desde cero, configurándola para que se comunique con tu cuenta de AWS, y demostrando cómo crear algunos recursos básicos utilizando la CLI.
¿Qué es la CLI de AWS?
La CLI de AWS es una potente herramienta que permite a los usuarios interactuar con los servicios de AWS directamente desde la línea de comandos de su ordenador. Los comandos de la CLI de AWS proporcionan una funcionalidad equivalente a la realización de tareas en la consola de administración de AWS.
Por ejemplo, para listar todos los grupos de seguridad de una región concreta de AWS, navegarías a la sección "Grupos de seguridad" del servicio EC2 a través de la consola.
Ver Grupos de Seguridad desde la consola de AWS.
Del mismo modo, puedes conseguir el mismo resultado utilizando el comando aws ec2 describe-security-groups
en la CLI de AWS.
Visualiza los Grupos de Seguridad a través de la CLI de AWS desde el terminal local.
Instalar la CLI de AWS
Haremos un recorrido por la instalación de la CLI de AWS en Windows, Mac y Linux.
Hay dos versiones principales de la CLI de AWS, la versión 1 y la 2. Sólo hablaremos de la versión 2, ya que es la versión posterior con más funcionalidades. Para obtener la información más reciente sobre la instalación o actualización a la última versión de la CLI de AWS, visita la documentación de AWS.
Instalación en Windows
Descarga el instalador de la web oficial de AWS. Abreel paquete instalador de Windows "AWSCLIV2", y te aparecerá la ventana que se muestra a continuación.
Asistente de configuración de la CLI de AWS.
Selecciona "Siguiente" y procede a aceptar el acuerdo de licencia.
Acuerdo de licencia de la CLI de AWS.
Confirma el lugar de instalación y procede a instalarlo. La instalación en sí no debería llevar más de 5 minutos.
Confirma el lugar de instalación.
Instalación en curso.
Instalación finalizada.
Para comprobar que la instalación se ha realizado correctamente, abre el terminal y ejecuta el comando aws --version
. Debería tener un aspecto similar al que se muestra a continuación.
Verifica la instalación de la CLI de AWS en Windows.
Instalación en macOS
Podemos instalar la CLI de AWS en MacOS mediante Homebrew o el instalador de paquetes. Cubriré ambos métodos de instalación.
Instalación del paquete
Descarga el instalador .pkg de la web oficial de AWS. Abre el archivo AWSCLIV2.pkg
, y te aparecerá la siguiente ventana.
Instalación de la CLI de AWS.
Acepta la licencia, confirma el lugar de instalación y procede con la instalación.
Mensaje de instalación correcta.
Para comprobar que la instalación se ha realizado correctamente, abre el terminal y ejecuta el comando aws --version
. Debería tener un aspecto similar al que se muestra a continuación.
Verifica la instalación de la CLI de AWS en MacOS.
Elaboración casera
Asegúrate de que tienes Homebrew instalado localmente. Para verificarlo, ejecuta brew --version
. Si no, puedes consultar la página oficial de Homebrew para obtener instrucciones de instalación.
A continuación, ejecuta los siguientes comandos para instalar la CLI:
# With brew installed, update Homebrew's formulae and cask definitions
brew update
# Install AWS CLI
brew install awscli
# Verify the installation
aws --version
brew actualizar e instalar
Verifica la instalación del brebaje.
Instalación en Linux
Para demostrar la instalación en Linux, puse en marcha un EC2 de Amazon Linux con la AMI ami-0bd55ebedabddc3c0. Aunque tiene instalada por defecto la versión 2 de AWS CLI, no es de la última versión menor. Los pasos para actualizar e instalar son similares.
# Switch to superuser
sudo su -
# If you’re on Amazon Linux, to install the latest version of the AWS CLI, you must first uninstall the pre-installed yum version
yum remove awscli
# Download the AWS CLI zip file
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# Unzip the file
unzip awscliv2.zip
# Run the installer
./aws/install
# Verify AWS CLI
aws --version
Descarga y descomprime el instalador.
Ejecuta el instalador y verifica la instalación.
Configurar la CLI de AWS
Después de instalar la CLI de AWS, tenemos que configurarla antes de utilizarla para interactuar con nuestros recursos de AWS. Configurarlo incluye establecer las credenciales de AWS y algunos ajustes opcionales por defecto.
Cuando entramos en la consola de AWS, lo hacemos como usuario o asumiendo un rol. Del mismo modo, cuando utilizamos la CLI de AWS para interactuar con nuestros recursos, debemos hacerlo como usuario o asumir un rol.
Configurar las credenciales de AWS
Hay dos formas de iniciar sesión en la consola de AWS. La primera es utilizar un usuario creado a través del servicio de Gestión de Identidades y Accesos (IAM).
Página de inicio de sesión de usuario IAM.
La segunda es utilizar un usuario creado a través del servicio Centro de Identidades IAM.
Página de inicio de sesión de AWS Access Portal.
Configurar la CLI de AWS requiere configurar aws_access_key_id
y aws_secret_access_key
en tu local. Este par de claves identifica tu cuenta y concede acceso a AWS. Dependiendo de cómo te conectes, su obtención difiere ligeramente.
Usuario IAM
Para utilizar la CLI de AWS como un usuario de IAM, navega al servicio IAM a través de la consola de AWS, selecciona un usuario existente o crea uno nuevo. Utilizaré un usuario existente.
Usuario IAM.
Selecciona el usuario y ve a la pestaña "Credenciales de seguridad". Desplázate hacia abajo para ver las "Teclas de acceso". Para este tutorial, crearé otra clave de acceso. Selecciona "Crear clave de acceso".
Pestaña de credenciales de seguridad de un usuario IAM.
Selecciona "Interfaz de línea de comandos (CLI)".
Crea una clave de acceso.
Confirma y crea.
Clave de acceso creada.
Descarga el archivo .csv para guardarlo. A continuación, ejecuta localmente el comando aws configure
e introduce el valor de la clave de acceso y de la clave de acceso secreta. Estamos escribiendo este conjunto de credenciales en el perfil "por defecto", ya que no especificamos un perfil con la bandera --profile
. Hablaremos de los perfiles en un apartado posterior.
Comando de configuración de AWS.
Se creará una carpeta oculta llamada ".aws" en tu directorio personal (~
).
La carpeta .aws.
Contiene dos archivos, config
y credentials
.
Contenido en la carpeta .aws.
El archivo config
almacena la región por defecto y la opción de salida que has introducido anteriormente. Mientras que el archivo credentials
almacena los archivos aws_access_key_id
y aws_secret_access_key
. Para ver su contenido, puedes ejecutar los comandos cat config
y cat credentials
.
Ejecuta el comando aws sts get-caller-identity
para validar que las credenciales funcionan y se devuelve la identidad IAM correcta.
Valida las credenciales.
Usuario del centro de identidad IAM
Tras iniciar sesión, se te dirigirá al Portal de Acceso de AWS para que selecciones la cuenta de AWS y el rol que asumirás al iniciar sesión en la consola. Selecciona "Claves de acceso" para la cuenta y el rol que quieras utilizar para la CLI de AWS.
Portal de acceso a AWS.
Aparecerá una ventana idéntica a la siguiente captura de pantalla. Elige la opción 2, copia y pega el texto proporcionado en tu archivo de credenciales de AWS.
Credenciales del Portal de Acceso de AWS.
Observa que además de aws_access_key_id
y aws_secret_access_key
, hay un aws_session_token
comparado con las credenciales de un usuario IAM tratadas en la sección anterior. Esto añade una capa adicional de seguridad a las credenciales del usuario creadas a través del Centro de Identidades de IAM, ya que el testigo de sesión caducará, y el usuario tendrá que volver a autenticarse para actualizar el testigo.
Después de pegar el texto de la opción 2 en tu archivo de credenciales de AWS:
# Use the AWS profile that you have just added
export AWS_PROFILE=<<Account Number>_<Role Name>>
# Valid that the credentials work
aws sts get-caller-identity
Valida las credenciales.
El testigo de sesión acabará caducando, y deberemos generar uno nuevo.
Ficha caducada.
En lugar de copiarlo de nuevo desde el Portal de Acceso como hicimos anteriormente, podemos ejecutar el aws sso login
desde nuestro local. Sigue los siguientes comandos para configurar el inicio de sesión único (SSO) en tu local.
# Configure SSO to refresh your session token. The ~/.aws/sso folder will be created.
aws configure sso
Comando AWS configurar SSO.
Se te pedirá que inicies sesión.
Concede acceso a la CLI de AWS.
Solicitud CLI de AWS aprobada.
Cuando tu testigo de sesión vuelva a caducar, simplemente ejecuta aws sso login
.
Salida de inicio de sesión de AWS SSO.
Opciones de configuración
Podemos personalizar varias configuraciones como las opciones por defecto para adaptarlas a nuestras preferencias. Si no se especifica explícitamente, estas configuraciones por defecto se aplicarán al comando de la CLI de AWS.
Para actualizar o añadir valores de configuración en el archivo config
, puedes ejecutar el siguiente comando o modificarlo manualmente mediante vim o nano.
aws configure set <setting> <value>
región
Los recursos de AWS que residan en una región requerirán que se especifique la dirección region
al ejecutar los comandos de la CLI de AWS.
Si no se especifica la bandera "--region <nombre de la región>" en el comando, se utilizará la región por defecto indicada en el archivo de configuración. Si no se define ninguna región por defecto, te encontrarás con el siguiente error.
Error cuando no se especifica ninguna región.
salida
El ajuste output
configura el formato de salida devuelto por el comando de la CLI de AWS.
Por ejemplo, el formato de salida por defecto que configuramos anteriormente es "JSON", y el comando aws sts get-caller-identity
devolvió la salida en formato JSON. Otras opciones válidas son "tabla" y "texto".
Este es el aspecto de la salida de la tabla. He añadido la bandera --output table
para sobrescribir el valor de salida "JSON" por defecto.
aws sts get-caller-identity --output tabla.
role_arn & source_profile
Si no quieres utilizar directamente a tu usuario IAM y quieres que asuma un rol en su lugar, especifica la configuración de role_arn
y source_profile
.
aws configure set role_arn arn:aws:iam::<Account ID>:role/<Role name>
# Put “default” as the profile name if you do not know what to put
aws configure set source_profile <profile name>
Tras especificarlos, comprueba que efectivamente se asume el rol IAM.
Valida las credenciales.
cli_pager
Por defecto, la CLI de AWS canaliza su salida a través de un paginador como less, que requiere pulsar q para salir. Podemos cambiar este comportamiento desactivando el paginador para configurar la salida para que se muestre directamente en el terminal ejecutando:
aws configure set cli_pager ""
Salida con cli_pager desactivado.
cli_history
Para mantener un registro de los comandos de la CLI de AWS que se ejecutaron, habilita el cli_history
ejecutando:
aws configure set cli_history enabled
El historial se guardará en una base de datos SQLite ubicada en ~/.aws/cli/history
.
# View your AWS CLI history
aws history list
# Show details of a specific command
aws history show <command-id>
Resumen de la configuración
Resumen de las opciones de configuración estándar:
Tecla de configuración |
Descripción |
región |
Región AWS por defecto (por ejemplo, us-east-1, ap-southeast-1). |
salida |
Formato de salida: json, texto o tabla. |
role_arn |
ARN del rol IAM a asumir. |
source_profile |
Perfil que se utilizará como fuente al asumir un rol. |
cli_pager |
Localizador de salida de comandos (por ejemplo, menos, o poner "" para desactivarlo). |
cli_history |
Activar o desactivar el archivo de historial CLI (activado o desactivado). |
cli_timestamp_format |
Personaliza el formato de la marca de tiempo (ninguno, iso8601, iso8601_ms). |
Si has seguido los ejemplos anteriores, este es el aspecto que debe tener tu archivo ~/.aws/config
.
Contenido del archivo de configuración.
Entender los comandos de la CLI de AWS
Todos los comandos de la CLI de AWS tienen un formato estándar:
Formato de los comandos CLI de AWS-imagen del Autor.
La operación específica de cada servicio tendrá opciones/banderas opcionales u obligatorias que se añadirán.
Comandos básicos
Ahora nuestra CLI de AWS puede acceder mediante programación a nuestra cuenta de AWS para interactuar con los servicios. ¡Vamos a probar algunos comandos básicos en algunos servicios de AWS de uso común!
EC2
Descripción |
Mando |
Describe las instancias especificadas o todas las instancias. |
aws ec2 describe-instancias [--instancia-ids <valor>] |
Describe los grupos de seguridad especificados o todos tus grupos de seguridad |
aws ec2 describe-seguridad-grupos [--grupo-ids <valor>] |
Crea una instantánea de un volumen EBS y la almacena en Amazon S3 |
aws ec2 create-snapshot --volume-id <valor> |
Crear una VPC |
aws ec2 create-vpc [--cidr-block <valor>] |
Resultado de describir todas las instancias.
Consulta la documentación oficial de EC2 para obtener más información.
S3
Descripción |
Mando |
Listar todos los buckets S3 |
aws s3 ls |
Listar objetos en un bucket S3 |
aws s3 ls s3://<nombre-del-cubo> --recursivo |
Mueve un archivo local o un objeto S3 a otra ubicación local o en S3 |
aws s3 mv <RutaLocal> <S3Uri> o <S3Uri> <RutaLocal> o <S3Uri> <S3Uri> |
Elimina un objeto de un bucket S3 |
aws s3 rm <S3Uri> |
Comandos S3.
Consulta la documentación oficial de S3 para más información.
Ten en cuenta que para el servicio AWS S3, además del comando CLI aws s3
comentado anteriormente, también existe el comando CLI aws s3api
. Los comandos aws s3
son bastante genéricos, mientras que los comandos aws s3api
son más granulares y de nivel inferior.
Consulta la documentación oficial de s3api para obtener más información.
Lambda
Descripción |
Mando |
Para listar todas las funciones Lambda |
lista de funciones aws lambda |
Para obtener información sobre una función Lambda |
aws lambda obtener-función --nombre-de-la-función <nombre-de-la-función> |
Invoca una función Lambda |
aws lambda invoke --nombre-función <nombre-función> |
Devuelve información sobre la función.
Consulta la documentación oficial de Lambda para más información.
Ejemplo: Uso de la CLI de AWS para la gestión de EC2
¡Echa un vistazo al blog AWS EC2 Tutorial Para Principiantes para refrescar los conceptos básicos de EC2! Te ayudará a comprender mejor los siguientes comandos.
# To create an EC2 instance
aws ec2 run-instances \
--image-id ami-0bd55ebedabddc3c0 \
--count 1 \
--instance-type t2.micro
Resultado de crear una instancia.
Ejecuta aws ec2 describe-instances
para ver los detalles de todas las instancias EC2, como se explica en los comandos básicos.
Si quieres ejecutar el comando para consultar una instancia o instancias concretas, añade la bandera --instance-ids
con el ID de la instancia. E.g., aws ec2 describe-instances --instance-ids i-00836ea7575852f10
.
Resultado de describir una instancia.
# To stop the instance
aws ec2 stop-instances --instance-ids i-00836ea7575852f10
Resultado de detener una instancia.
# To start the instance
aws ec2 start-instances --instance-ids i-00836ea7575852f10
Resultado de iniciar una instancia.
# To terminate the instance
aws ec2 terminate-instances --instance-ids i-00836ea7575852f10
Resultado de terminar una instancia.
Ejemplo: Trabajar con buckets S3
Aquí tienes algunos comandos útiles para ejecutar operaciones comunes con buckets S3, ¡un básico en AWS!
# To create an S3 bucket. “mb” is short for “make bucket”
aws s3 mb s3://<bucket name> --region <region name>
# To list out all buckets
aws s3 ls
# To copy an object from your local or S3 object to another location locally or in S3. In the screenshot below, I used aws s3 cp <LocalPath> <S3Uri>
aws s3 cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
# To delete an object from the S3 bucket
aws s3 rm <S3Uri>
# To sync the source directory to the destination. In the screenshot below, I used aws s3 sync <LocalPath> <S3Uri>
aws s3 sync <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
# To list the objects in the bucket
aws s3 ls <S3Uri>
# To delete an S3 bucket, it has to be empty of objects and versioned objects before it can be deleted. “rb” is short for “remove bucket”
aws s3 rb s3://my-unique-bucket-name-gfht68
# The “aws s3 rb” command comes with the --force parameter to first remove all of the objects in the bucket and then remove the bucket itself.
aws s3 rb s3://mybucket --force
Salida de comandos de AWS S3.
Características avanzadas de la CLI de AWS
Ahora que hemos practicado algunos comandos básicos de la CLI, podemos repasar algunas funciones y casos de uso más avanzados de la interfaz.
Automatizar tareas con la CLI de AWS
Los ejemplos de la CLI de AWS que hemos visto hasta ahora implican un único comando para obtener información o realizar una acción en el servicio. Veamos ejemplos de cómo ensamblar varios comandos CLI en un script para automatizar tareas.
Ejemplo: Script automatizado de lanzamiento de instancias EC2
Crea un archivo launch_ec2.sh
con el siguiente contenido.
#!/bin/bash
# Set variables
INSTANCE_NAME="My_Demo_Instance"
AMI_ID="ami-0bd55ebedabddc3c0" # Replace with your preferred AMI ID
INSTANCE_TYPE="t2.micro" # Replace with the desired instance type
REGION="ap-southeast-1"
# Launch the EC2 instance
INSTANCE_ID=$(aws ec2 run-instances \
--image-id "$AMI_ID" \
--instance-type "$INSTANCE_TYPE" \
--region "$REGION" \
--query "Instances[0].InstanceId" \
--output text)
echo "Instance launched with ID: $INSTANCE_ID"
# Add a Name tag to the instance
aws ec2 create-tags \
--resources "$INSTANCE_ID" \
--tags Key=Name,Value="$INSTANCE_NAME" \
--region "$REGION"
echo "Tag added: Name=$INSTANCE_NAME"
# Wait for the instance to reach a running state
aws ec2 wait instance-running --instance-ids "$INSTANCE_ID" --region "$REGION"
echo "Instance is now running."
Puedes personalizar el script para incluir más parámetros, como el nombre de la clave (--key-name
), el ID del grupo de seguridad (--security-group-ids
), el ID de la subred (--subnet-id
), etc.
# Grant the user permission to execute the shell script
chmod u+x ./launch_ec2.sh
# Run the script
./launch_ec2.sh
Inicia el script EC2.
Ejemplo: Detención automática de todas las instancias EC2 en ejecución
Crea un archivo stop_ec2.sh
con el siguiente contenido:
#!/bin/bash
# Check if a region is provided as an argument
if [ -n "$1" ]; then
REGION="$1"
else
# Get the default region from AWS CLI configuration
REGION=$(aws configure get region)
if [ -z "$REGION" ]; then
echo "No region provided, and no default region found in AWS CLI configuration."
echo "Please provide a region as an argument: ./stop-all-ec2.sh <region>"
exit 1
fi
fi
echo "Using region: $REGION"
# Get a list of all running EC2 instance IDs
RUNNING_INSTANCES=$(aws ec2 describe-instances \
--filters Name=instance-state-name,Values=running \
--query "Reservations[*].Instances[*].InstanceId" \
--output text \
--region "$REGION")
if [ -z "$RUNNING_INSTANCES" ]; then
echo "No running EC2 instances found in region $REGION."
else
echo "Stopping the following EC2 instances in region $REGION:"
echo "$RUNNING_INSTANCES"
echo "Give it around 1 minute for the instances to be stopped."
# Stop the instances
aws ec2 stop-instances --instance-ids $RUNNING_INSTANCES --region "$REGION"
# Wait for the instances to stop
aws ec2 wait instance-stopped --instance-ids $RUNNING_INSTANCES --region "$REGION"
echo "All instances have been stopped successfully."
fi
# Grant the user permission to execute the shell script
chmod u+x ./stop_all_ec2.sh
# Run the script with the default region
./stop_all_ec2.sh
# Run the script overwriting the default region
./stop_all_ec2.sh us-west-1
Detener el script EC2.
Uso de la CLI de AWS con JSON y JQ
Las salidas de los comandos de la CLI de AWS contienen bastante información. En algunos casos, puede que no necesitemos toda la información devuelta y sólo queramos un subconjunto de la salida.
Por ejemplo, en la sección "EC2" del apartado "Comandos básicos" anterior, vimos que el comando aws ec2 describe-instances
devolvía una salida JSON larga. Para analizar esta salida y obtener sólo lo necesario, podemos utilizar la bandera --query
o el comando jq
.
Consulta los scripts de automatización de la sección anterior "Automatizar tareas con la CLI de AWS" para ver ejemplos de la bandera --query
.
Ten en cuenta que el comando jq
sólo funciona en una salida JSON. Por tanto, configura la salida por defecto como "JSON" o pasa la bandera --output json
para cada comando.
Comprueba que jq
está instalado:
Comprueba la versión de jq.
# Get a list of all EC2 instances and filter only the instance ID and state
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId: .InstanceId, State: .State.Name}'
# Count the number of EC2 instances in the "running" state.
aws ec2 describe-instances --output json | jq '[.Reservations[].Instances[] | select(.State.Name == "running")] | length'
# Extract Lambda Function Names and their runtimes
aws lambda list-functions --output json | jq '.Functions[] | {FunctionName: .FunctionName, Runtime: .Runtime}'
Comandos CLI de AWS con jq.
Utilizar la CLI de AWS en una canalización CI/CD
Podemos utilizar la CLI de AWS en la configuración de nuestra canalización para automatizar las interacciones con los servicios de AWS, como el despliegue y la actualización de nuestros recursos de AWS cada vez que se ejecute nuestra canalización CI/CD.
En el siguiente ejemplo, utilizaré el canal de GitLab para demostrar el despliegue de una función Lambda.
# .gitlab-ci.yml file configuration
stages:
- demo-cicd
datacamp_job:
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
stage: demo-cicd
id_tokens:
GITLAB_OIDC_TOKEN:
aud: https://gitlab.com
variables:
ROLE_ARN: "arn:aws:iam::<AWS Account ID>:role/<Name of IAM Role that pipeline will use>"
AWS_DEFAULT_REGION: "ap-southeast-1"
script:
- aws --version
- >
export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s"
$(aws sts assume-role-with-web-identity
--role-arn ${ROLE_ARN}
--role-session-name "GitLabRunner-${CI_PROJECT_ID}-${CI_PIPELINE_ID}"
--web-identity-token ${GITLAB_OIDC_TOKEN}
--duration-seconds 3600
--query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]'
--output text))
- aws sts get-caller-identity
- ls -l
- aws lambda create-function --function-name <function name> --runtime python3.13 --role <ARN of IAM role that Lambda function will use> --handler index.lambda_handler --zip-file fileb://lambda.zip
- unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
Registros de trabajo del pipeline de GitLab.
Puedes modificar la configuración de la canalización para pasar los parámetros junto con el comando de la CLI de AWS como variables en el trabajo de la canalización en lugar de codificarlos, como hice en la captura de pantalla anterior.
De este modo, siempre que quieras crear una función Lambda, puedes introducir y confirmar las variables junto con la configuración de tu canalización en el repositorio Git.
Buenas prácticas para usar la CLI de AWS
Como con todas las buenas prácticas, concede los permisos mínimos necesarios para realizar la tarea, independientemente de si utilizas un usuario o un rol.
¡Examinemos otras buenas prácticas específicas de la CLI de AWS!
Utilizar los roles de AWS IAM para la seguridad
Los roles de AWS IAM proporcionan credenciales de seguridad temporales para acceder a los recursos de AWS. Estas credenciales se rotan automáticamente y se ajustan a los permisos de un rol específico, reduciendo los riesgos asociados a las claves de acceso a largo plazo.
La forma recomendada de utilizar un rol es a través del rol creado desde el Centro de Identidades de IAM, como se muestra en la sección "Centro de Identidades de IAM" de la sección "Configurar las credenciales de AWS" anterior. Éste es también el enfoque recomendado por AWS.
Enfoque recomendado por AWS. Fuente de la imagen: AWS.
Cuando el administrador de la Nube crea tu usuario a través del Centro de Identidades de IAM, debe asignarle un conjunto de permisos.
Usuarios en el Centro de Identidades IAM.
Para cada conjunto de permisos, AWS creará un rol IAM.
Conjuntos de permisos en el Centro de Identidades de IAM.
Gestionar varios perfiles
Probablemente manejarás más de una cuenta AWS en tu entorno de trabajo. Utilizamos perfiles para configurar varios conjuntos de credenciales en el archivo ~/.aws/credentials
y ~/.aws/config
.
En la sección anterior "Configuración de las credenciales de AWS", ejecutamos el comando aws configure
sin especificar el perfil mediante la bandera --profile
o la variable de entorno AWS_PROFILE
. Así, las credenciales y la información de configuración se añaden al perfil predeterminado. Para añadir un nuevo perfil, puedes ejecutar aws configure --profile
para tener un conjunto separado de credenciales bajo el nuevo perfil.
# Create a new profile called “dev”
aws configure --profile dev
# To run AWS CLI commands using the dev profile instead of the default profile, set the AWS_PROFILE environment variable to “dev”. Alternatively, add the “--profile dev” for every AWS CLI command.
export AWS_PROFILE=dev
# Validate that the IAM identity under the new profile is returned
aws sts get-caller-identity
Nuevas credenciales bajo un nuevo perfil.
Mantén actualizada tu CLI de AWS
Es importante actualizar nuestra CLI de AWS para garantizar una interacción eficaz con nuestros servicios de AWS y aprovechar las últimas características y mejoras.
Si instalaste la CLI de AWS mediante el paquete de instalación para Windows y Mac, tuviste que descargar un archivo a tu ordenador local y ejecutarlo. Actualizarlo seguirá los mismos pasos: Descarga y ejecuta el último paquete instalador.
Si has instalado AWS CLI mediante brew en Mac, la actualización es tan sencilla como ejecutar brew upgrade awscli
. Ya tengo instalada la última versión.
Salida del comando brew upgrade awscli.
Para Linux, los pasos son los mismos que para la instalación. Consulta el fragmento de código de la sección "Instalación en Linux". Sigue los comandos para descargar el archivo zip, descomprimirlo y ejecutar el instalador.
Registro y resolución de problemas
La CLI de AWS es una herramienta increíble, pero también podemos enfrentarnos a desafíos al trabajar con ella. Repasemos cómo superarlas.
Registro del historial CLI
De vez en cuando, podemos olvidar una orden y sus parámetros que ejecutamos anteriormente o queremos ver la salida de una orden que se ejecutó. Activar la cli_history
puede resolver estosproblemas . Para más información, consulta el apartado "Opciones de configuración".
Errores de configuración CLI
Cuando te encuentres con errores de configuración de la CLI de AWS, ejecutar el comando aws configure
te ayudará a determinar si la CLI está leyendo correctamente la información de tus credenciales y de tu archivo de configuración.
Error "No se puede analizar el archivo de configuración".
# View configuration for the existing profile
aws configure list
# Verify credentials
aws sts get-caller-identity
# Verify configuration values
aws configure get region
aws configure get role_arn
# Review Environment Variables. Variables like AWS_PROFILE, AWS_ACCESS_KEY_ID, and AWS_REGION can override configuration
env | grep AWS
Otros errores
En raras ocasiones, podemos encontrarnos con un error desconocido al ejecutar comandos de la CLI de AWS. Para depurar el problema con la llamada a la API o recabar más información para comprender el error, puede ser útil añadir la bandera --debug
al comando.
# Add the “--debug” flag
aws ec2 describe-instances --debug
Comando CLI de AWS con el indicador de depuración.
La información adicional debería ayudarte a comprender y solucionar el problema.
Conclusión
La CLI de AWS es una potente herramienta que te permite interactuar con los servicios de AWS de forma eficiente, automatizar tareas rutinarias y administrar fácilmente los recursos de la nube. En este tutorial, te he enseñado a instalar, configurar y utilizar la CLI de AWS para realizar operaciones esenciales en varios servicios comunes de AWS.
Tanto si eres un principiante en la nube como un experimentado profesional de DevOps, dominar la CLI de AWS puede mejorar significativamente la productividad. Desde crear y administrar recursos hasta automatizar implementaciones, las posibilidades son prácticamente infinitas con la CLI de AWS en tu caja de herramientas.
Tómate tu tiempo para experimentar con los comandos, explorar las capacidades avanzadas de scripting en tu pipeline e integrar la CLI de AWS en tus tareas cotidianas. ¡Feliz computación en la nube!
Te recomiendo que consultes el itinerario de habilidades AWS Cloud Practitioner en DataCamp para convertirte en un experto en AWS.
Preguntas frecuentes
¿Por qué debo utilizar la CLI de AWS en lugar de la consola de administración de AWS?
La CLI de AWS te permite interactuar con los servicios de AWS directamente desde tu terminal, proporcionando así capacidades de automatización y flujos de trabajo más rápidos, que no son tan fáciles de conseguir con la consola de AWS.
¿Tengo que verificar la suma de comprobación del archivo después de descargar el paquete instalador de AWS?
Aunque no es obligatorio, verificar la suma de comprobación del paquete instalador es una buena práctica.
¿Cómo puedo comprobar si AWS CLI ya está instalado en mi local?
Abre tu terminal y ejecuta "aws --version". Si devuelve "aws-cli/x.x.x...", la CLI de AWS está instalada. No obstante, actualizarlo a la última versión es una buena práctica.
¿Qué debo hacer si encuentro errores de autenticación o permisos al utilizar la CLI de AWS?
Estos errores se producen debido a credenciales incorrectas o permisos insuficientes. Comprueba dos veces tus claves de acceso a AWS, asegúrate de que están asociadas al usuario o rol IAM correcto, y verifica que tus políticas IAM permiten las acciones requeridas. Si estás utilizando un rol y el testigo de sesión ha caducado, ejecuta el comando "aws sso login". Consulta la sección "Usuario del Centro de Identidades IAM" para conocer los pasos detallados.
¿Cómo puedo utilizar la CLI de AWS para administrar recursos en varias regiones?
Puedes especificar la región de AWS en tus comandos utilizando la bandera "--region", o puedes establecer una región por defecto utilizando el comando "aws configure". Consulta la sección "Opciones de configuración" para más información.
Kenny es un experimentado Ingeniero de Infraestructura en la Nube y DevOps con experiencia en Terraform, GitLab CI/CD pipelines, y una amplia gama de servicios de AWS, experto en el diseño de soluciones en la nube escalables, seguras y de coste optimizado. Destaca en la creación de infraestructuras reutilizables, la automatización de flujos de trabajo con Python y Bash, y la incorporación de las mejores prácticas de seguridad en los procesos de CI/CD. Con una amplia experiencia práctica en Kubernetes y diversas herramientas de observabilidad, Kenny es experto en gestionar y orquestar microservicios al tiempo que garantiza una observabilidad y una supervisión del rendimiento sólidas. Reconocido por su liderazgo, tutoría y compromiso con la innovación, Kenny ofrece sistemáticamente soluciones fiables y escalables para aplicaciones modernas nativas de la nube. Sigue dedicado a mantenerse a la vanguardia de las tendencias del sector y las tecnologías emergentes, ampliando y profundizando continuamente su conjunto de habilidades.
Aprende más sobre AWS con estos cursos
curso
AWS Security and Cost Management Concepts
curso
Introduction to AWS Boto in Python
blog
Los 13 mejores proyectos de AWS: De principiante a profesional
blog
AWS Certified Cloud Practitioner: guía completa

Srujana Maddula
27 min
blog
AWS vs Azure: Una comparación en profundidad de los dos principales servicios en la nube
blog
AWS frente a Certificaciones Azure: ¿Cuál es el mejor para ti?
tutorial
Primeros pasos con AWS Athena: Guía práctica para principiantes

Tim Lu
28 min
tutorial
Cuentas de almacenamiento Azure: Tutorial paso a paso para principiantes

Anneleen Rummens
20 min