0Pricing
AWS Solutions Architect · บทเรียน

EFS: พื้นที่จัดเก็บไฟล์ร่วมสำหรับ Linux

เมานต์ระบบไฟล์ EFS ข้ามอินสแตนซ์ EC2 และฟังก์ชัน Lambda หลายรายการ กำหนดค่าโหมดประสิทธิภาพและปริมาณงาน และควบคุมการเข้าถึงด้วยกลุ่มความปลอดภัย

EFS: พื้นที่จัดเก็บไฟล์ร่วมสำหรับ Linux เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

Amazon EFS คืออะไร

Amazon Elastic File System (EFS) คือระบบไฟล์ POSIX แบบใช้ร่วมกันที่ยืดหยุ่นและมีการจัดการเต็มรูปแบบ สามารถเมานต์พร้อมกันโดยอินสแตนซ์ EC2 หลายพันรายการ ฟังก์ชัน Lambda และคอนเทนเนอร์ ECS/EKS แตกต่างจาก EBS (ซึ่งเชื่อมต่อกับอินสแตนซ์เดียว) ตรงที่ EFS มีระบบไฟล์ที่ใช้ร่วมกัน โดยไคลเอ็นต์ที่เชื่อมต่อทั้งหมดจะเห็นไฟล์เดียวกันแบบเรียลไทม์ ความจุจะเพิ่มและลดโดยอัตโนมัติ คุณจึงไม่ต้องจัดสรรพื้นที่จัดเก็บล่วงหน้า EFS เหมาะสำหรับการจัดการเนื้อหา คลังเก็บโค้ดที่ใช้ร่วมกัน ไดเรกทอรีหลัก และการวิเคราะห์ข้อมูล

คลาสพื้นที่จัดเก็บของ EFS

EFS มีคลาสพื้นที่จัดเก็บสองแบบ: EFS Standard (หลาย AZ มีความพร้อมใช้งานสูงสุด และมีเวลาแฝงต่ำกว่าหนึ่งมิลลิวินาที) และ EFS One Zone (AZ เดียว ค่าใช้จ่ายต่ำลง 47% และทนทานน้อยกว่าเล็กน้อย) ภายในแต่ละระดับยังมีรูปแบบการเข้าถึงไม่บ่อย (IA) ซึ่งจัดเก็บข้อมูลด้วยค่าใช้จ่ายต่ำกว่า Standard 92% สำหรับไฟล์ที่ไม่ได้เข้าถึงเป็นประจำ ความแตกต่างจาก S3 คือ EFS เป็นระบบไฟล์ POSIX แบบเต็มรูปแบบที่แอปพลิเคชันของคุณสามารถเมานต์ได้ ไม่ใช่พื้นที่จัดเก็บออบเจ็กต์

# 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=SharedFileSystemOneZone

โหมดประสิทธิภาพของ EFS

EFS มีโหมดประสิทธิภาพสองแบบ ได้แก่ General Purpose (ค่าเริ่มต้น แนะนำสำหรับงานส่วนใหญ่ — มีเวลาแฝงต่ำที่สุด เหมาะสำหรับการให้บริการเว็บ การจัดการเนื้อหา และไดเรกทอรีส่วนบุคคล) และ Max I/O (ออกแบบมาสำหรับงานที่ทำงานแบบขนานจำนวนมาก โดยมีการเชื่อมต่อพร้อมกันหลายพันรายการ แลกกับเวลาแฝงที่สูงขึ้นเล็กน้อย เหมาะสำหรับการประมวลผลข้อมูลขนาดใหญ่และสื่อ) ระบบจะกำหนดโหมดประสิทธิภาพขณะสร้าง และไม่สามารถเปลี่ยนแปลงได้หลังจากสร้างระบบไฟล์แล้ว สำหรับการสอบ SAA-C03 ให้เลือก Max I/O เฉพาะเมื่อจำเป็นต้องรองรับการเชื่อมต่อแบบขนานหลายพันรายการอย่างชัดเจน

# 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 throughput

โหมดอัตราการรับส่งข้อมูลของ EFS

EFS รองรับโหมดอัตราการรับส่งข้อมูลสามแบบ ได้แก่ Elastic (ปรับอัตราการรับส่งข้อมูลขึ้นลงโดยอัตโนมัติตามภาระงาน — แนะนำสำหรับกรณีใช้งานส่วนใหญ่ คิดค่าบริการตามปริมาณข้อมูลที่ถ่ายโอน) Bursting (อัตราการรับส่งข้อมูลเพิ่มตามขนาดพื้นที่จัดเก็บ สะสมและใช้เครดิตการเร่งความเร็วเช่นเดียวกับ EC2 ซีรีส์ T — มีอัตราพื้นฐานให้ใช้ฟรี) และ Provisioned (คุณระบุอัตราการรับส่งข้อมูลคงที่โดยไม่ขึ้นกับขนาดพื้นที่จัดเก็บ — มีประโยชน์เมื่อต้องการอัตราการรับส่งข้อมูลที่สม่ำเสมอเกินกว่าที่ Bursting รองรับ) โหมด Elastic เป็นค่าเริ่มต้นสมัยใหม่และไม่จำเป็นต้องวางแผนความจุอัตราการรับส่งข้อมูล

