Conexión entre Amazon S3 y Servidor remoto
Qué es Amazon S3
Amazon a través de su portal de Amazon Web Services (AWS) ofrece multitud de productos relacionados con las capacidad de almacenaje y de computación informática.
Entre ellos tenemos el Amazon Simple Storage Service o más conocido como Amazon S3. Éste es un servicio de almacenamiento de objetos con el que podremos almacenar y recuperar cualquier volumen de datos desde cualquier ubicación.
Este tipo de servicio es muy útil para ampliar de forma flexible la capacidad de almacenamiento de nuestros servidores, sea de un negocio en la nube, sea para albergar nuestras copias de seguridad de forma remota y segura. Para probar durante un año estos servicios es necesario crearse una cuenta en AWS y empezar a trabajar.
Acceso a nuestro S3
Una vez tengamos acceso a la cuenta en AWS, crearemos la unidad de almacenamiento en la nube o como ellos la llaman bucket . Si bien a través de la consola (la web) de AWS podremos realizar todas las operaciones imaginables con un dispositivo de almacenamiento, lo que en este caso necesitamos es utilizar este dispositivo como una unidad remota que se "monta" igual que si fuera un disco duro más de nuestro servidor.
Para ello hay que realizar algunas configuraciones en nuestro servidor.
Conexión con nuestro servidor Linux/Debian
Para convertir un servicio de almacenamiento tipo S3 en un disco duro usable para nuestro servidor necesitamos instalar s3fs-fuse. Un software que permite a Linux y a Max OSX montar un bucket tipo S3 utilizando FUSE. Con la virtud de que s3fs preserva los formatos originales de los objetos almacenados en el bucket, permitiendo así el uso de otras herramientas como s3cmd, según comentan en el archivo Readme.md de este software.
Instalación de s3fs-fuse
Para instalar este software hemos seguido estos pasos:
- Instalamos las dependencias necesarias, que son, al menos, estas que siguen en Linux/Debian:
sudo apt-get install automake autotools-dev fuse g++ git libcurl4-openssl-dev libfuse-dev libssl-dev libxml2-dev make pkg-config
- Descargar la última versión desde https://github.com/s3fs-fuse/s3fs-fuse/releases
root@test:~# wget https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.83.tar.gz
- Descomprimimos el paquete comprimido tipo tar:
root@test: :~# tar xvzf v1.83.tar.gz
- Accedemos al directorio que se ha creado:
root@test:~# cd s3fs-fuse-1.83/
- Ejecutar el comando :
root@test:~# ./autogen.sh
- A continuación ejecutamos el configure que se ha creado:
root@test:~# ./configure --prefix=/usr --with-openssl
- Casi llegando al final de la compilación, ejecutamos el make:
root@test:~# make
- Finalmente, instalamos con:
root@test:~# make install
Configuración de las credenciales AWS
Una vez instalado el software para comunicarse con el servicio Amazon S3, procedemos a poner nuestras credenciales de acceso a esta plataforma, ya que las medidas de seguridad y de acceso son muy necesarias en estos casos donde se almacena información vital.
Así que el primer paso es tener a mano las claves de acceso a la plataforma del usuario con el que queramos trabajar, preferentemente que este usuario no sea el primer usuario creado en AWS al crear la cuenta, ya que este usuario tiene todos los derechos de escritura y lectura sobre todos los archivos, objetos o buckets que tengamos en la plataforma. Por ello es muy recomendable crear otros usuarios a los que podemos darles o no los permisos que necesiten en cada momento.
- Creamos y editamos el archivo
/etc/passwd-s3fs
con el editor que queramos. Añadimos la clave ID de acceso y su contraseña para nuestro usuario de este modo:
AWS_ACCESS_KEY_ID:AWS_SECRET_ACCESS_KEY
Estas claves de acceso están en la consola de AWS para cada usuario creado en la plataforma, pero las contraseñas solo se nos muestran en el momento de la creación del usuario, así que hay que guardarlas bien porque son útiles y no las podemos volver a pedir. - Lo siguiente es darle los permisos adecuados al archivo recién creado:
root@test:/etc# chmod 600 /etc/passwd-s3fs
Montaje de la unidad remota
Con esto ya está todo listo para acceder desde nuestro servidor al dispositivo de almacenamiento en la nube, en este caso lo llamamos como mybucket para ello:
root@test:~# s3fs mybucket /mnt -o passwd_file=/etc/passwd-s3fs
Este comando consigue que nuestro bucket aparezca en el interior de la carpeta del sistema /mnt. A partir de ahora podemos acceder a dicha carpeta y trabajar normalmente como haríamos con cualquier carpeta situada en nuestro sistema.
Pero, este último comando solo sirve hasta que reiniciemos la máquina. Por lo que para que el bucket siempre aparezca montado en la raíz del sistema, hay que añadirlo al archivo /etc/fstab, que es el que organiza los dispositivos que se montan automáticamente al iniciarse el sistema. Esto se hará del siguiente modo:
- Editamos el archivo /etc/fstab
- Añadimos la siguiente línea:
s3fs#mybucket /mnt fuse _netdev,allow_other 0 0
- Salimos guardando los cambios
- Montamos todos los dispositivos automáticamente de nuevo con el comando:
root@test:~# mount -a
Y con esto ya está todo listo para poder trabajar con nuestro dispositivo en la nube como si fuera una partición más o un disco duro más en nuestro sistema.