Pubblicato il 25/03/2023 da alnao nella categoria alnao.it

Il servizio EFS (Amazon Elastic File System) mette a disposizione degli utenti la possibilità condividere file senza occuparsi o configurare la grandezza e le performance dello storage in quanto si tratta di un servizio serverless, infatti il “disco” si auto-dimensiona a seconda delle esigenze di dimensioni e traffico. L’interfaccia di collegamento di rete con supporto ai protocolli NFSv4.1 e NFSv4.0, con in più un protocollo proprietario (chiamato efs) usato all’interno alle risorse AWS, proprio grazie a questo il servizio è usabile dalle istanze EC2, da ECS e da AWS Lambda che possono eseguire il mount del volume EFS in pochi istanti.

La creazione da console richiede pochissime informazioni: un nome simbolico, la VPC e il tipo (multi AZ oppure singola AZ). Nella console, dettaglio del volume, si possono vedere il nome DNS del tipo

fs-<volumeID>.efs.<region>.amazonaws.com

e con il bottone Attach si possono vedere i comandi di mount del tipo:

sudo mount -t efs -o tls fs-<volumeID>:/ /mnt/efs

In fase di creazione del EFS viene creato un Security Group dedicato per gestire la connessione in ingresso, come sempre in AWS, di default tutto è bloccato tranne quanto è configurato nel security group, bisogna sempre ricordarsi di autorizzare le istanze EC2 o le Lambda per accedere al volume aggiungendo nel Security Gruop del EFS la regola Inbound dal Security Group della EC2. Per montare i volumi in istanze EC2 è possibile usare il tipo EFS, grazie al protocollo proprietario installabile con il pacchetto “efs-utils” con i comandi yum se si è usata una AMI con sistema AWS-Linux :

sudo yum install -y amazon-efs-utils

oppure con un sistema Debian/Ubundu si può installare con i comandi:

sudo apt-get update
sudo apt-get -y install git binutils
git clone https://github.com/aws/efs-utils
cd /path/efs-utils
./build-deb.sh
sudo apt-get -y install ./build/amazon-efs-utils*deb

maggiori informazioni sono disponibili nella guida ufficiale.

Il comando di mount potrebbe avere problemi di risoluzione DNS perchè il disco viene sempre creato nella subnet privata della VPC mentre l’istanza potrebbe non accedervi o il volume potrebbe non avere un IP nella subnet della istanza EC2, per risolvere questo problema è possibile creare un interfaccia di rete del volume e poi aggiungere nel file “/etc/hosts” della istanza la riga

<indirizzoIPvoume> fs-<volumeID>.efs.<region>.amazonaws.com

Per quanto riguarda i sistemi operativi Ms Windows, nella documentazione c’è un chiaro messaggio
Amazon EFS is not supported on Windows instances, per maggior informazioni si può leggere la documentazione ufficiale. Un caso d’uso molto semplice è la creazione di un sito web in alta affidabilità con queste componenti:

  • un unico volume EFS dove viene memorizzato il codice del sito web
  • più istanze EC2 che montano lo stesso EFS, all’interno di ogni istanza un server web per l’esposizione dei contenuti del volume
  • un autoscaling group per la gestione delle istanze
  • un application load balancer per la gestione del traffico per il bilanciamento del traffico