AWS CLI

De las herramientas para la línea de comando que permiten hacer uso de los servicios de nube de Amazon.


Presentación

Hay dos versiones de las utilerías de AWS1 para la línea de comando del sistema operativo. Estas notas se comenzaron a escribir cuando la versión 2 aún no estaba recomendada para «producción» pero se han venido actualizando a la par de la maduración de dicha versión. La versión 2 no mantiene vínculos con los componentes de la versión 1 y no cuenta con una compatibilidad al 100% con la versión 1, dada la introducción de nuevas características, por lo que es posible hacer convivir ambas versiones (todo es cuestión del PATH al final y administradores de entornos virtuales como conda pueden ayudar). Por supuesto, lo más recomendable es elegir y trabajar sólo con una, la más nueva, salvo que haya necesidades históricas de peso.

Tiempo después de haber iniciado esta página, en abril de 2021, volviéndola a consultar para revisar como actualizar las utilerías de AWS, leo con dificultad las explicaciones dadas en la instalación para macOS y veo muchas secciones que se quedaron en calidad de borrador. La página inicialmente fue hecha antes de que WordPress cambiara al estilo o sistema de bloques y resulta ya difícil mantener el layout clásico. Así que se ha decidido rehacerla para adaptarla a las modernas tendencias que WordPress ha adoptado. La fecha inicial de creación de la página se mantiene y se da preferencia en la presentación y explicación a la versión 2.

Para macOS y el uso de Homebrew cabe señalar lo siguiente. Todas las operaciones con este administrador de paquetes mostradas aquí se han hecho desde una cuenta privilegiada, ya que Homebrew no permite hacer un sudo. Así, en lo que respecta a instrucciones de instalación o ejemplos de uso de los comandos de AWS CLI, a menos que se indique el uso de una cuenta privilegiada, se puede asumir que lo presentado puede servir en cualquier cuenta de usuario estándar.

macOS

Instalación

AWS CLI v2

La instalación, para todos los usuarios del equipo, como indica la documentación de AWS4, se hizo y validó como sigue:

$ cd 
$ cd Downloads
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 24.2M  100 24.2M    0     0  13.5M      0  0:00:01  0:00:01 --:--:-- 13.5M
$ sudo installer -pkg AWSCLIV2.pkg -target /
installer: Package name is AWS Command Line Interface
installer: Upgrading at base path /
installer: The upgrade was successful.
$ which aws
/usr/local/bin/aws
$ aws --version
aws-cli/2.1.39 Python/3.8.8 Darwin/19.6.0 exe/x86_64 prompt/off
$ 

AWS CLI v1

La versión 1 de AWS CLI puede ser instalada en al menos dos formas2.

  • Mediante el instalador proporcionado por AWS1,2, o
  • Haciendo uso de una distribución, como la que mantiene Anaconda3 o python.org, por ejemplo:
$ conda install -c conda-forge awscli

o

$ pip3 install awscli --upgrade --user

Desinstalación

AWS CLI v2

Existen varias formas en las que AWS CLI v2 pueden ser instaladas en macOS4, pero para todas ellas aparentemente aplica el mismo procedimiento de desinstalación. Las instrucciones aquí indicadas son las mismas que la documentación indica en la sección de macOS4., se reproducen nuevamente por diferencias en los resultados esperados que posiblemente se deben a particularidades de esta instalación pero que pueden ser útiles a fin de entender efectos por la forma en que se llevó a cabo la instalación. En este caso se trata de retirar una instalación que aplicó a todos los usuarios del equipo.

Desde una cuenta con permisos administrativos y empleando a BASH como shell:

1. Encontrar y listar los enlaces de los componentes a retirar. En este ejemplo se ilustra lo que podría ser inicialmente considerado como el que se cuente con dos versiones de las utilerías instaladas.

$ which aws
/usr/local/bin/aws
$ cd /usr/local/bin
$ ls -l aws*
lrwxr-xr-x  1 root   admin  22 Sep  5  2020 aws -> /usr/local/aws-cli/aws
lrwxr-xr-x  1 admin  admin  45 Apr 29  2020 aws-vault -> /usr/local/Caskroom/aws-vault/5.4.1/aws-vault
lrwxr-xr-x  1 root   admin  38 Dec  7  2019 aws2 -> /usr/local/aws-cli/v2/current/bin/aws2
lrwxr-xr-x  1 root   admin  48 Dec  7  2019 aws2_completer -> /usr/local/aws-cli/v2/current/bin/aws2_completer
lrwxr-xr-x  1 root   admin  32 Sep  5  2020 aws_completer -> /usr/local/aws-cli/aws_completer

