Bỏ qua

21.AMI AmazonMachineImages

🖼️ Amazon Machine Image (AMI) – Kiến thức & kiến trúc đầy đủ EC2 (chuẩn đi thi và đi làm)


1. AMI là gì? Khái niệm cơ bản & ứng dụng

image

  • AMI (Amazon Machine Image):
  • Là “mẫu” cấu hình EC2 instance, chứa OS + ứng dụng + cấu hình + (tùy chọn) dữ liệu.
  • Dùng để tạo mới nhanh nhiều EC2 instance từ cùng một chuẩn cấu hình.
  • Khi bạn launch EC2, thực chất là launch từ một AMI.

  • Có 3 nguồn AMI:

    • AWS managed: Ví dụ Amazon Linux 2, Ubuntu, Red Hat…
    • Community AMI: Do cộng đồng/vendor cung cấp (CentOS, các bản custom…).
    • Marketplace AMI: AMI có kèm license phần mềm thương mại, trả phí thêm (có thể theo giờ).

2. Đặc điểm & vùng (region) của AMI

  • AMI là tài nguyên theo **region:**

    • Mỗi region có ID AMI riêng cho cùng một OS/distribution.
    • AMI chỉ dùng được trong region mà nó được tạo (nhưng có thể copy sang vùng khác).
  • Mỗi AMI có ID dạng:

    • ami-xxxxxxxxxxxxxxxxx (không giống nhau giữa các vùng).

3. Quyền truy cập AMI

  • Default: Private, chỉ account tạo được dùng.
  • Có thể chỉnh:
    • Public: Ai cũng dùng được.
    • Explicit: Chỉ định từng AWS Account được quyền dùng.

4. Vòng đời AMI: 4 bước chuẩn

image

  1. Launch: Dùng AMI tạo EC2 instance.
  2. Configure: Cài đặt, cấu hình, tinh chỉnh instance theo ý (cài app, đổi config, thêm volume…).
  3. Create image: Tạo AMI mới từ instance đã tinh chỉnh (bake lại trạng thái).
  4. Launch again: Dùng AMI đã “bake” để tạo nhiều EC2 instance chuẩn cấu hình mong muốn.

  5. Khái niệm “AMI baking”:

    • Cài đặt, cấu hình, kiểm tra trên một instance → tạo AMI từ đó → dùng AMI mới “bake” ra hàng loạt instance giống nhau.
    • Hiệu quả cho deploy production, tiết kiệm thời gian, giảm lỗi.

5. Kiến trúc AMI – Snapshot & Block Device Mapping

  • Khi tạo AMI từ một EC2 instance:

    • Tất cả EBS volume đang gắn sẽ được snapshot lại.
    • AMI không chứa trực tiếp dữ liệu, mà chỉ chứa thông tin:
      • Danh sách các snapshot ID.
      • Block device mapping: Liên kết snapshot với device id gốc (ví dụ: /dev/xvda, /dev/xvdf…).
      • Metadata quyền truy cập.
    • Khi launch instance từ AMI:
      • AWS dùng snapshot để tạo EBS volume mới theo device id gốc.
      • Attach các volume này vào instance mới.
  • Snapshot là incremental:

    • Lần đầu là full, các lần sau chỉ lưu thay đổi.
thêm rõ

1. Block device mapping: Liên kết snapshot với device id gốc (ví dụ: /dev/xvda, /dev/xvdf…)

  • Block device mapping nghĩa là “bản đồ thiết bị lưu trữ” — nó xác định ổ đĩa ảo nào sẽ gắn vào máy ảo và ổ đó lấy dữ liệu từ đâu.
  • Mỗi máy ảo có thể có nhiều ổ đĩa (ổ cứng ảo) như:

  • /dev/xvda (thường là ổ đĩa chính chứa hệ điều hành)

  • /dev/xvdf (ổ đĩa phụ để chứa dữ liệu khác)
  • Mỗi ổ đĩa ảo này được tạo ra dựa trên một snapshot cụ thể — tức là một bản sao lưu của ổ đĩa đó.
  • Block device mapping là liên kết giữa snapshot (bản sao lưu) và ổ đĩa ảo trên máy — nói cách khác, nó bảo “ổ đĩa /dev/xvda sẽ được dựng lên từ snapshot số 12345”, “ổ đĩa /dev/xvdf sẽ được dựng lên từ snapshot số 67890”.

2. Metadata quyền truy cập

  • Metadata là “thông tin về thông tin” — ở đây là dữ liệu về quyền sử dụng AMI.
  • Nó quy định ai được phép xem, dùng hoặc chia sẻ AMI đó.
  • Ví dụ:

  • AMI chỉ dành cho bạn hoặc nhóm người trong tài khoản của bạn.

  • Hoặc bạn cho phép mọi người công khai sử dụng AMI đó.
  • Metadata quyền truy cập giúp đảm bảo an toàn, không ai ngoài người được phép có thể tạo máy ảo từ AMI đó.

  • còn khi tạo Snapshot thông thường chưa có cái gì map vào nó cả, vì nó chỉ lưu dữ liệu của ổ đĩa tại thời điểm đó.

1. Khi bạn tạo AMI từ một EC2 instance:

  • AWS sẽ snapshot lại từng EBS volume gắn vào instance đó (ví dụ: ổ boot /dev/xvda, ổ data /dev/xvdf, ...).
  • AMI không lưu dữ liệu trực tiếp.
    AMI chỉ lưu thông tin ánh xạ (Block Device Mapping):
    • Device name (ví dụ: /dev/xvda)
    • Tương ứng với Snapshot ID (ví dụ: snap-abc123…)
    • Thêm metadata: region, permission, visibility,…

2. Khi bạn dùng AMI để tạo EC2 instance mới:

  • AWS sẽ dùng mapping trong AMI để biết cần tạo những EBS volume nào.
  • Với mỗi dòng mapping:
    • Snapshot gốcTạo EBS volume mới trong AZ bạn chọn
    • Gắn volume đó vào instance mới ở đúng device name (ví dụ: /dev/xvda là ổ boot OS, /dev/xvdf là ổ data).
  • Kết quả:
  • Instance mới có hệ điều hành, ứng dụng, dữ liệu như instance gốc, đúng vị trí volume.

Sơ đồ hóa lại quá trình:

  1. EC2 Instance gốc

    • /dev/xvda (OS, app) → Snapshot A
    • /dev/xvdf (Data) → Snapshot B
  2. Tạo AMI

    • AMI chứa:
      • Block Device Mapping:
        • /dev/xvda → Snapshot A
        • /dev/xvdf → Snapshot B
      • Metadata (region, permission…)
  3. Dùng AMI launch instance mới

    • Snapshot A → Tạo volume mới → Gắn vào /dev/xvda của instance mới
    • Snapshot B → Tạo volume mới → Gắn vào /dev/xvdf của instance mới

Kết luận

  • AMI không lưu dữ liệu, chỉ lưu mapping.
  • Khi launch, mapping sẽ được dùng để lấy snapshot và tạo volume mới, gắn đúng vị trí cho OS.
  • Instance mới giống hệt cấu hình volume của instance gốc tại thời điểm snapshot.

6. Tính năng nâng cao & lưu ý

image

  • Không thể chỉnh sửa trực tiếp AMI đã tạo.
    • Muốn thay đổi: launch từ AMI → cấu hình lại → tạo AMI mới.
  • AMI có thể copy sang region khác.
    • Khi copy, các snapshot liên quan cũng được copy.
  • Có thể chia sẻ AMI cho account khác hoặc public.
  • Chi phí:
    • AMI không tính phí riêng, nhưng snapshot bên dưới sẽ bị tính phí lưu trữ.
    • Dung lượng snapshot chỉ tính dựa trên data thực sự dùng trên EBS volume (không phải toàn bộ dung lượng cấp phát).

7. Một số thuật ngữ và mẹo thi

  • Block device mapping: Bản đồ ánh xạ giữa device id và snapshot id. Khi launch instance, AWS dùng ánh xạ này để attach đúng volume ra đúng device.
  • AMI baking: Tiêu chuẩn triển khai production (làm 1 → nhân bản n).
  • Chỉnh sửa AMI: Không chỉnh sửa, chỉ tạo mới từ instance đã tinh chỉnh.
  • AMI là tài nguyên theo region, muốn dùng ở vùng khác phải copy.
  • Chi phí snapshot phụ thuộc vào data dùng, không phải tổng size EBS.
  • AMI có thể dùng cho mọi AZ trong cùng region.

9. Tổng kết dễ nhớ

  • AMI = “mẫu” cấu hình EC2, gồm snapshot các volume + ánh xạ device.
  • AMI chỉ dùng trong 1 region, muốn dùng vùng khác phải copy.
  • Không chỉnh sửa trực tiếp AMI, chỉ tạo mới từ instance.
  • AMI baking = đóng gói cấu hình, triển khai hàng loạt instance giống nhau.
  • Chi phí: snapshot EBS (dữ liệu thực dùng).
  • Có thể chia sẻ AMI cho account khác hoặc public.

Ghi chú thêm
  • Bạn có thể dùng AMI marketplace để deploy instance kèm license phần mềm thương mại.
  • Khi launch instance từ AMI, snapshot sẽ tạo ra EBS volume mới ở AZ bạn chọn.
  • Nếu AMI có nhiều volume, tất cả volume sẽ snapshot riêng biệt và ánh xạ đúng device.
  • AMI baking rất hiệu quả để chuẩn hóa môi trường production/dev/test.
  • AMI đính kèm permission/metadata, không chứa data trực tiếp mà chỉ tham chiếu đến các snapshot.