Gestionar las operaciones en el Bucket S3 usando aws-cli desde la instancia EC2

Podemos crear y administrar el cubo de S3 utilizando la consola de AWS. A veces puede surgir la necesidad de crear y realizar operaciones en el cubo S3 desde la línea de comandos. Si no conoces el cubo S3 y quieres aprender sobre él, haz clic aquí donde puedes encontrar un artículo sobre el cubo S3 escrito por mí.

Antes de continuar con este artículo asumo que estás familiarizado con el cubo S3.

En este artículo, veremos los pasos y comandos para crear un cubo S3 desde la línea de comandos y realizar operaciones básicas en él como copiar archivos, sincronizar archivos, etc.

Requisitos previos

  1. Cuenta de AWS (Créalasi no tienes una).
  2. Conocimiento básico de los cubos S3(Haz clic aquí para saber más sobre los cubos S3).
  3. Instancia EC2 de Ubuntu 20.04 (Haz clic aquí para conocer la instancia EC2 y los pasos para crearla desde la consola de AWS. Puedes elegir una AMI de Ubuntu 20.04 en lugar de la 18.04).
  4. Rol IAM con la política S3FullAccess adjunta (Haz clic aquí para aprender acrear un rolIAM ).

¿Qué vamos a hacer?

  1. Entra en la cuenta de AWS.
  2. Instala aws-cli.
  3. Adjunta un Rol IAM a la instancia EC2.
  4. Crea un Bucket con aws-cli.
  5. Realiza la operación básica en el Bucket S3 utilizando aws-cli.

Iniciar sesión en AWS

Antes de proceder a la instalación del comando aws-cli en una instancia EC2, vamos a iniciar sesión en nuestra cuenta.

Haz clic aquí para ir a la página de inicio de sesión de AWS.

Al pulsar el enlace anterior verás la página de inicio de sesión como se indica a continuación.

Página de acceso

Una vez que inicies la sesión con éxito en tu cuenta, verás el panel principal de AWS como se muestra a continuación.

Panel de control de AWS

Instala aws-cli

Conéctate a tu instancia AWS EC2.

Primero vamos a actualizar el repositorio.

sudo apt-get update

Instala el comando aws-cli utilizando el siguiente comando en el servidor Ubuntu.

sudo apt install awscli

Toma la versión del comando aws-cli.

aws --version

Hasta este momento, sólo tenemos una instancia EC2 sin ningún rol IAM necesario unido a ella.

Ahora si intentamos comprobar la identidad utilizando el siguiente comando se nos pedirá que configuremos las credenciales que se utilizarán para realizar cualquier operación.

aws sts get-caller-identity

Comprueba el comando aws y el acceso a la cuenta AWS

Adjunta un Rol IAM a la instancia EC2.

Ve a la consola de AM en tu cuenta de AWS y comprueba si la regla tiene la política requerida adjuntada.

Aquí puedes ver que el rol tiene adjuntada la política AmazonS3FullAccess.

Rol IAM con al menos acceso completo al cubo S3

Ahora, ve a la consola de EC2 a y selecciona la instancia que estás utilizando para realizar operaciones en el cubo S3.

Aquí, haz clic en Acciones –> Seguridad –> Modificar rol IAM para adjuntar una regla a la instancia.

Adjuntar un rol IAM a una instancia EC2

Verás la pantalla en la que puedes seleccionar la regla a adjuntar de la lista desplegable. Haz clic en guardar para continuar.

Seleccionar y adjuntar un rol IAM a la instancia EC2

Realiza la operación básica en S3 Bucket usando aws-cli

Volvamos al terminal de EC2 y ejecutemos el siguiente comando.

aws sts get-caller-identity

Verifica tu identidad

Como hemos adjuntado la regla necesaria a la instancia, al ejecutar el comando anterior para comprobar la identidad del rol que se está utilizando para realizar las operaciones desde el terminal, podemos ver el ID de usuario, la cuenta y su ARN en respuesta. Esto significa que hemos autenticado con éxito nuestra instancia EC2. Ahora estamos preparados para realizar operaciones desde el terminal utilizando el rol asociado a la instancia EC2.

Para comprobar los S3 Buckets existentes en la Cuenta AWS, ejecuta el siguiente comando

