AWS Learning
Compute

Amazon Machine Image (AMI)

Amazon Machine Image, Custom AMIs, Sharing, Lifecycle

AMI là gì?

Amazon Machine Image (AMI) là một template/metadata dùng để launch EC2 instance.

⚠️ Quan trọng: AMI không chứa data thật - nó chỉ chứa metadata và trỏ đến các EBS Snapshots.

AMI bao gồm

  • Metadata: OS type, architecture, virtualization type
  • Block device mapping: Định nghĩa các snapshots sẽ dùng để tạo volumes khi launch
  • Launch permissions: Xác định ai có quyền sử dụng AMI

📌 Bắt buộc: Phải chỉ định AMI khi launch instance. AMI phải tương thích với instance type đã chọn.

AMI vs Volume vs Snapshot

┌─────────────────────────────────────────────────────────────────┐
│                         AMI                                     │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │  METADATA (không phải data thật)                          │  │
│  │  • OS type: Amazon Linux 2023                             │  │
│  │  • Architecture: x86_64                                   │  │
│  │  • Virtualization: HVM                                    │  │
│  │  • Block device mapping: root = snap-abc, data = snap-xyz │  │
│  │  • Launch permissions: account 123456789012               │  │
│  └───────────────────────────────────────────────────────────┘  │
│                              │                                  │
│                              ▼                                  │
│                     Trỏ đến Snapshots                           │
│           ┌─────────────────┴─────────────────┐                 │
│           ▼                                   ▼                 │
│   ┌──────────────┐                   ┌──────────────┐           │
│   │  Snapshot A  │                   │  Snapshot B  │           │
│   │  (Root: OS)  │                   │  (Data disk) │           │
│   │  Lưu trong S3│                   │  Lưu trong S3│           │
│   └──────────────┘                   └──────────────┘           │
│         │                                   │                   │
│         │      (DATA THẬT Ở ĐÂY)            │                   │
└─────────┴───────────────────────────────────┴───────────────────┘
Thành phầnLà gì?Lưu gì?
EBS VolumeỔ đĩa ảo (đang chạy)Data thật, gắn vào EC2 instance
SnapshotBản backup của VolumeData thật, lưu trong S3 (compressed)
AMITemplate/RecipeChỉ lưu metadata + trỏ đến snapshots

Flow tạo AMI và Launch Instance

Khi tạo AMI từ Instance

EC2 Instance
├── EBS Volume 1 (root): /dev/xvda - 50GB, đang dùng 20GB
└── EBS Volume 2 (data): /dev/xvdb - 200GB, đang dùng 100GB


         ▼ aws ec2 create-image
         
Bước 1: AWS tự động tạo SNAPSHOTS cho mỗi volume
├── snap-111 ← copy từ Volume 1 → ~15-20GB (compressed)
└── snap-222 ← copy từ Volume 2 → ~70-90GB (compressed)

        └── Lưu vào S3 (incremental, compressed)

Bước 2: Tạo AMI (chỉ là metadata)
AMI = {
    "ImageId": "ami-xxx",
    "Architecture": "x86_64",
    "BlockDeviceMappings": [
        "/dev/xvda" → snap-111 (size: 50GB),
        "/dev/xvdb" → snap-222 (size: 200GB)
    ]
}

Snapshot Size vs Volume Size

VolumeDung lượngData thựcSnapshot size
Root50GB20GB~15-20GB (compressed)
Data200GB100GB~70-90GB (compressed)

📌 Snapshot chỉ lưu blocks có data, bỏ qua blocks trống + có compression.

Khi Launch Instance từ AMI

AMI (snap-111, snap-222)

        ├──► Launch Instance 1
        │    ├── vol-aaa (MỚI, 50GB từ snap-111)
        │    └── vol-bbb (MỚI, 200GB từ snap-222)

        ├──► Launch Instance 2
        │    ├── vol-ccc (MỚI, 50GB từ snap-111)
        │    └── vol-ddd (MỚI, 200GB từ snap-222)

        └──► Launch Instance 3
             ├── vol-eee (MỚI, 50GB từ snap-111)
             └── vol-fff (MỚI, 200GB từ snap-222)

📌 Mỗi instance = Volumes MỚI riêng biệt, độc lập với nhau.

Terminate Instance gốc thì sao?

