回答:
プラットフォームとしてのUbuntuの成功とAMIの更新に対するUbuntuのコミットメントは、Amazon EC2に「ubuntu」という名前の文字通り何千ものイメージがあることを意味します。「クイックスタート」メニューにUbuntuが存在しないことと相まって、適切なAMIを選択するのは簡単な作業ではありません。
Ubuntuに関する一般的な情報
すでにこれらの項目を知っているかもしれませんが、UbuntuまたはEC2を使い始めたばかりの人のために指摘したいと思います。
最も簡単:WebブラウザからAMIを見つける
画像を選択するためのインターフェースを選択できます。次のいずれかに移動します。
このページの下部で、リージョン、リリース、アーチ、またはルートストアを選択できます。ここには最新のリリースのみが表示されます。選択したら、AMI番号をコピーして貼り付けるか、クリックしてそのAMIのEC2コンソール起動ページに直接移動できます。
または
Amazon EC2コンソールを検索する
EC2コンソールは、AMIを並べ替えて起動するものを選択するグラフィカルな方法です。ここで公式のUbuntuイメージを起動するには、以下の手順に従ってください。
ubuntu-images /と入力して、結果をUbuntu Stableリリースイメージに制限します。
[AMI名]フィールドをできるだけ広く展開する必要があります(他のフィールドは縮小する可能性があります)。
「。*」を追加して、結果を特定のリリースに制限します。
例:ubuntu-images /.* 10.04
「。* i386」または「。* amd64」を追加して、指定されたアーチに結果を制限します
注:m1.smallまたはc1.mediumを実行する場合は、「i386」が必要です。t1.microを実行する場合は、「ebs」イメージを選択する必要があります。
AMI名で結果を並べ替えて選択します
AMI名で並べ替えることにより、特定のセットの最新のAMIをより簡単に確認できます。各AMIは、YYYYMMDD(年、月、日)の形式の数字で終わります。最新のものが必要です。
所有者が099720109477であることを確認してください!
すべてのユーザーが任意の名前でAMIを登録できます。悪意のあるユーザーが上記の検索に一致するAMIを登録することを妨げるものは何もありません。したがって、安全にするために、amiの所有者が ' 099720109477 ' であることを確認する必要があります。
ノート
HTTPSアクセス:上記のオプションのうち、現時点ではhttps://cloud-images.ubuntu.com/server/releases/のみがhttps経由でデータを提供します。これは、AMI IDを見つけるときに「Man in the Middle」攻撃の可能性を心配している場合に重要です。https://cloud.ubuntu.com/amiへのhttpsアクセスをサポートするようにAhmed [ircのkim0]にリクエストしました。
Webコンソールの「インスタンスの起動」ダイアログ:「インスタンスの起動」ダイアログに所有者IDを表示する方法がありません。その場合、「コミュニティAMI」を見つけるためにそのダイアログを使用しないことをお勧めします。コンソール内から画像の所有者が誰であるかを確実に知る方法はありません。上級ユーザー向けに、AMIをプログラムで見つける方法について近日中にブログを書く予定です[ヒント]。
hvm-instance
との違いを正確に教えていただけますhvm-ssd
か?「インスタンス」は「準仮想」を意味するのではないかと思いますが、確信が持てず、それに関する情報が見つかりません。また、それは、そのノートに役立ちますhttps://cloud-images.ubuntu.com/locator/
提供フィルタ...ページの下部にある
新規および改善されたバージョン。
# 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 '",')
2つの部分で動作します。最初の部分は、さまざまな基準(ebs、x86_64、および名前パターン)を満たすubuntu trustyのすべてのAMIを取得します。名前を引き出し、それでソートします。名前は、日付順にソートされるようにフォーマットされているため、最後の名前が最新のものになります。次に、この名前が「name」変数に割り当てられます。
2番目の部分では、その名前を使用して、その名前のAMIのAMI IDを要求します。idのみを解析し、「ami_id」に割り当てます。
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*' --query 'sort_by(Images, &Name)[-1].ImageId'
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/を使用して、バージョン、リリース日などに基づいた包括的な比較を提供できます。
バージョン、目的の地域を検索し、リリース日に基づいて並べ替えて、最新バージョンを取得します。
あり、包括的なリストで利用できる公式のAMIのUbuntuのクラウドポータル。Canonicalの公式EC2 AMIリリースに関する追加リソースは、Ubuntu Help:EC2 Starts Guideと、CanonicalがUbuntu EC2 ImagesでリリースしたすべてのAMIの未加工ディレクトリにあります。
ec2_ami_findモジュールを使用して、Ansibleを使用してこれを行う方法をデモンストレーションすることは有益だと思いました。
執筆時点(2017-06-07)でap-southeast-2リージョンで、コンソールからEC2インスタンスを手動で起動した場合、AWSはこれらのUbuntu LTSイメージを提案します。
これは、HVM仮想化とEBSバックアップSSDボリュームの使用に関する推奨事項に沿っています。
最高のパフォーマンスを得るには、インスタンスを起動するときに、現在の世代のインスタンスタイプとHVM AMIを使用することをお勧めします。
AWSが推奨するものと同じAMIを取得するには、次のタスクを使用できます。
- name: Find the most recent xenial AMI
ec2_ami_find:
aws_access_key: "{{ vault_aws_access_key }}"
aws_secret_key: "{{ vault_aws_secret_key }}"
region: "{{ config_region }}"
name: "ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-*"
owner: 099720109477 # canonical ownerid
virtualization_type: hvm
sort: name
sort_order: descending
sort_end: 2
register: ami_find_xenial
- name: Newest Xenial AMI
debug:
msg: "{{ ami_find_xenial.results[0].ami_id }}"
- name: AWS recommend Xenial AMI
debug:
msg: "{{ ami_find_xenial.results[1].ami_id }}"
- name: Find the most recent trusty AMI
ec2_ami_find:
aws_access_key: "{{ vault_aws_access_key }}"
aws_secret_key: "{{ vault_aws_secret_key }}"
region: "{{ config_region }}"
name: "ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"
owner: 099720109477 # canonical ownerid
virtualization_type: hvm
architecture: x86_64
sort: name
sort_order: descending
sort_end: 3
register: ami_find_trusty
- name: Newest Trusty AMI
debug:
msg: "{{ ami_find_trusty.results[0].ami_id }}"
- name: AWS recommend Trusty AMI
debug:
msg: "{{ ami_find_trusty.results[2].ami_id }}"
次の出力が得られます。
TASK [Load secrets from Vault] *****************************************************************************************************************************************************************************
ok: [localhost]
TASK [Find the most recent xenial AMI] *********************************************************************************************************************************************************************
ok: [localhost]
TASK [Newest Xenial AMI] ***********************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "ami-1e01147d"
}
TASK [AWS recommended Xenial AMI] **************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "ami-96666ff5"
}
TASK [Find the most recent trusty AMI] *********************************************************************************************************************************************************************
ok: [localhost]
TASK [Newest Trusty AMI] ***********************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "ami-993e2bfa"
}
TASK [AWS recommended Trusty AMI] **************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "ami-807876e3"
}
プレイブックから返されたAMI IDを比較すると、AWSは利用可能な最新のイメージではなく、最新の2番目または3番目のイメージを推奨しています。ここでどの基準/ヒューリスティックが使用されているのかわかりません。