# 概念
AMI(Amazon Machine Image)是 Amazon EC2 中的一個重要概念,它是一個虛擬機器映像,包含了運行操作系統和預先安裝的應用程序所需的一切。AMI 是創建 EC2 實例的基礎,它可以被視為實例的模板或藍圖。
* **自定義配置**:可添加自己的軟體、配置、操作系統、監控,創造出屬於自己的EC2藍圖
* **啟動和配置時間更快**:在建立AMI時就已經把裡面所有的軟體配置打包好了,因此建立instance的速度會很快
* **有AZ區域限制**:在某AZ創建的AMI只能在該區域使用,但也是可以複製到別區
* **可獲取AMI的方式**:
* 公共 AMI:由 AWS 提供的
* 自己的 AMI:由自行創建和維護
* AWS Marketplace AMI:由其他人創建(並可能出售)的 AMI

要創建一個客製化的AMI步驟:
1. 在一個EC2 instance裡執行所有需要的程式以及下載軟體
2. 暫停instance
3. Bulild AMI 與此同是會建立EBS snapshot
4. 裡用bulid好的AMI去建立一個客製化的EC2 instance
# 實作
## 創建新的instance
創建一個新的instance
在進階的user data處複製code
```
#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
```

貼上後就可以創建了
這時候的創建成功需要一點時間
## 創建AMI
利用剛才創建的instance作為基底創建一個image

在剛才的instance點選右鍵找到create image

幫Image取名後
就可以直接創建

創建完成後可以在Image中的AMI列表裡找到它
但創建image需要花比較多的時間
需耐心等待
## 用AMI創建instance
當AMI創建成功後可以用兩種方式使用AMI創建instance
1. 在AMI頁面點選

2. 在instance頁面點選

這兩種方式都會進到同一個頁面

不同的是這次的Application and OS Images (Amazon Machine Image) 要選擇 My AMIs

在User Data 的地方加入
```
#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html
```
值得注意的是這裡沒有下載其他套件
因為在這個AMI已經存在 httpd
利用此AMI創建的instance就不需要再次下載
這樣也會讓創建的時間縮短

這只是一個簡單的AMI
若建立複雜的AMI就更能感受到它的便利性與強大