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.