當前位置: 首頁>>技術教程>>正文


cloud – 我怎麽知道要在 EC2 上啟動什麽 Ubuntu AMI?

,

問題描述

當我想在 EC2 上啟動 Ubuntu 實例時,如何找到合適的實例?有數以千計的公共圖像的名稱中帶有 “Ubuntu”。我隻對運行官方 Ubuntu 映像感興趣。我現在如何確定哪個 AMI 是正確的?

最佳方法

Ubuntu 作為平台的成功以及 Ubuntu 對更新 AMI 的承諾意味著 Amazon EC2 上實際上有數千個映像,其名稱為 “ubuntu”。再加上 “Quick Start” 菜單上沒有 Ubuntu,這使得選擇正確的 AMI 成為一項重要的任務。

一些通用的 Ubuntu 信息

您可能已經知道這些項目,但我想向那些剛開始使用 Ubuntu 或 EC2 的人指出它們。

  • Ubuntu 每 6 個月發布一次。每個版本都有一個版本號和一個代號。這裏要注意的最重要的事情是每 2 年發布一次 LTS(長期支持)版本。如果您想要 5 年的穩定性和支持,請選擇 LTS 版本。如果您需要最新的軟件包,請選擇最新的版本。有關更多信息,請參閱維基百科條目。

  • 在撰寫本文時,Amazon EC2 中有 5 個 “regions”。每個區域代表一個地理位置。每個區域都有自己的 AMI ID。每個區域內有 2 種架構(x86_64、i386)和 2 種 “root store” 類型(EBS 或實例)。這意味著對於每個構建 Ubuntu 版本,我們生成 20 個 ami id。

最簡單:從您的 Web 瀏覽器中查找 AMI

您可以選擇用於選擇圖像的界麵。轉到:

  • http://cloud.ubuntu.com/ami 在此頁麵底部,您可以選擇區域、版本、拱門或 root-store。此處僅向您顯示最新版本。做出選擇後,您可以複製並粘貼 ami 編號,或者隻需單擊它即可直接轉到該 AMI 的 EC2 控製台啟動頁麵。

或者

  • https://cloud-images.ubuntu.com/server/releases/

    • 按編號或 code-name 選擇您的版本

    • 選擇 ‘release/’:我們保留曆史構建用於調試,但 ‘release/’ 目錄將始終是最新的。

    • 從表中選擇您的 AMI,然後單擊以在控製台中啟動或複製並粘貼命令行。

通過 Amazon EC2 控製台搜索

EC2 控製台是一種對 AMI 進行排序並選擇要啟動的圖形方式。要在此處啟動官方 Ubuntu 映像,請按照以下步驟操作。

  • 在左上角 ‘Navigation’ 下選擇您想要的區域 示例:“美國東部(弗吉尼亞州)”

  • 點擊 “AMIs” 不要點擊 “Launch Instance” [見下麵的注釋]

  • 對於 ‘Viewing’,選擇 “All Images”

  • 通過鍵入 ubuntu-images/將結果限製為 Ubuntu 穩定版映像 您應該盡可能寬地擴展 ‘AMI Name’ 字段(可能縮小其他字段)。

  • 通過附加 ‘.*’ 將結果限製為特定版本。例如:ubuntu-images/.*10.04

  • 通過附加 ‘.*i386’ 或 ‘.*amd64’ 將結果限製為給定的拱形 注意:如果您想運行 m1.small 或 c1.medium,則需要 ‘i386’。如果要運行 t1.micro,則需要選擇 ‘ebs’ 映像。

  • 按 AMI 名稱對結果進行排序並進行選擇 通過按 AMI 名稱排序,您可以更輕鬆地查看給定集合的最新 AMI。每個 AMI 都以 YYYYMMDD(年、月、日)格式的數字結尾。你想要最新的。

  • 驗證所有者是 099720109477!任何用戶都可以以任何名稱注冊 AMI。沒有什麽可以阻止惡意用戶注冊與上述搜索匹配的 AMI。所以,為了安全起見,你需要驗證ami的所有者是’099720109477’。

  • 如果 “Owner” 不適合您,請單擊右上角的 “Show/Hide” 並選擇要顯示的 “Owner”。

  • 單擊 AMI 名稱,然後單擊 ‘Launch’

