28 ejemplos de comandos esenciales de AWS S3 CLI

Es más fácil administrar los buckets y objetos de AWS S3 desde la interfaz de línea de comandos – CLI por sus siglas en ingles.

Este tutorial explica los conceptos básicos de cómo administrar los buckets de S3 y sus objetos usando AWS S3 CLI, esto lo haremos usando los siguientes ejemplos.

Para una referencia rápida, puedes ver solo los comandos. Para obtener detalles sobre cómo funcionan estos comandos, debes leer todo el tutorial.

1. Crear nuevo bucket S3

Usa la opción mb para esto. mb significa Make Bucket.

Lo siguiente creará un nuevo bucket S3

En el ejemplo anterior, el bucket se crea en la región us-east-1, ya que eso es lo que se especifica en el archivo de configuración del usuario como se muestra a continuación.

Para configurar tu archivo de configuración correctamente, usa el comando aws configure.

Si el bucket ya existe y eres el propietario del mismo, verás el siguiente mensaje de error.

En caso de que el bucket ya exista, pero es propiedad de otro usuario, recibirás el siguiente mensaje de error.

En algunas situaciones, también puedes ver el siguiente mensaje de error.

2. Crear un nuevo bucket S3: región diferente

Para crear un bucket en una región específica (diferente a la del archivo de configuración), usa la opción –region como se muestra a continuación.

3. Eliminar bucket S3 (que está vacío)

Usa la opción rb para esto. rb significa remove bucket

Lo siguiente elimina el bucket dado.

Si el bucket que intentas eliminar no existe, recibirás el siguiente mensaje de error.

4. Eliminar bucket S3 (y todos sus objetos)

Si el bucket contiene algún objeto, verás el siguiente mensaje de error:

Para eliminar un bucket junto con todos sus objetos, usa la opción –force como se muestra a continuación.

5. Listar todos los buckets S3

Para ver todos los depósitos que posee el usuario, ejecuta el siguiente comando ls.

En la salida anterior, la marca de tiempo es la fecha en que se creó el bucket. La zona horaria se ajustó para mostrarse en la zona horaria de tu computadora portátil.

El siguiente comando es el mismo que el anterior:

6. Listar todos los objetos en un bucket

El siguiente comando muestra todos los objetos y prefijos debajo de tgsbucket.

En la salida anterior:

  • Dentro de tgsbucket, hay dos carpetas de configuración y datos (indicado por PRE)
  • PRE significa Prefijo de un objeto S3.
  • Dentro de tgsbucket, tenemos 4 archivos en el nivel /
  • La marca de tiempo es cuando se creó el archivo
  • La segunda columna muestra el tamaño del objeto S3

Nota: La salida anterior no muestra el contenido de la configuración y los datos de las subcarpetas

7. Enumerar todos los objetos en un bucket recursivamente

Para mostrar todos los objetos de forma recursiva, incluido el contenido de las subcarpetas, ejecuta el siguiente comando.

Nota: Cuando enumeres todos los archivos, observa que no hay un indicador PRE en la segunda columna para las carpetas.

8. Tamaño total de todos los objetos en un bucket S3

Puedes identificar el tamaño total de todos los archivos en tu bucket de S3 mediante la combinación de las siguientes tres opciones: recursive, human-readable, summarize

Nota: A continuación, se muestra el tamaño total del archivo en el bucket S3 y el número total de archivos en el bucket s3.

En la salida anterior:

  • Asegúrate de que la opción recursive muestra todos los archivos en el bucket s3, incluidas las subcarpetas
  • human-readable muestra el tamaño del archivo en formato legible. Los valores posibles que verás en la segunda columna para el tamaño son: Bytes/MiB/KiB/GiB/TiB/PiB/EiB
  • Las opciones de summarize se aseguran de mostrar las dos últimas líneas en la salida anterior. Esto indica el número total de objetos en el bucket S3 y el tamaño total de todos esos objetos

9. Solicitar payer listing