┌─────────────────────────────────────────────────────────────────────────────┐
│ NGÀY 1: Tạo EC2 Instance                                                    │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│   EC2 Instance (i-111)                                                      │
│   ├── vol-aaa (root, 50GB)  ← DeleteOnTermination = true (mặc định)         │
│   └── vol-bbb (data, 200GB) ← DeleteOnTermination = false                   │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────────────┐
│ NGÀY 2: Tạo AMI                                                             │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│   aws ec2 create-image --instance-id i-111 --name "MyAMI"                   │
│                                    │                                        │
│                                    ▼                                        │
│   AWS tự động tạo Snapshots:                                                │
│   ├── snap-111 ← copy từ vol-aaa (root) ──► Lưu vào S3                      │
│   └── snap-222 ← copy từ vol-bbb (data) ──► Lưu vào S3                      │
│                                    │                                        │
│                                    ▼                                        │
│   AMI (ami-xxx) = {                                                         │
│       "BlockDeviceMappings": [                                              │
│           "/dev/xvda" → snap-111,                                           │
│           "/dev/xvdb" → snap-222                                            │
│       ]                                                                     │
│   }                                                                         │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────────────┐
│ NGÀY 3: Terminate Instance                                                  │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│   aws ec2 terminate-instances --instance-ids i-111                          │
│                                                                             │
│   ├── i-111:    TERMINATED ❌                                               │
│   ├── vol-aaa:  BỊ XÓA ❌ (DeleteOnTermination=true)                        │
│   ├── vol-bbb:  VẪN CÒN ✅ (DeleteOnTermination=false) ← orphan volume      │
│   ├── snap-111: VẪN CÒN ✅ (độc lập trong S3)                               │
│   ├── snap-222: VẪN CÒN ✅ (độc lập trong S3)                               │
│   └── ami-xxx:  VẪN CÒN ✅ (trỏ đến snap-111, snap-222)                     │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────────────┐
│ NGÀY 4: Launch Instance mới từ AMI                                          │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│   aws ec2 run-instances --image-id ami-xxx                                  │
│                                    │                                        │
│                                    ▼                                        │
│   AWS đọc AMI → tạo volumes MỚI từ snapshots:                               │
│   ├── snap-111 ──► vol-ccc (MỚI, 50GB root)                                 │
│   └── snap-222 ──► vol-ddd (MỚI, 200GB data)                                │
│                                    │                                        │
│                                    ▼                                        │
│   EC2 Instance MỚI (i-222)                                                  │
│   ├── vol-ccc (root) ← hoàn toàn độc lập với vol-aaa (đã xóa)               │
│   └── vol-ddd (data) ← hoàn toàn độc lập với vol-bbb                        │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

📌 Snapshot là bản copy độc lập trong S3, không phụ thuộc vào volume gốc.

Snapshot lưu trong S3 nhưng bạn không thấy được

┌─────────────────────────────────┐     ┌─────────────────────────────────┐
│  S3 (AWS managed, internal)     │  ≠  │  S3 Bucket của bạn              │
├─────────────────────────────────┤     ├─────────────────────────────────┤
│                                 │     │                                 │
│  Snapshots lưu ở đây            │     │  Bạn KHÔNG thấy snapshots       │
│  (bạn KHÔNG access được)        │     │  ở đây                          │
│                                 │     │                                 │
└─────────────────────────────────┘     └─────────────────────────────────┘


   Chỉ xóa được qua EC2 Console/CLI
   KHÔNG xóa được qua S3

Xóa Snapshot thì sao?

Trường hợpKết quả
Xóa snapshot trong khi AMI vẫn trỏ đến❌ AMI bị hỏng, launch sẽ fail
Deregister AMI trước, rồi xóa snapshot✅ OK
# Quy trình xóa đúng cách
# Bước 1: Deregister AMI trước
aws ec2 deregister-image --image-id ami-xxx
 
# Bước 2: Rồi mới xóa snapshots
aws ec2 delete-snapshot --snapshot-id snap-111
aws ec2 delete-snapshot --snapshot-id snap-222

⚠️ AWS không tự động xóa snapshots khi deregister AMI → phải xóa thủ công để tránh phí storage.

AMI lưu gì từ Instance?

Những gì ĐƯỢC lưu (trên EBS volumes)