筆記

  • HTTPS 訪問:在上述選項中,目前 https://cloud-images.ubuntu.com/server/releases/ 是唯一通過 https 提供數據的選項。如果您在查找 AMI id 時擔心潛在的“中間人”攻擊,這對您來說可能很重要。我已經請求 Ahmed [kim0 in irc] 支持 https 訪問 https://cloud.ubuntu.com/ami

  • Web 控製台 ‘Launch Instance’ 對話框:我在 ‘Launch Instance’ 對話框中沒有看到查看所有者 ID 的方法。因為如果是這樣,我建議不要使用該對話框來查找 “Community AMIs”。您根本無法從控製台中可靠地知道圖像的所有者是誰。對於高級用戶,我將很快在博客中介紹一種以編程方式查找 AMI 的方法 [提示]。

Source

次佳方法

新的和改進的版本。

# needed as json list returned by ubuntu site is mal-formed
remove_last_comma() { sed '
        $x;$G;/\(.*\),/!H;//!{$!d
    };  $!x;$s//\1/;s/^\n//'
}

curl -s "https://cloud-images.ubuntu.com/locator/ec2/releasesTable" \
    | remove_last_comma \
    | jq -c '.aaData[] | select(contains(["16.04", "us-west-2", "hvm:ebs"]))' \
    | grep -o 'ami-[a-z0-9]\+' | head -1

基本上抓取用於 ubuntu 的 ami 查找頁麵的原始數據,並使用 jq 解析出我想要的行,然後使用 grep 提取該值。比舊版本快得多。


——原版

這是另一個例子。我隻是寫這個來獲取最新的可信賴的 AMI id。它使用 aws cli 工具來查詢 API,使用名稱按日期順序排序以獲得最新的事實。

name=$(\
    aws --region us-west-2 ec2 describe-images --owners 099720109477 \
        --filters Name=root-device-type,Values=ebs \
            Name=architecture,Values=x86_64 \
            Name=name,Values='*hvm-ssd/ubuntu-trusty-14.04*' \
    | awk -F ': ' '/"Name"/ { print $2 | "sort" }' \
    | tr -d '",' | tail -1)

ami_id=$(\
    aws --region us-west-2 ec2 describe-images --owners 099720109477 \
        --filters Name=name,Values="$name" \
    | awk -F ': ' '/"ImageId"/ { print $2 }' | tr -d '",')

它分為兩部分。第一部分獲取滿足各種標準(ebs、x86_64 和名稱模式)的 ubuntu trusty 的所有 AMI。它拉出名稱並按它排序。名稱已格式化,以便按日期對它們進行排序,因此最後一個將是最新的。然後將該名稱分配給 ‘name’ 變量。

第二部分使用該名稱為具有該名稱的 AMI 請求 AMI ID。它僅解析 id 並將其分配給 ‘ami_id’。

第三種方法

使用 ruby​​ aws-sdk,您可以像這樣以編程方式發現最新的 Ubuntu AMI

    ec2 = AWS::EC2.new

    root_device_type = "ebs"
    ami_owner = '099720109477'
    ami_name = "*ubuntu/images/#{root_device_type}/ubuntu-precise-12.04*"  # hardcoded to ubuntu 12.04. You can apply your own criteria here.

    AWS.memoize do
      linux_ami = ec2.images.with_owner(ami_owner).
        filter("root-device-type", root_device_type).
        filter("architecture", "x86_64").        # use 'i386' for 32 bit and 'x86_64' for 64 bit
        filter("name", ami_name)
        # this only makes one request due to memoization
      begin
        return linux_ami.to_a.sort_by(&:name).last
      rescue
        abort red "Error discovering latest AMI. Terminating."
      end
    end

第四種方法

您可以使用 https://cloud-images.ubuntu.com/locator/ec2/,它提供基於版本、發布日期等的全麵比較。

搜索您想要的版本、地區並根據發布日期排序以獲取最新版本。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/12145.html,未經允許,請勿轉載。