# 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 เป้าหมายและกลุ่มความปลอดภัย

หากต้องการเข้าถึงระบบไฟล์ EFS จากอินสแตนซ์ EC2 ให้สร้าง Mount เป้าหมาย ในแต่ละซับเน็ต (AZ) ที่อินสแตนซ์ของคุณทำงานอยู่ สำหรับ EFS Standard คุณควรสร้าง Mount เป้าหมายในทุก AZ ภายใน VPC — อินสแตนซ์ EC2 จะเชื่อมต่อกับ Mount เป้าหมายใน AZ เดียวกันเพื่อให้มีเวลาแฝงต่ำที่สุด Mount เป้าหมายมีกลุ่มความปลอดภัยที่ต้องอนุญาตการรับส่งข้อมูล NFS (พอร์ต 2049 ผ่าน TCP) จากกลุ่มความปลอดภัยของอินสแตนซ์ หากไม่มีกฎขาเข้านี้ การดำเนินการ mount จะหมดเวลา

# 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 SG

การ Mount EFS บน EC2 Linux

วิธีที่แนะนำสำหรับการ mount EFS บน EC2 คือใช้ Amazon EFS Mount Helper (แพ็กเกจ amazon-efs-utils) ซึ่งรองรับการเข้ารหัส TLS ระหว่างการส่งข้อมูลและการเชื่อมต่อใหม่โดยอัตโนมัติ คุณจะ mount โดยใช้ ID ของระบบไฟล์แทนที่อยู่ IP เพื่อให้ DNS แปลงไปยัง Mount เป้าหมายใน AZ ที่ใกล้ที่สุดโดยอัตโนมัติ สำหรับการ mount แบบถาวรที่ยังคงอยู่หลังการรีบูต ให้เพิ่มรายการ mount ลงใน /etc/fstab โดยใช้ตัวเลือก _netdev เพื่อให้แน่ใจว่าเครือข่ายพร้อมใช้งานก่อนทำการ 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/efs

จุดเข้าถึง EFS

EFS Access Points คือจุดเข้าถึงเฉพาะแอปพลิเคชันสำหรับเข้าสู่ระบบไฟล์ EFS ซึ่งบังคับใช้ผู้ใช้ POSIX กลุ่ม และไดเรกทอรีรากที่กำหนดไว้กับการเชื่อมต่อทั้งหมดที่ใช้จุดเข้าถึงนั้น วิธีนี้ช่วยแยกแอปพลิเคชันหลายรายการบนระบบไฟล์เดียวกันออกจากกันได้ — แอปพลิเคชัน A mount ผ่าน Access Point A และมองเห็นเฉพาะ /data/app-a/ ขณะที่แอปพลิเคชัน B ซึ่งใช้ Access Point B จะมองเห็นเฉพาะ /data/app-b/ Access Points เป็นวิธีที่แนะนำสำหรับการให้ฟังก์ชัน Lambda งาน ECS และพ็อด EKS เข้าถึงระบบไฟล์ EFS ที่ใช้ร่วมกันแบบแยกจากกัน

# 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-a

Intelligent-Tiering และวงจรชีวิตของ EFS

Intelligent-Tiering ของ EFS จะย้ายไฟล์ระหว่างคลาสพื้นที่จัดเก็บ Standard และ Standard-IA (Infrequent Access) โดยอัตโนมัติตามรูปแบบการเข้าถึง คุณกำหนดนโยบายวงจรชีวิตได้ เช่น ย้ายไฟล์ไปยัง IA หลังจากไม่มีการเข้าถึงเป็นเวลา 30 วัน เมื่อมีการเข้าถึงไฟล์ใน IA อีกครั้ง ระบบจะย้ายไฟล์กลับไปยัง Standard โดยอัตโนมัติ การดึงข้อมูลจาก IA มีค่าธรรมเนียมการดึงข้อมูลต่อ GB แต่มีค่าใช้จ่ายด้านพื้นที่จัดเก็บต่ำกว่ามาก แนวทางนี้คล้ายกับ S3 Intelligent-Tiering และไม่จำเป็นต้องจัดการตำแหน่งไฟล์ด้วยตนเอง

# 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-0abc1234def567890

EFS กับ Lambda และคอนเทนเนอร์