Thành phầnVí dụ
Hệ điều hànhAmazon Linux, Ubuntu, Windows
Phần mềm đã càinginx, Docker, Java, Python...
Cấu hình hệ thống/etc/nginx/nginx.conf, systemd services
Files trên diskCode, scripts, database files
User accountsUsers tạo trong OS

Những gì KHÔNG được lưu

Thành phầnLý do
Instance typeChọn lại khi launch
Security GroupsChọn lại khi launch
IAM RoleChọn lại khi launch
Key pairChọn lại khi launch
Network settingsIP, subnet - chọn lại khi launch
RAM stateChỉ lưu disk, không lưu memory
Instance Store dataEphemeral - mất khi tạo AMI

Đặc điểm của AMI

AMI được phân loại theo các đặc điểm sau:

Đặc điểmMô tả
RegionAMI chỉ hoạt động trong Region cụ thể (có thể copy sang Region khác)
Operating SystemLinux, Windows, macOS
Processor Architecture32-bit, 64-bit (x86), 64-bit (Arm)
Root Volume TypeEBS-backed hoặc Instance Store-backed
Virtualization TypeHVM hoặc PV (Paravirtual)

Nguồn AMI

Bạn có thể sử dụng AMI từ nhiều nguồn:

  1. AWS-provided AMIs: AMIs do AWS cung cấp (Amazon Linux, Ubuntu, Windows Server...)
  2. AWS Marketplace: AMIs từ các vendor bên thứ ba (có thể mất phí)
  3. Community AMIs: AMIs công khai từ cộng đồng
  4. Shared AMIs: AMIs được chia sẻ từ tài khoản AWS khác
  5. Custom AMIs: AMIs tự tạo từ EC2 instances của bạn

Launch Permissions

LoạiMô tả
PublicTất cả AWS accounts đều có thể sử dụng
ExplicitChỉ các accounts/organizations được chỉ định mới có quyền
ImplicitChủ sở hữu AMI tự động có quyền sử dụng

Root Volume Type

AMI được phân loại theo loại root volume khi launch instance:

                         AMI

          ┌───────────────┴───────────────┐
          ▼                               ▼
   EBS-backed AMI              Instance Store-backed AMI
          │                               │
          ▼                               ▼
   Khi launch:                     Khi launch:
   Root volume = EBS               Root volume = Instance Store

Sự khác biệt chính: Root data nằm ở đâu?

EBS-backed: Root data nằm BÊN NGOÀI instance (EBS server riêng)
┌──────────────┐          ┌──────────────┐
│   Instance   │◄─Network─│  EBS Volume  │  ← Root data ở ĐÂY
│   (chạy app) │          │  (root /)    │
└──────────────┘          └──────────────┘


Instance Store-backed: Root data nằm BÊN TRONG instance (local disk)
┌────────────────────────────────────┐
│   Instance                         │
│   ┌──────────────────────────────┐ │
│   │  Instance Store (root /)     │ │
│   └──────────────────────────────┘ │
└────────────────────────────────────┘

Hình dung trong Data Center

┌───────────────────────────────────────────────────────────────────────────────────┐
│                    AWS Data Center                                                │
│                                                                                   │
│  EBS-backed Instance:                                                             │
│  ┌─────────────────┐           ┌─────────────────┐                                │
│  │ Physical Server │           │ EBS Storage                       │              │
│  │ ┌─────────────┐ │           │ Server                            │              │
│  │ │EC2 Instance │ │◄─Network─►│ ┌─────────────┐                   │              │
│  │ │(chạy app)   │ │           │ │ EBS Volume  │                   │              │
│  │ └─────────────┘ │           │ │ (root data) │                   │              │
│  └─────────────────┘           │ └─────────────┘                   │              │
│                                └─────────────────┘                                │
│  → Stop instance = Server rảnh, EBS Volume VẪN CÒN                                │
│                                                                                   │
├───────────────────────────────────────────────────────────────────────────────────┤
│                                                                                   │
│  Instance Store-backed Instance:                                                  │
│  ┌─────────────────────────────────┐                                              │
│  │ Physical Server                                   │                            │
│  │                 ┌───────────┐                                   │              │
│  │                 │ EC2 Instance                │                 │              │
│  │ │ ┌─────────────────────────┐ │                   │                            │
│  │ │ │ Local SSD (root data)   │ │ │ ← Data trong server                          │
│  │ │ └─────────────────────────┘ │                   │                            │
│  │                 └───────────┘                                   │              │
│  └─────────────────────────────────┘                                              │
│  → Stop instance = Server giải phóng = Local SSD XÓA = MẤT DATA                   │
│                                                                                   │
└───────────────────────────────────────────────────────────────────────────────────┘