2. La validación de la versión indica que aws corresponde a la versión esperada pero los enlaces a aws2 y aws2_completer parecen estar rotos.

$ aws --version
aws-cli/2.0.46 Python/3.7.4 Darwin/19.6.0 exe/x86_64
$ aws2 --version
-bash: aws2: command not found
$ cd /usr/local/aws-cli/v2/
-bash: cd: /usr/local/aws-cli/v2/: No such file or directory

3. Se eliminaron los enlaces, cuidando de no tocar el de aws-vault.

$ rm aws aws2 aws2_completer aws_completer

4. Se eliminó el directorio de los componentes.

$ sudo rm -rf aws-cli
Password:
$

Complementos

AWS Vault

AWS Vault es una herramienta para almacenar y acceder de forma segura a las credenciales de AWS en un entorno de desarrollo. AWS Vault almacena las credenciales de IAM en el almacén de llaves del sistema operativo y luego genera credenciales temporales para exponerlas al shell y las aplicaciones. Está diseñado para ser complementario a las herramientas de AWS CLI, y está al tanto de perfiles y configuración en ~/.aws/config. La instalación de AWS Vault se hace a través de Homebrew.

$ brew cask install aws-vault
==> Downloading https://github.com/99designs/aws-vault/releases/download/v4.7.1/
Already downloaded: /Users/admin/Library/Caches/Homebrew/downloads/fcdd225c41944c1e9f8d445fed8958302b373cd4d461fbe1ff97a02ad3b8bbbd--aws-vault-darwin-amd64.dmg
==> Verifying SHA-256 checksum for Cask 'aws-vault'.
==> Installing Cask aws-vault
==> Linking Binary 'aws-vault' to '/usr/local/bin/aws-vault'.
🍺 aws-vault was successfully installed!
$

Desinstalación

Para desinstalar AWS Vault (lo que se muestra es asumiendo que es lo único instalado con Homebrew):

$ brew cask list
aws-vault
$ brew cask remove aws-vault
==> Uninstalling Cask aws-vault
==> Unlinking Binary '/usr/local/bin/aws-vault'.
==> Purging files for version 4.7.1 of Cask aws-vault
$

Configuración

Antes de poder hacer uso del AWS CLI es necesario configurar las credenciales de acceso. Considerando las buenas prácticas de seguridad sugeridas por AWS, lo más recomendable es crear un usuario que se destinado para acceso programático, el cual se asigne a un grupo y a dicho grupo las políticas de acceso apropiadas.

Si, como se ha mencionado, el usuario con el que se hará uso para es para uso programático, al momento de su creación claves de acceso y el secreto asociado serán devueltos (en cualquier otro caso, en todo momento se pueden generar— e invalidar —estas claves de acceso desde la consola de AWS. Con dichas credenciales:

$ aws configure

AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS
Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Default region name [None]: us-west-2
Default output format [None]: json 

Las credenciales y valores colocados en el ejemplo corresponden al mostrado en la documentación de AWS5, substituirlos por los apropiados.

Referencias

  1. «Installing the AWS CLI«, Amazon, Inc., Visited: 2019.12.08. URL: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html.
  2. «Installing the AWS CLI version 1«, Amazon, Inc., Visited: 2019.12.08. URL: https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html.
  3. «how to install AWSCLI on a Anaconda python distribution,» Stackoverflow, web. Asked: 2016.05.17; visited: 2020.08.13. URL: https://stackoverflow.com/questions/37282994/how-to-install-awscli-on-a-anaconda-python-distribution.
  4. «Installing, updating, and uninstalling the AWS CLI version 2«, Amazon, Inc., Visited: 2021.04.23. URL: https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html.
  5. «AWS Command Line Interface. User Guide», Amazon, Inc., Visited: 2021.04.23. URL: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html.

Twitter Wordpress eMail
© Todos los derechos reservados.
Dr. Eduardo René Rodríguez Avila
Creación: 2019.07.11
Última actualización: 2021.04.23
El contenido de este sitio puede ser copiado y reproducido libremente mientras no sea alterado y se cite su origen. Marcas y productos registrados son citados por referencia y sin fines de lucro o dolo. Todas las opiniones son a título personal del o los autores de éstas y, salvo sea expresado de otro modo, deben considerarse como registro y expresión de la experiencia de uso de aquello que es tratado. Para conocer más sobre la posición de privacidad y responsabilidad de lo que se presenta en este sitio web y como ha sido obtenido, consulte la declaración al respecto.