Entradas

AWS S3 Glacier

Cómo eliminar un almacén («Vault») en Amazon S3 Glacier

Hace algo más de dos años que tenemos en casa un NAS TS-453a de QNAP para todo lo que tiene que ver con la reproducción multimedia (PLEX), compartir ficheros y, muy especialmente, la gestión de las copias de seguridad de los equipos de la familia. Lo recomiendo.

Todo esto, y mucho más, se puede gestionar gracias a las aplicaciones incorporadas en su sistema operativo QTS (basado en Linux). Una de estas aplicaciones es HBS (Hybrid Backup Sync) que lleva todo lo necesario para hacer copias de seguridad en la nube. En nuestro caso, «la nube» es el servicio de almacenamiento Amazon Web Services S3 Glacier.

Se necesita una cuenta en AWS y haber creado al menos un almacén (Vault) en Glacier. Con un identificador y una clave secreta de acceso proporcionada por la consola de AWS podrás configurar un nuevo espacio de almacenamiento en HBS asociado al Vault. A partir de aquí toda la gestión de los archivos y la copia de seguridad la hace HBS.

Pues a lo que iba. Hace unos días tuve que crear un nuevo almacén en Glacier para probar otras opciones con la copia de seguridad. La prueba no me convenció y decidí seguir con nuestro backup habitual. Pero, y aquí vino el problemilla, quería deshacerme del Vault porque ya no lo necesitaba. Y borrarlo no es tan inmediato como yo esperaba porque debe estar vacío para poder eliminarlo.

De primeras no encontré nada en la consola AWS que me permitiese borrar el contenido del almacén. Tenía que usar la interfaz de línea de comandos de AWS. Teniendo en cuenta que eran miles los archivos a borrar, lo mejor erar buscar alguna utilidad externa. Y alguna había. Como glaciar-vault-remove de Leeroy Brun, desarrollada en Python. También mt-aws-glacier, algo más antigüilla, desarrollada en Perl por Victor Efimov. Y no sé si la versión de prueba de CloudBerry Explorer podría haber borrado los archivos como leí en superuser.

Al final opté por un sencillo, pero elegante script PHP creado por Tobias Sell. Empecé actualizando la instancia WSL Ubuntu de mi equipo:

$ sudo apt update
$ sudo apt upgrade

para instalar la interfaz de línea de comandos de AWS:

$ sudo apt install awscli
$ aws --version

y configurar aws-cli con los datos de mi acceso AWS:

$ aws configure
AWS Access Key ID [None]: AKIA****************
AWS Secret Access Key [None]: ************************************
Default region name [None]: eu-central-1
Default output format [None]: json

Todo queda guardado en un directorio .aws en el home del usuario. Ya sólo tuve que ejecutar el script que previamente había descargado en un directorio s3 al efecto:

$ cd s3
$ php remove.php
Account Id: ************
Region: eu-central-1
VaultName: VAULT_TEST

¡¡Cuatro horas sólo para recuperar en un fichero output.json el inventario de los archivos a borrar!! Mientras que en job.json dejó la configuración del trabajo.

Luego requirió la friolera de 18 horas para el borrado de los ficheros. Por eso he querido dejar aquí registro de lo que he hecho, para recordarme que los experimentos, mejor con gaseosa.

Además, Amazon cobra por borrar archivos con menos de 3 meses de antigüedad 😓 ¡Cuidado con las pruebas!

Goodbye AWS: Rolling your own servers with Kubernetes

Kubernetes allows users to realize many of the cloud benefits while running on bare metal servers.

https://gravitational.com/blog/aws_vs_colocation/

Rusoto, interactúa con AWS desde programas Rust

Rusoto define un crate como núcleo del kit de desarrollo (core del SDK) para conectar con los servicios de Amazon Web Services (AWS) y que contiene la funcionalidad común compartida entre todos los servicios. Luego están los crates para cada servicio soportado.

GitHub...: https://github.com/rusoto/rusoto
crates.io: https://crates.io/crates/rusoto_core
docs.rs..: https://docs.rs/rusoto_core/latest/rusoto_core