ฟังก์ชัน Lambda สามารถ mount ระบบไฟล์ EFS เพื่อใช้ไฟล์โมเดลขนาดใหญ่ ข้อมูลถาวร หรือการกำหนดค่าร่วมกันระหว่างการเรียกใช้แต่ละครั้งได้ — ช่วยแก้ข้อจำกัดของ /tmp ที่มีขนาด 512 MB-10 GB งาน ECS และ EKS จะ mount EFS ผ่านการอ้างสิทธิ์โวลุมถาวรโดยใช้ไดรเวอร์ EFS CSI ฟังก์ชัน Lambda หรือคอนเทนเนอร์ต้องอยู่ใน VPC ที่มี Mount เป้าหมาย และกลุ่มความปลอดภัยของ EFS ต้องอนุญาต NFS ขาเข้าจากกลุ่มความปลอดภัย VPC ของ Lambda หรือคอนเทนเนอร์ EFS + Lambda เป็นรูปแบบการใช้งานทั่วไปสำหรับแบ่งปันโมเดล ML ที่ฝึกแล้วระหว่างอินสแตนซ์ของฟังก์ชัน

# 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 กับ EBS

การสอบ SAA-C03 มักให้คุณเลือกใช้ระหว่าง EFS และ EBS EFS: ระบบไฟล์ POSIX ที่ใช้ร่วมกันได้ mount บนอินสแตนซ์ EC2 หลายรายการพร้อมกัน ความจุยืดหยุ่น รองรับ Lambda และคอนเทนเนอร์ ใช้ได้กับ Linux เท่านั้น (NFS) และมีค่าใช้จ่ายต่อ GB สูงกว่า EBS: อุปกรณ์แบบบล็อก เชื่อมต่อกับอินสแตนซ์ EC2 เดียว (ยกเว้น io1/io2 Multi-Attach) มีขนาดที่จัดสรรไว้ตายตัว ใช้ได้ทั้ง Linux และ Windows ไม่สามารถเข้าถึงโดย Lambda ได้โดยตรง และมีค่าใช้จ่ายต่อ GB ต่ำกว่า หากสถานการณ์ระบุว่า “หลายอินสแตนซ์ต้องใช้ไฟล์ชุดเดียวกัน” คำตอบคือ EFS

การเข้ารหัส EFS

EFS รองรับการเข้ารหัสขณะจัดเก็บ (เปิดใช้ขณะสร้างระบบไฟล์โดยใช้คีย์ KMS — ไม่สามารถเปลี่ยนแปลงได้หลังการสร้าง) และการเข้ารหัสระหว่างการส่งข้อมูล (การเข้ารหัส TLS เมื่อใช้ EFS Mount Helper พร้อมตัวเลือก tls) AWS แนะนำให้เปิดใช้ทั้งสองแบบ คุณสามารถบังคับใช้การเข้ารหัสระหว่างการส่งข้อมูลด้วยนโยบายตามทรัพยากรของ EFS ซึ่งปฏิเสธการ mount หากไม่มี TLS โดยกำหนดให้มีเงื่อนไข elasticfilesystem:ClientRootAccess และ 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 = true

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า EFS คือระบบไฟล์ POSIX ที่ใช้ร่วมกันได้ ซึ่งสามารถ mount บนอินสแตนซ์หลายพันรายการและฟังก์ชัน Lambda พร้อมกันได้ด้วยความจุยืดหยุ่น Access Points ช่วยแยกการเข้าถึงของแต่ละแอปพลิเคชันด้วยการบังคับใช้ผู้ใช้ POSIX และไดเรกทอรีราก ส่วน Intelligent-Tiering จะย้ายไฟล์ที่ไม่ค่อยมีการเข้าถึงไปยังคลาสพื้นที่จัดเก็บ IA ที่มีค่าใช้จ่ายต่ำกว่าโดยอัตโนมัติ บทถัดไปเราจะศึกษา FSx for Windows File Server และ Lustre สำหรับงานเฉพาะทาง

คำถามที่พบบ่อย

บทเรียน “EFS: พื้นที่จัดเก็บไฟล์ร่วมสำหรับ Linux” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “EFS: พื้นที่จัดเก็บไฟล์ร่วมสำหรับ Linux” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “EFS: พื้นที่จัดเก็บไฟล์ร่วมสำหรับ Linux”

เมานต์ระบบไฟล์ EFS ข้ามอินสแตนซ์ EC2 และฟังก์ชัน Lambda หลายรายการ กำหนดค่าโหมดประสิทธิภาพและปริมาณงาน และควบคุมการเข้าถึงด้วยกลุ่มความปลอดภัย คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “EFS: พื้นที่จัดเก็บไฟล์ร่วมสำหรับ Linux” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม

ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ประเภทวอลุ่ม EBS: gp3, io2, st1, sc1
  2. สแนปช็อต EBS การเข้ารหัส และ RAID
  3. EFS: พื้นที่จัดเก็บไฟล์ร่วมสำหรับ Linux
  4. FSx: เซิร์ฟเวอร์ไฟล์ Windows และ Lustre
← กลับไปที่ AWS Solutions Architect