Si un bucket específico se configura como requester pays buckets, entonces si estás accediendo a objetos en ese bucket, comprendes que eres responsable del payment de ese acceso de solicitud. En este caso, el propietario del bucket no tiene que pagar por el acceso.

Para indicar esto en tu comando ls, deberás sespecificar la opción –request-payer como se muestra a continuación.

Para la URL firmada, asegúrate de incluir x-amz-request-payer=requester en la solicitud

10. Copiar el archivo local al bucket S3

En el siguiente ejemplo, estamos copiando el archivo getdata.php de la computadora portátil local al bucket S3.

Si deseas copiar getdata.php a un bucket S3 con un nombre diferente, has lo siguiente:

Para el archivo local, también puedes especificar la ruta completa como se muestra a continuación.

11. Copiar la carpeta local con todos los archivos al bucket S3

En este ejemplo, estamos copiando todos los archivos de la carpeta “data” que se encuentra en el directorio /home/projects al bucket S3.

En el ejemplo anterior, ten en cuenta que solo se cargan los archivos de la carpeta /local data. No la carpeta “data” en sí

Si deseas cargar la carpeta data del bucket local a S3 como carpeta data, debes especificar el nombre de la carpeta después del nombre del bucket como se muestra a continuación.

12. Descargar un archivo de bucket S3

Para descargar un archivo específico de un bucket de S3, has lo siguiente. Lo siguiente copia getdata.php del grupo S3 dado al directorio actual.

Puedes descargar el archivo a la máquina local con un nombre diferente como se muestra a continuación.

Descarga el archivo del bucket S3 a una carpeta específica en la máquina local como se muestra a continuación. Lo siguiente descargará el archivo getdata.php a la carpeta /home/project en la máquina local.

13. Descargar todos los archivos de forma recursiva desde un bucket de S3 (usando copy)

Lo siguiente descargará todos los archivos del bucket dado al directorio actual en tu computadora portátil.

Si deseas descargar todos los archivos de un bucket S3 a una carpeta específica localmente, tienes que especificar la ruta completa del directorio local como se muestra a continuación.

En el comando anterior, si la carpeta tgsbucket no existe en /home/projects, la creará automáticamente.

14. Copiar un archivo de un bucket a otro bucket

El siguiente comando copiará el config/init.xml de tgsbucket al bucket de copia de seguridad como se muestra a continuación.

En el ejemplo anterior, aunque el archivo init.xml estaba en la carpeta de configuración en el bucket de origen, en el bucket de destino, copió el archivo init.xml en el nivel superior / en el bucket de copia de seguridad

Si deseas copiar la misma carpeta desde el origen y el destino junto con el archivo, especifica el nombre de la carpeta en los buckets de diseño que se muestran a continuación.

Si el bucket de destino no existe, recibirás el siguiente mensaje de error.

15. Copiar todos los archivos de forma recursiva de un bucket a otro

Lo siguiente copiará todos los archivos del bucket de origen, incluidos los archivos de las subcarpetas, al bucket de destino.

16. Mover un archivo de local al bucket S3

Cuando mueve el archivo de la máquina local al bucket S3, como era de esperar, el archivo se moverá físicamente de la máquina local al bucket S3.

Como puedes ver, el archivo no existe en la máquina local después del movimiento. Ahora solo está en bucket S3.

17. Mover un archivo del bucket S3 a local

El siguiente es el reverso del ejemplo anterior. Aquí, el archivo se moverá del depósito S3 a la máquina local.

Como puedes ver a continuación, el archivo ahora existe en el bucket S3.

Mueve el archivo del bucket S3 al directorio /home/project en la máquina local.

Después del movimiento, el archivo no existe más en el bucket S3

18. Mover un archivo de un bucket de S3 a otro bucket de S3

Antes del traslado, el archivo source.json está en tgsbucket.

Este archivo no está en el backup-bucket

Moviendo el archivo de tgsbucket a backup-bucket.

Ahora, el archivo solo está en el backup-bucket.