AMI type chỉ quyết định ROOT volume

EBS-backed AMI:
├── Root volume: BẮT BUỘC là EBS
└── Data volumes: Tuỳ bạn chọn (EBS hoặc Instance Store)


Instance Store-backed AMI:
├── Root volume: BẮT BUỘC là Instance Store
└── Data volumes: Tuỳ bạn chọn (EBS hoặc Instance Store)

Ví dụ: Dùng EBS-backed AMI nhưng vẫn có thể attach Instance Store cho data:

┌─────────────────────────────────────────────┐
│  EC2 Instance (từ EBS-backed AMI)           │
│                                             │
│  ├── /dev/xvda (root): EBS 50GB             │  ← Bắt buộc EBS
│  ├── /dev/xvdb (data): EBS 200GB            │  ← Tuỳ chọn
│  └── /dev/nvme1n1: Instance Store 75GB      │  ← Tuỳ chọn (cache, temp)
│                                             │
└─────────────────────────────────────────────┘

Khi nào dùng Instance Store?

Dùng EBSDùng Instance Store
Database, files quan trọngCache, temp files
Cần data còn sau khi stopChấp nhận mất data
Cần backup (snapshot)Cần I/O cực nhanh (local NVMe)

📌 Instance Store cho data volume (cache, logs) vẫn phổ biến. Nhưng Instance Store cho root volume thì gần như không ai dùng nữa.

So sánh chi tiết

Đặc điểmEBS-backedInstance Store-backed
Root data nằm ởServer riêng (EBS)Trong instance (local)
Boot time< 1 phút< 5 phút
Stop instance✅ Được, data còn❌ Không stop được
Terminate instance✅ Có thể giữ root volume❌ Mất hết
Thay đổi instance type✅ Có thể (khi stopped)❌ Không thể
Chi phíInstance + EBS + SnapshotInstance + S3 storage

⚠️ Lưu ý: Instance Store-backed AMIs được coi là end of life và chỉ hỗ trợ trên các instance types cũ: C1, C3, D2, I2, M1, M2, M3, R3, X1.

Thực tế hiện nay dùng gì?

┌─────────────────────────────────────────────────────────────────┐
│                     THỰC TẾ 2024+                               │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   EBS-backed AMI: 99% ████████████████████████████████████████  │
│                                                                 │
│   Instance Store-backed AMI: 1% █                               │
│   (chỉ còn legacy systems)                                      │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Tại sao EBS-backed thắng tuyệt đối?

Lý doChi tiết
Stop/Start đượcTắt máy ban đêm tiết kiệm tiền, data vẫn còn
Dễ backupTạo snapshot dễ dàng
Thay đổi instance typeNâng/hạ cấu hình linh hoạt
ReliabilityServer lỗi → data vẫn an toàn ở EBS
AWS khuyến nghịTất cả AMI mới đều là EBS-backed

Khi nào vẫn dùng Instance Store?

Trường hợpVí dụ
Data volume (không phải root)Cache Redis, temp files, logs
Stateless applicationsWorkers xử lý job, không cần lưu state
Cần I/O cực caoBig data processing, local NVMe SSD

📌 Kết luận: Khi chọn AMI trên AWS Console (Amazon Linux, Ubuntu, Windows...), mặc định đều là EBS-backed. Bạn không cần lo về Instance Store-backed AMI.

So sánh Cost

Chi phí trực tiếp:

EBS-backedInstance Store
Instance costTrả theo giờ chạyTrả theo giờ chạy
Storage costTrả thêm EBS ($/GB/tháng)Miễn phí (đã gồm trong instance)
Snapshot costTrả thêm ($/GB/tháng)Không có snapshot

Nhưng thực tế phức tạp hơn:

Instance Store chỉ có trên một số instance types (có chữ "d"):
├── m5d, m6id, c5d, c6id, i3, i4i, d2, d3...
└── Những instance này ĐẮTT HƠN instance thường

Ví dụ (us-east-1):
┌────────────────┬─────────────┬──────────────────┐
│ Instance Type  │ Giá/giờ     │ Instance Store   │
├────────────────┼─────────────┼──────────────────┤
│ m5.large       │ $0.096      │ Không có         │
│ m5d.large      │ $0.113      │ 75GB NVMe SSD    │
└────────────────┴─────────────┴──────────────────┘

