EFS: archiviazione condivisa dei file per Linux
Montare un file system EFS su più istanze EC2 e funzioni Lambda, configurare le modalità di prestazioni e throughput e controllare l'accesso con i security group
EFS: archiviazione condivisa dei file per Linux è una lezione AWS Solutions Architect gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AWS Solutions Architect, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AWS Solutions Architect include 4 lezioni in totale.
Che cos'è Amazon EFS?
Amazon Elastic File System (EFS) è un file system POSIX elastico, condiviso e completamente gestito, che può essere montato contemporaneamente da migliaia di istanze EC2, funzioni Lambda e container ECS/EKS. A differenza di EBS, che si collega a una singola istanza, EFS fornisce un file system condiviso in cui tutti i client connessi visualizzano gli stessi file in tempo reale. La capacità aumenta e diminuisce automaticamente: non è mai necessario allocare lo storage in anticipo. EFS è ideale per la gestione dei contenuti, i repository di codice condivisi, le directory home e l'analisi dei dati.
Classi di storage EFS
EFS offre due classi di storage: EFS Standard (multi-AZ, massima disponibilità, latenza inferiore al millisecondo) e EFS One Zone (una singola AZ, costo inferiore del 47%, resilienza leggermente minore). All'interno di ciascun livello è inoltre disponibile la variante Infrequent Access (IA), che archivia i dati a un costo inferiore del 92% rispetto a Standard per i file a cui non si accede regolarmente. La differenza rispetto a S3 è che EFS è un file system POSIX completo che le applicazioni possono montare: non è uno storage a oggetti.
# Create an EFS file system in Standard storage class
aws efs create-file-system \
--performance-mode generalPurpose \
--throughput-mode elastic \
--encrypted \
--tags Key=Name,Value=SharedFileSystem
# One Zone (cheaper, single-AZ):
aws efs create-file-system \
--performance-mode generalPurpose \
--throughput-mode elastic \
--encrypted \
--availability-zone-name us-east-1a \
--tags Key=Name,Value=SharedFileSystemOneZoneModalità di prestazioni di EFS
EFS supporta due modalità di prestazioni: General Purpose (predefinita, consigliata per la maggior parte dei carichi di lavoro — latenza minima, ideale per la distribuzione web, la gestione dei contenuti e le directory home) e Max I/O (progettata per carichi di lavoro massicciamente paralleli con migliaia di connessioni simultanee, a fronte di una latenza leggermente maggiore; ideale per big data ed elaborazione multimediale). La modalità di prestazioni viene impostata durante la creazione e non può essere modificata dopo la creazione del file system. Per l'esame SAA-C03, scelga Max I/O solo quando sono esplicitamente necessarie migliaia di connessioni parallele.
# Create EFS with Max I/O for highly parallel workloads
aws efs create-file-system \
--performance-mode maxIO \
--throughput-mode provisioned \
--provisioned-throughput-in-mibps 1024 \
--encrypted
# Note: Max I/O mode is NOT compatible with Elastic throughput mode
# It must use Provisioned or Bursting throughputModalità di throughput di EFS
EFS supporta tre modalità di throughput: Elastic (aumenta e riduce automaticamente il throughput in base al carico di lavoro — consigliata per la maggior parte dei casi d'uso, con addebito per GB trasferito), Bursting (il throughput varia in base alle dimensioni dello storage, accumula e consuma crediti burst come le istanze EC2 della serie T — baseline gratuita) e Provisioned (consente di specificare un throughput fisso indipendentemente dalle dimensioni dello storage — utile quando è necessario un throughput costante superiore a quello fornito da Bursting). La modalità Elastic è l'impostazione predefinita moderna ed elimina la necessità di pianificare la capacità di throughput.
# Migrate an existing EFS from Bursting to Elastic throughput
aws efs update-file-system \
--file-system-id fs-0abc1234def567890 \
--throughput-mode elastic
# Check current throughput mode and performance mode
aws efs describe-file-systems \
--file-system-id fs-0abc1234def567890 \
--query 'FileSystems[].{ThroughputMode:ThroughputMode,PerfMode:PerformanceMode,SizeBytes:SizeInBytes.Value}'Mount target e security group
Per accedere a un file system EFS da un'istanza EC2, crei un mount target in ogni subnet (AZ) in cui sono in esecuzione le istanze. Per EFS Standard, dovrebbe creare un mount target in ogni AZ del proprio VPC: le istanze EC2 si connettono al mount target della propria AZ per ottenere la latenza minima. I mount target dispongono di security group che devono consentire il traffico NFS (porta 2049 TCP) dal security group dell'istanza. Senza questa regola in ingresso, le operazioni di mount andranno in timeout.
# Create a mount target in each AZ
aws efs create-mount-target \
--file-system-id fs-0abc1234def567890 \
--subnet-id subnet-aaa111 \
--security-groups sg-efsnfs
aws efs create-mount-target \
--file-system-id fs-0abc1234def567890 \
--subnet-id subnet-bbb222 \
--security-groups sg-efsnfs
# The EFS security group needs: Inbound TCP 2049 from instance SGMontare EFS su EC2 Linux
Il metodo consigliato per montare EFS su EC2 consiste nell'utilizzare Amazon EFS Mount Helper (il pacchetto amazon-efs-utils), che supporta la crittografia TLS in transito e la riconnessione automatica. Il mount viene eseguito utilizzando l'ID del file system anziché l'indirizzo IP, così il DNS risolve automaticamente il mount target della AZ più vicina. Per i mount persistenti che devono sopravvivere ai riavvii, aggiunga la voce di mount a /etc/fstab utilizzando l'opzione _netdev, per assicurarsi che la rete sia disponibile prima del mount.
# Install the EFS mount helper
sudo yum install -y amazon-efs-utils
# Mount with TLS encryption in transit
sudo mkdir /mnt/efs
sudo mount -t efs -o tls fs-0abc1234def567890:/ /mnt/efs
# Persistent mount in /etc/fstab
# fs-0abc1234def567890:/ /mnt/efs efs defaults,_netdev,tls 0 0
# Verify mount
df -h /mnt/efsAccess Point di EFS
Gli EFS Access Points sono punti di ingresso specifici per le applicazioni in un file system EFS, che impongono un utente POSIX, un gruppo e una directory root specifici per tutte le connessioni che utilizzano tale access point. Ciò consente di isolare tra loro più applicazioni nello stesso file system: l'applicazione A esegue il mount tramite l'Access Point A e vede solo /data/app-a/, mentre l'applicazione B, utilizzando l'Access Point B, vede solo /data/app-b/. Gli Access Point sono il metodo consigliato per concedere a funzioni Lambda, task ECS e pod EKS un accesso isolato ai file system EFS condivisi.
# Create an EFS Access Point for an application
aws efs create-access-point \
--file-system-id fs-0abc1234def567890 \
--posix-user Uid=1001,Gid=1001 \
--root-directory Path=/data/app-a,CreationInfo={OwnerUid=1001,OwnerGid=1001,Permissions=755} \
--tags Key=App,Value=app-a
# Mount using the access point
sudo mount -t efs \
-o tls,accesspoint=fsap-0abc1234def567890 \
fs-0abc1234def567890:/ /mnt/app-aIntelligent-Tiering e ciclo di vita di EFS
Intelligent-Tiering di EFS sposta automaticamente i file tra le classi di storage Standard e Standard-IA (Infrequent Access) in base ai modelli di accesso. Lei configura una policy del ciclo di vita, ad esempio per spostare i file in IA dopo 30 giorni senza accessi. Quando un file in IA viene nuovamente utilizzato, viene automaticamente spostato in Standard. Il recupero da IA comporta un costo per GB recuperato, ma lo storage ha un costo significativamente inferiore. È simile a S3 Intelligent-Tiering ed elimina la necessità di gestire manualmente la posizione dei file.
# Enable lifecycle management (move to IA after 14 days)
aws efs put-lifecycle-configuration \
--file-system-id fs-0abc1234def567890 \
--lifecycle-policies '[
{"TransitionToIA": "AFTER_14_DAYS"},
{"TransitionToPrimaryStorageClass": "AFTER_1_ACCESS"}
]'
# Check current lifecycle configuration
aws efs describe-lifecycle-configuration \
--file-system-id fs-0abc1234def567890EFS con Lambda e container
Le funzioni Lambda possono montare file system EFS per condividere file di modelli di grandi dimensioni, dati persistenti o configurazioni tra le invocazioni, superando il limite di /tmp compreso tra 512 MB e 10 GB. I task ECS ed EKS montano EFS tramite persistent volume claim utilizzando il EFS CSI driver. La funzione Lambda o il container devono trovarsi in un VPC che dispone di un mount target, e il security group di EFS deve consentire il traffico NFS in ingresso dal security group del VPC di Lambda o dei container. EFS + Lambda è un pattern comune per condividere modelli ML addestrati tra istanze di funzioni.
# Lambda function with EFS mount (CloudFormation excerpt)
# Resources:
# MyFunction:
# Type: AWS::Lambda::Function
# Properties:
# VpcConfig:
# SubnetIds: [subnet-aaa]
# SecurityGroupIds: [sg-lambda]
# FileSystemConfigs:
# - Arn: arn:aws:elasticfilesystem:us-east-1:111122223333:access-point/fsap-0abc
# LocalMountPath: /mnt/models
# In function code:
# import os
# model_path = '/mnt/models/my-model.pkl'
# with open(model_path, 'rb') as f:
# model = pickle.load(f)EFS e EBS: differenze principali per l'esame
L'esame SAA-C03 chiede spesso di scegliere tra EFS ed EBS. EFS: file system POSIX condiviso, montabile simultaneamente su più istanze EC2, capacità elastica, solo Linux (NFS), accessibile da Lambda e dai container, costo per GB maggiore. EBS: dispositivo a blocchi, collegato a una singola istanza EC2 (ad eccezione di io1/io2 Multi-Attach), dimensioni assegnate fisse, supporto per Linux e Windows, non accessibile nativamente da Lambda, costo per GB inferiore. Se lo scenario afferma che «più istanze devono condividere gli stessi file», la risposta è EFS.
Crittografia di EFS
EFS supporta la crittografia a riposo (abilitata durante la creazione del file system utilizzando una chiave KMS — non modificabile dopo la creazione) e la crittografia in transito (crittografia TLS quando si utilizza EFS Mount Helper con l'opzione tls). AWS consiglia di abilitarle entrambe. È possibile imporre la crittografia in transito utilizzando una policy basata sulle risorse di EFS che neghi il mount senza TLS, richiedendo le condizioni elasticfilesystem:ClientRootAccess e elasticfilesystem:ClientWrite.
# Create an EFS file system with encryption at rest
aws efs create-file-system \
--encrypted \
--kms-key-id arn:aws:kms:us-east-1:111122223333:key/KEY_ID
# Mount with TLS to encrypt in transit
sudo mount -t efs -o tls fs-0abc1234def567890:/ /mnt/efs
# Deny unencrypted mounts via EFS resource policy (condition)
# Condition: elasticfilesystem:AccessedViaMountTarget = true
# and aws:SecureTransport = trueVerifica rapida
Verifichi la propria comprensione dei concetti di AWS Solutions Architect (SAA-C03) trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha imparato che: EFS è un file system POSIX condiviso che può essere montato simultaneamente su migliaia di istanze e funzioni Lambda con capacità elastica; gli Access Point forniscono l'isolamento per applicazione, imponendo l'utente POSIX e la directory root; e Intelligent-Tiering sposta automaticamente i file utilizzati raramente in una classe di storage IA a costo inferiore. Ora esamineremo FSx for Windows File Server e Lustre per i carichi di lavoro specializzati.
Domande Frequenti
La lezione «EFS: archiviazione condivisa dei file per Linux» è gratuita?
Sì — il testo completo di «EFS: archiviazione condivisa dei file per Linux» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AWS Solutions Architect, passa a CoddyKit PRO. Il corso AWS Solutions Architect include 4 lezioni in totale.
Cosa imparerò in «EFS: archiviazione condivisa dei file per Linux»?
Montare un file system EFS su più istanze EC2 e funzioni Lambda, configurare le modalità di prestazioni e throughput e controllare l'accesso con i security group Eserciti AWS Solutions Architect con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AWS Solutions Architect?
Non è richiesta alcuna esperienza precedente. AWS Solutions Architect su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «EFS: archiviazione condivisa dei file per Linux»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AWS Solutions Architect?
Sì. Ogni lezione AWS Solutions Architect include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Tipi di volumi EBS: gp3, io2, st1, sc1
- Snapshot, crittografia e RAID EBS
- EFS: archiviazione condivisa dei file per Linux
- FSx: Windows File Server e Lustre