Si has trabajado alguna vez con buckets en AWS (S3) sabrás que puedes acceder a ellos o bien a través del navegador web o bien a través de la interfaz por linea de comandos (cli). Normalmente, dado que es más visual, solemos usar el navegador web para interactuar con nuestro bucket, el problema es que no siempre tenemos acceso, y a veces tenemos que usar la cli tirando de las claves privadas de éste.
Para poder hacer esto, lo primero que tenemos que hacer es instalar la cli. Podemos encontrar toda la información en el siguiente enlace:
https://aws.amazon.com/es/cli/
Para confirmar que tenemos la cli instalada, escribimos el siguiente comando en nuestra terminal:
aws --version
Si todo está bien, nos indicará la versión que tenemos instalada.
El siguiente paso para poder usar la cli es configurar las credenciales del bucket al que intentaremos acceder. Para ello, ejecutamos el comando:
aws configure
A continuación, a medida que la línea de comandos nos pida las credenciales e información que necesita, se las iremos poniendo. Éste es el orden:
- AWS Access key ID
- AWS Secret key
- Default Region name (ej. EU_WEST_1 será eu-west-1)
- Default Output format (hay diferentes formatos, yo puse json)
Ejemplo:
- AWS Access Key ID [None]: AKIAI44QH8DHBEXAMPLE
- AWS Secret Access Key [None]: je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
- Default region name [None]: eu-west-1
- Default output format [None]: json
Con todo esto, se crearán las credenciales para el usuario por defecto, pero si en cambio, queremos crear diferentes perfiles, porque por ejemplo queremos acceder a diferentes buckets, que requieren diferentes credenciales, entonces, cuando escribamos el comando de configuración añadiremos también la flag - -profile, indicándole el nombre del perfil en concreto para el que crear esa configuración:
aws configure --profile otroperfil
Si queremos asegurarnos o revisar si las credenciales están bien configuradas, desde la terminal podemos acceder al directorio (oculto) que se habrá creado en nuestro directorio raíz. Para poder verlo escribiremos:
cd .aws
Veremos que contendrá dos ficheros diferentes: config y credentials.
En el fichero config tendremos primero entre corchetes el perfil al que hacen referencia las siguientes 2 lineas, que contienen la region y el output por defecto. Por ejemplo:
- [profile default]
- region = eu-west-1
- output = json
En el fichero credentials tendremos también entre corchetes el perfil al que hacen referencia las siguientes 2 lineas, que contienen las claves. Por ejemplo:
- [default]
- aws_access_key_id = AKIAI44QH8DHBEXAMPLE
- aws_secret_access_key = je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
Una vez finalizada la configuración podemos acceder al bucket en cuestión.
Para listar los directorios que tenemos en el bucket ejecutaremos el siguiente comando en la cli, donde bucketname será el nombre del bucket al que queremos acceder:
aws s3 ls bucketname
Si no sabemos el nombre, podemos simplemente obviar el nombre del bucket en el comando y nos listará todos los buckets a los que tenemos acceso.
Para listar de forma recursiva todo lo que el bucket contiene ejecutaremos el siguiente comando en la cli, donde bucketname será el nombre del bucket al que queremos acceder:
aws s3 ls --recursive --human-readable bucketname
Si tienes más de un perfil configurado, para especificar con qué perfil quieres usar cada comando, tendrás que añadirle al final la flag - -profile con el nombre del perfil.
Y hasta aquí conceptos básicos para trabajar con la cli de AWS.
Si te interesa saber más, la documentación de AWS te puede ayudar.