19.  Mover todos los archivos de una carpeta local al bucket S3

En este ejemplo, los siguientes archivos están en la carpeta data.

Lo siguiente mueve todos los archivos en el directorio data en la máquina local a tgsbucket

20. Mover todos los archivos del bucket S3 a la carpeta local

En este ejemplo, la carpeta localdata está actualmente vacía.

Lo siguiente moverá todos los archivos en el bucket S3 debajo de la carpeta data a la carpeta localdata en tu máquina local.

Aquí está la salida después del movimiento anterior.

21. Mover todos los archivos de un bucket de S3 a otro bucket de S3

Usa la opción recursive para mover todos los archivos de un bucket a otro como se muestra a continuación.

22. Eliminar un archivo del bucket S3

Para eliminar un archivo específico de un bucket de S3, usa la opción rm como se muestra a continuación. Lo siguiente eliminará el archivo queries.txt del bucket S3 dado.

23. Eliminar todos los objetos de los buckets S3

Cuando especificas la opción rm solo con un nombre de bucket, no hace nada. Esto no eliminará ningún archivo del bucket.

Para eliminar todos los archivos de un bucket S3, usa la opción –recursive como se muestra a continuación.

24. Sincronizar archivos de la computadora portátil al bucket S3

Cuando usas el comando sync, esta copia recursivamente solo los archivos nuevos o actualizados del directorio de origen al destino.

Lo siguiente sincronizará los archivos del directorio de copia de seguridad en la máquina local al tgsbucket.

Si deseas sincronizarlo con una subcarpeta llamada backup en el bucket de S3, incluye el nombre de la carpeta en el bucket de s3 como se muestra a continuación.

Una vez que realices la sincronización, si ejecutas el comando de nuevo inmediatamente, no hará nada, ya que no hay archivos nuevos o actualizados en el directorio de respaldo local.

Permite crear un nuevo archivo en la máquina local para probarlo.

Ahora, cuando ejecutes sync, sincronizará solo este nuevo archivo con el bucket S3.

25. Sincronizar el archivo del bucket S3 a local

Esto es al revés del ejemplo anterior. Aquí, estamos sincronizando los archivos del bucket S3 a la máquina local.

26. Sincronizar archivos de un bucket S3 a otro bucket S3

El siguiente ejemplo sincroniza los archivos de tgsbucket a backup-bucket

27. Establecer el bucket S3 como un sitio web

También puedes hacer que el bucket S3 aloje un sitio web estático como se muestra a continuación. Para esto, debes especificar tanto el index como el documento de error.

Este bucket está en la región us-east-1. Entonces, una vez que hayas hecho lo anterior, puede sacceder al tgsbucket como un sitio web utilizando la siguiente URL: http://tgsbucket.s3-website-us-east-1.amazonaws.com/

Para que esto funcione correctamente, asegúrate de que el acceso público esté configurado en este bucket de S3, ya que ahora actúa como un sitio web.

28. Presignar URL del objeto S3 para acceso temporal

Cuando prescribes una URL para un archivo S3, cualquier persona que recibió esta URL puede recuperar el archivo S3 con una solicitud HTTP GET.

Por ejemplo, si deseas dar acceso al archivo dnsrecords.txt a alguien temporalmente, asigna este objeto S3 específico como se muestra a continuación.

El resultado del comando anterior será una URL HTTPS, que puedes entregar a alguien que debería poder descargar el archivo dnsrecords.txt de tu bucket de S3.

La URL anterior será válida por defecto durante 3600 segundos (1 hora).

Si deseas especificar un tiempo de expiración breve, usa la siguiente opción de expires-in. Lo siguiente creará una URL preestablecida que es válida solo por 1 minuto.
Expires-in (integer) Número de segundos hasta que caduque la URL previamente firmada. El valor predeterminado es 3600 segundos.

Si alguien intenta acceder a la URL después del tiempo de vencimiento, verá el siguiente mensaje de AccessDenied.