Chênh lệch: $0.017/giờ = ~$12/tháng
Trong khi 75GB EBS gp3 chỉ ~$6/tháng

Stop instance ảnh hưởng cost:

EBS-backedInstance Store-backed
Stop được không?✅ Được❌ Không
Khi StopKhông trả instance cost, vẫn trả EBSKhông stop được
Tiết kiệm ban đêm/weekend✅ Stop để tiết kiệm❌ Phải chạy 24/7 hoặc mất data

Ví dụ thực tế:

Scenario: Server chạy 8 tiếng/ngày (giờ làm việc)

EBS-backed (m5.large + 50GB EBS):
├── Instance: $0.096 × 8h × 30 ngày = $23
├── EBS 50GB: $4/tháng
└── Total: ~$27/tháng

Instance Store-backed (phải chạy 24/7 vì không stop được):
├── Instance: $0.113 × 24h × 30 ngày = $81
└── Total: ~$81/tháng (ĐẮT HƠN 3 LẦN!)

Kết luận về cost:

Trường hợpRẻ hơn
Server chạy 24/7, cần I/O caoInstance Store có thể rẻ hơn
Server có thể Stop (dev, staging)EBS-backed rẻ hơn nhiều
Cần flexibilityEBS-backed (Stop/Start thoải mái)

📌 Thực tế: EBS-backed thường rẻ hơn vì có thể Stop instance khi không dùng.

Virtualization Types

AMI chứa thông tin virtualization type - cách AWS ảo hóa phần cứng để chạy instance:

AMI metadata:
{
    "ImageId": "ami-xxx",
    "Architecture": "x86_64",
    "VirtualizationType": "hvm",   ← LƯU Ở ĐÂY
    "RootDeviceType": "ebs",
    ...
}

2 loại Virtualization

┌─────────────────────────────────────────────────────────────────┐
│  HVM (Hardware Virtual Machine)                                 │
├─────────────────────────────────────────────────────────────────┤
│  Physical Hardware                                              │
│        │                                                        │
│        ▼                                                        │
│  ┌───────────────┐                                              │
│  │  Hypervisor   │  ← Ảo hóa TOÀN BỘ phần cứng                  │
│  └───────────────┘                                              │
│        │                                                        │
│        ▼                                                        │
│  ┌───────────────┐                                              │
│  │ EC2 Instance  │  ← Nghĩ mình đang chạy trên máy thật         │
│  │ (Guest OS)    │    Không cần sửa đổi OS                      │
│  └───────────────┘                                              │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│  PV (Paravirtual) - Legacy                                      │
├─────────────────────────────────────────────────────────────────┤
│  Physical Hardware                                              │
│        │                                                        │
│        ▼                                                        │
│  ┌───────────────┐                                              │
│  │  Hypervisor   │  ← Ảo hóa MỘT PHẦN                           │
│  └───────────────┘                                              │
│        │                                                        │
│        ▼                                                        │
│  ┌───────────────┐                                              │
│  │ EC2 Instance  │  ← Biết mình đang chạy ảo                    │
│  │ (Modified OS) │    OS phải được sửa đổi để "hợp tác"         │
│  └───────────────┘                                              │
└─────────────────────────────────────────────────────────────────┘

Ảnh hưởng khi chọn AMI

AMI typeLaunch được trên
HVMTất cả instance types hiện tại
PVChỉ C1, M1, M2, M3, T1 (cũ)

So sánh

HVMPV
OS biết đang ảo hóa?Không (nghĩ là máy thật)Có (phải sửa đổi OS)
Enhanced Networking✅ Có❌ Không
GPU support✅ Có❌ Không
Instance typesTất cả hiện tạiChỉ cũ

Thực tế hiện nay

2024+: 
├── HVM: 100% █████████████████████████████████████████
└── PV:  0%   (không ai dùng nữa)

📌 Kết luận: Tất cả AMI hiện tại đều là HVM. Bạn không cần chọn hay lo về virtualization type - AWS tự động dùng HVM.

AMI Lifecycle

