Saltar al contenido principal

Cómo usar la CLI de AWS: Un recorrido guiado para principiantes

Aprende a instalar la CLI de AWS en tu sistema, configúrala para que funcione con tu cuenta de AWS y ejecuta comandos para interactuar con varios servicios de AWS.
Actualizado 30 ene 2025  · 30 min de lectura

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 los Grupos de Seguridad desde la consola de AWS

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.

Comando CLI de AWS para describir y obtener información de los grupos de seguridad

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

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

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 la ubicación de instalación de la CLI de AWS

Confirma el lugar de instalación.

Instalación de la CLI de AWS en curso

Instalación en curso.

Instalación de la CLI de AWS completada

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.

Verificar la instalación de la CLI de AWS en Windows

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 del paquete de la CLI de AWS en MacOS

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 de la CLI de AWS

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.

Verificar la instalación de la CLI de AWS en MacOS

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

Captura de pantalla del terminal de los comandos brew

brew actualizar e instalar

Verifica la instalación de la CLI de AWS mediante brew

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 en Linux

Descarga y descomprime el instalador.

Ejecuta el instalador y verifica la instalación en Linux

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).

Interfaz de usuario para el inicio de sesión de usuario 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.

Interfaz de usuario para el inicio de sesión de usuario del 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.

Usuarios en el servicio IAM

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

Pestaña de credenciales de seguridad de un usuario IAM.

Selecciona "Interfaz de línea de comandos (CLI)". 

Crear una clave de acceso para un usuario IAM

Crea una clave de acceso.

Confirma y crea.

Clave de acceso creada

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 CLI "aws configure

Comando de configuración de AWS.

Se creará una carpeta oculta llamada ".aws" en tu directorio personal (~). 

Carpeta ".aws" en el directorio personal

La carpeta .aws.

Contiene dos archivos, config y credentials

Contenido de la carpeta .aws

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.

Comando CLI de AWS para validar la credencial

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

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.

Obtener las credenciales de un usuario a través del Portal de Acceso 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

Credenciales válidas de AWS Access Portal

Valida las credenciales.

El testigo de sesión acabará caducando, y deberemos generar uno nuevo. 

Mensaje de error debido a un token caducado

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

Salida del comando "aws configure sso"

Comando AWS configurar SSO.

Se te pedirá que inicies sesión.

Permitir el acceso mediante la CLI de AWS

Concede acceso a la CLI de AWS.

Permiso concedido a AWS CLI

Solicitud CLI de AWS aprobada.

Cuando tu testigo de sesión vuelva a caducar, simplemente ejecuta aws sso login.

Salida del comando "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.

Mensaje de error cuando no se especifica una región por defecto

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.

Formato de salida de la tabla

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.

Validar credenciales para usuario IAM que asume un rol

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

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 ~/.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:

Desglose visual de un comando CLI de AWS

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>]

Salida del comando CLI de AWS que describe todas las instancias

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>

Ejemplos de comandos "aws s3

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>

Salida del comando CLI de AWS que obtiene información de una función Lambda

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

Salida CLI de AWS de la creación de una instancia

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.

Salida CLI de AWS de la descripción de una instancia

Resultado de describir una instancia.

# To stop the instance
aws ec2 stop-instances --instance-ids i-00836ea7575852f10

Salida de la CLI de AWS al detener una instancia

Resultado de detener una instancia.

# To start the instance
aws ec2 start-instances --instance-ids i-00836ea7575852f10

Salida de la CLI de AWS al iniciar una instancia

Resultado de iniciar una instancia.

# To terminate the instance
aws ec2 terminate-instances --instance-ids i-00836ea7575852f10

Salida CLI de AWS de la finalización de una instancia

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

Ejemplo de comandos "aws s3

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

Ejecuta el 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

Ejecuta el script stop_all_ec2.sh

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:

Obtener la versión de jq instalada

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}'

Ejemplo de comandos de la CLI de AWS con jq

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 utilizando un comando CLI de AWS

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.

Captura de pantalla de AWS sobre el enfoque recomendado para el acceso programático

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

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

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

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.

brew actualizar awscli

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 de configuración de la CLI de AWS

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

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 Ang's photo
Author
Kenny Ang
LinkedIn

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.

Temas

Aprende más sobre AWS con estos cursos

curso

AWS Cloud Technology and Services Concepts

3 hr
7.4K
Master AWS cloud technology with hands-on learning and practical applications in the AWS ecosystem.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

Los 13 mejores proyectos de AWS: De principiante a profesional

Explora 13 proyectos prácticos de AWS para todos los niveles. Mejora tus conocimientos sobre la nube con aplicaciones prácticas del mundo real y la orientación de expertos.
Joleen Bothma's photo

Joleen Bothma

12 min

blog

AWS Certified Cloud Practitioner: guía completa

Comprende la certificación y el examen AWS Certified Cloud Practitioner con nuestra guía completa. Descubre consejos, recursos y estrategias para garantizar tu éxito.
Srujana Maddula's photo

Srujana Maddula

27 min

blog

AWS vs Azure: Una comparación en profundidad de los dos principales servicios en la nube

Explora las principales diferencias y similitudes entre Amazon Web Services (AWS) y Microsoft Azure. Este exhaustivo análisis abarca el rendimiento, los precios, las ofertas de servicios y la facilidad de uso para ayudar a los aspirantes a profesionales a determinar qué computación en nube se adapta mejor a sus necesidades.
Kurtis Pykes 's photo

Kurtis Pykes

12 min

blog

AWS frente a Certificaciones Azure: ¿Cuál es el mejor para ti?

Explora las diferencias entre las certificaciones de AWS y Azure, centrándote en las habilidades, las oportunidades profesionales y la demanda del sector para cada una de ellas. Esta guía te ayudará a determinar qué vía de certificación se ajusta mejor a tus objetivos en el panorama de la computación en nube.
Kurtis Pykes 's photo

Kurtis Pykes

28 min

tutorial

Primeros pasos con AWS Athena: Guía práctica para principiantes

Esta guía práctica te ayudará a empezar a utilizar AWS Athena. Explora su arquitectura y características y aprende a consultar datos en Amazon S3 utilizando SQL.
Tim Lu's photo

Tim Lu

28 min

tutorial

Cuentas de almacenamiento Azure: Tutorial paso a paso para principiantes

Esta guía te enseña a configurar y gestionar las Cuentas de Almacenamiento de Azure, paso a paso. También explora opciones avanzadas de configuración para un rendimiento óptimo y una optimización de costes.
Anneleen Rummens's photo

Anneleen Rummens

20 min

Ver másVer más