aws s3 ls

Vamos a crear un nuevo bucket llamado «rahul-new-bucket-dec-2020». Asegúrate de que el nombre del bucket debe ser globalmente único.

aws s3 mb s3://rahul-new-bucket-dec-2020

Ahora, de nuevo, si listamos los cubos podemos ver que se ha creado con éxito un nuevo cubo y que está disponible en la lista de cubos existentes.

aws s3 ls

Vamos a crear un nuevo archivo en nuestra máquina local

touch file-for-s3

Podemos copiar archivos de nuestra máquina local al cubo de S3

aws s3 cp file-for-s3  s3://rahul-new-bucket-dec-2020

Incluso podemos listar el contenido del cubo de S3

aws s3 ls s3://rahul-new-bucket-dec-2020

De la misma manera que copiamos archivos de la máquina local al cubo de S3, también podemos sincronizar un directorio local con el cubo.

La sincronización no copia los archivos y carpetas existentes de la máquina local al cubo. Sólo copia los archivos que se han creado o modificado recientemente

Vamos a crear un nuevo archivo llamado nuestra máquina local

touch new-file

La vez que usaremos la sincronización.

aws s3 sync . s3://rahul-new-bucket-dec-2020

Ahora vamos a crear de nuevo un nuevo archivo

touch file-after-sync

Ahora puedes ver que si sincronizamos de nuevo, sólo se copian los archivos recién creados. Los archivos que ya se han copiado en el cubo no se copian.

aws s3 sync . s3://rahul-new-bucket-dec-2020

Pero este no es el caso de la opción de copia. Se copian todos los archivos, independientemente de los que estén disponibles en S3.

aws s3 cp . s3://rahul-new-bucket-dec-2020 --recursive

Consulta la siguiente captura de pantalla para entender los comandos que acabamos de probar.

Crea un cubo y realiza una operación de copia y sincronización

Vamos a comprobar qué archivos están disponibles en nuestro cubo de S3.

aws s3 ls s3://rahul-new-bucket-dec-2020

Podemos eliminar un archivo concreto del cubo de S3 utilizando el subcomando «rm».

aws s3 rm s3://rahul-new-bucket-dec-2020/new-file

Comprueba si el archivo ha sido eliminado o no del bucket

aws s3 ls s3://rahul-new-bucket-dec-2020

Podemos incluso eliminar todos los objetos del cubo utilizando la opción –recursiva

aws s3 rm s3://rahul-new-bucket-dec-2020 --recursive

Comprueba si los objetos se han eliminado del cubo o no

aws s3 ls s3://rahul-new-bucket-dec-2020

Consulta la siguiente captura de pantalla para entender las operaciones que acabamos de realizar.

Eliminar objetos del cubo S3

De la misma manera que hemos podido eliminar objetos del cubo, también podemos eliminar el propio cubo

Primero, haz una lista de todos los cubos disponibles en la cuenta.

 aws s3 ls

Elimina el cubo deseado utilizando el subcomando «rb».

 aws s3 rb s3://rahul-new-bucket-dec-2020

Podemos ver que el cubo especificado se ha eliminado de la cuenta ahora

aws s3 ls

Eliminar el cubo S3

Podemos eliminar la regla que habíamos adjuntado a la instancia para que ésta ya no pueda autorizarse a sí misma.

Para eliminar la regla adjunta ve a la instancia EC2, haz clic en Acciones –> Seguridad –> Modificar rol IAM y elimina la regla que estaba adjunta y guarda la configuración.

Separar el rol de IAM

Confirma la operación.

Confirma la acción

Esta vez si ejecutamos el comando «aws s3 ls», no podremos listar los buckets de la cuenta. No podremos realizar ninguna de las operaciones desde la Instancia EC2.

Comprueba el acceso

Conclusión

Así como gestionamos el bucket de AWS S3 desde la consola de AWS, también podemos gestionarlo desde la CLI. Hemos visto los pasos para instalar la utilidad de línea de comandos aws-cli. También vimos los pasos para conectar y desconectar el Rol I am de la instancia EC2. Realizamos algunas operaciones básicas en el bucket de S3 utilizando la utilidad de línea de comandos aws-cli.

También te podría gustar...