# 概念 AMI(Amazon Machine Image)是 Amazon EC2 中的一個重要概念,它是一個虛擬機器映像,包含了運行操作系統和預先安裝的應用程序所需的一切。AMI 是創建 EC2 實例的基礎,它可以被視為實例的模板或藍圖。 * **自定義配置**:可添加自己的軟體、配置、操作系統、監控,創造出屬於自己的EC2藍圖 * **啟動和配置時間更快**:在建立AMI時就已經把裡面所有的軟體配置打包好了,因此建立instance的速度會很快 * **有AZ區域限制**:在某AZ創建的AMI只能在該區域使用,但也是可以複製到別區 * **可獲取AMI的方式**: * 公共 AMI:由 AWS 提供的 * 自己的 AMI:由自行創建和維護 * AWS Marketplace AMI:由其他人創建(並可能出售)的 AMI ![](https://hackmd.io/_uploads/r1Q3SZVFh.png) 要創建一個客製化的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 ``` ![](https://hackmd.io/_uploads/BytQXrKYh.png) 貼上後就可以創建了 這時候的創建成功需要一點時間 ## 創建AMI 利用剛才創建的instance作為基底創建一個image ![](https://hackmd.io/_uploads/BJUYEHtYh.png) 在剛才的instance點選右鍵找到create image ![](https://hackmd.io/_uploads/BkUyrrKY3.png) 幫Image取名後 就可以直接創建 ![](https://hackmd.io/_uploads/ByWXBSYYn.png) 創建完成後可以在Image中的AMI列表裡找到它 但創建image需要花比較多的時間 需耐心等待 ## 用AMI創建instance 當AMI創建成功後可以用兩種方式使用AMI創建instance 1. 在AMI頁面點選 ![](https://hackmd.io/_uploads/rkJ3IStF2.png) 2. 在instance頁面點選 ![](https://hackmd.io/_uploads/BkMOvBtt2.png) 這兩種方式都會進到同一個頁面 ![](https://hackmd.io/_uploads/r1LhPSKtn.png) 不同的是這次的Application and OS Images (Amazon Machine Image) 要選擇 My AMIs ![](https://hackmd.io/_uploads/B1a8dHYt3.png) 在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就不需要再次下載 這樣也會讓創建的時間縮短 ![](https://hackmd.io/_uploads/r1_ztrtt3.png) 這只是一個簡單的AMI 若建立複雜的AMI就更能感受到它的便利性與強大