┌─────────────────────────────────────────────────────────────────┐
│                        AMI LIFECYCLE                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐  │
│   │  Create  │───▶│ Register │───▶│   Use    │───▶│Deregister│  │
│   │   AMI    │    │   AMI    │    │   AMI    │    │   AMI    │  │
│   └──────────┘    └──────────┘    └──────────┘    └──────────┘  │
│        │                               │                        │
│        │                               ▼                        │
│        │                         ┌──────────┐                   │
│        │                         │   Copy   │                   │
│        │                         │ to other │                   │
│        │                         │  Region  │                   │
│        │                         └──────────┘                   │
│        │                               │                        │
│        ▼                               ▼                        │
│   ┌──────────┐                   ┌──────────┐                   │
│   │  Share   │                   │  Launch  │                   │
│   │  with    │                   │Instances │                   │
│   │ Others   │                   └──────────┘                   │
│   └──────────┘                                                  │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Tạo Custom AMI

Từ EC2 Instance

# Bước 1: Tạo AMI từ instance đang chạy
aws ec2 create-image \
    --instance-id i-1234567890abcdef0 \
    --name "My-Custom-AMI" \
    --description "AMI created from my web server" \
    --no-reboot
 
# Bước 2: Kiểm tra trạng thái AMI
aws ec2 describe-images --image-ids ami-0123456789abcdef0
Tham sốMô tả
--no-rebootKhông reboot instance khi tạo AMI (có thể gây inconsistency)
--rebootReboot instance để đảm bảo file system consistency (mặc định)

Best Practices khi tạo AMI

  1. Clean up trước khi tạo AMI:

    • Xóa temporary files, logs
    • Xóa SSH keys, credentials
    • Clear bash history
  2. Sử dụng --reboot để đảm bảo data consistency

  3. Tag AMI với metadata hữu ích (version, purpose, owner)

Copy AMI giữa các Regions

aws ec2 copy-image \
    --source-image-id ami-0123456789abcdef0 \
    --source-region us-east-1 \
    --region ap-southeast-1 \
    --name "My-AMI-Copy-Singapore"

📌 AMI copy là asynchronous. Snapshot được copy trước, sau đó AMI mới được register.

Share AMI

Share với account cụ thể

# Thêm launch permission cho account khác
aws ec2 modify-image-attribute \
    --image-id ami-0123456789abcdef0 \
    --launch-permission "Add=[{UserId=123456789012}]"
 
# Xem launch permissions hiện tại
aws ec2 describe-image-attribute \
    --image-id ami-0123456789abcdef0 \
    --attribute launchPermission

Make AMI public

aws ec2 modify-image-attribute \
    --image-id ami-0123456789abcdef0 \
    --launch-permission "Add=[{Group=all}]"

⚠️ Cảnh báo: Không public AMI chứa credentials, keys, hoặc data nhạy cảm.

AMI Billing

Thành phầnChi phí
AMI storageEBS Snapshot storage costs
Data transferKhi copy AMI giữa các Regions
Marketplace AMIsCó thể có phí license từ vendor

Tìm AMI

Qua Console

  1. EC2 Console → AMIs (sidebar)
  2. Chọn filter: Owned by me, Public images, hoặc Private images
  3. Sử dụng search filters: Architecture, Root device type, Virtualization type

Qua CLI

# Tìm Amazon Linux 2023 AMIs
aws ec2 describe-images \
    --owners amazon \
    --filters "Name=name,Values=al2023-ami-*" \
              "Name=architecture,Values=x86_64" \
              "Name=virtualization-type,Values=hvm" \
    --query 'Images | sort_by(@, &CreationDate) | [-1]'
 
# Tìm Ubuntu AMIs
aws ec2 describe-images \
    --owners 099720109477 \
    --filters "Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-*-22.04-amd64-server-*" \
    --query 'Images | sort_by(@, &CreationDate) | [-1].ImageId'

Deregister AMI

# Bước 1: Deregister AMI
aws ec2 deregister-image --image-id ami-0123456789abcdef0
 
# Bước 2: Xóa snapshot liên quan (tuỳ chọn)
aws ec2 delete-snapshot --snapshot-id snap-0123456789abcdef0

📌 Deregister AMI không tự động xóa EBS snapshots. Bạn phải xóa thủ công để tránh chi phí storage.

Liên kết với các dịch vụ khác

  • EC2 - Launch instances từ AMI
  • EBS - Root volume và snapshots cho EBS-backed AMIs
  • IAM - Permissions để tạo, share, và sử dụng AMIs

Nguồn tham khảo: