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¶
- 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¶
- Launch: Dùng AMI tạo EC2 instance.
- Configure: Cài đặt, cấu hình, tinh chỉnh instance theo ý (cài app, đổi config, thêm volume…).
- Create image: Tạo AMI mới từ instance đã tinh chỉnh (bake lại trạng thái).
-
Launch again: Dùng AMI đã “bake” để tạo nhiều EC2 instance chuẩn cấu hình mong muốn.
-
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/xvdasẽ được dựng lên từ snapshot số 12345”, “ổ đĩa/dev/xvdfsẽ đượ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,…
- Device name (ví dụ:
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ốc → Tạ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/xvdalà ổ boot OS,/dev/xvdflà ổ 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:¶
-
EC2 Instance gốc
/dev/xvda(OS, app) → Snapshot A/dev/xvdf(Data) → Snapshot B
-
Tạo AMI
- AMI chứa:
- Block Device Mapping:
/dev/xvda→ Snapshot A/dev/xvdf→ Snapshot B
- Metadata (region, permission…)
- Block Device Mapping:
- AMI chứa:
-
Dùng AMI launch instance mới
- Snapshot A → Tạo volume mới → Gắn vào
/dev/xvdacủa instance mới - Snapshot B → Tạo volume mới → Gắn vào
/dev/xvdfcủa instance mới
- Snapshot A → Tạo volume mới → Gắn vào
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 ý¶
- 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.