Когда я хочу запустить экземпляр Ubuntu на EC2, как я нахожу правильный? Существуют тысячи репутации, которая имеет "Ubuntu" на их имя. Я только интересуюсь выполнением Чиновника изображения Ubuntu. Как делают меня теперь, который AMI является правильным?
Успех Ubuntu как платформа и обязательство Ubuntu обновить AMI означает, что существуют буквально тысячи изображений на Amazon EC2 с "человечностью" на их имя. Это, объединенное с и отсутствие Ubuntu в меню "Quick Start" делает выбор правильного AMI нетривиальной задачей.
Некоторая общая информация о Ubuntu
Уже можно знать об этих объектах, но я хочу указать на них для тех, кто просто начинает с Ubuntu или EC2.
Самый легкий: найдите AMI от своего веб-браузера
Можно выбрать интерфейс для того, чтобы выбрать изображения. Перейдите в также:
У основания этой страницы можно выбрать регион, выпуск, дугу или корневое хранилище. Вам только показывают новые выпуски здесь. Когда Вы сделали свой выбор, можно скопировать и вставить ami число или просто нажать на него для движения права на страницу запуска консоли EC2 для того AMI.
или
Переройте консоль Amazon EC2
Консоль EC2 является графическим способом отсортировать AMI и выбрать тот для запуска. Для Запуска Чиновника Изображение Ubuntu здесь выполните шаги ниже.
Ограничьте результаты изображениями Стабильной версии Ubuntu путем ввода ubuntu-images/
Необходимо расшириться, поле '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'.
Примечания
Доступ HTTPS: Из опций выше, прямо сейчас https://cloud-images.ubuntu.com/server/releases/является единственным, который обеспечивает данные по https. Это может быть важно для Вас, если Вы обеспокоены потенциальным "Человеком в средних" нападениях при нахождении идентификатора AMI. Я запросил Ahmed [kim0 в irc] поддерживать https доступ к https://cloud.ubuntu.com/ami.
Веб-Консольное диалоговое окно' Экземпляра Запуска ': Я не видел пути в 'диалоговом окне' Экземпляра Запуска для наблюдения идентификатора Владельца. Поскольку, если это, я предлагаю не использовать то диалоговое окно для нахождения "Сообщества AMI". Нет просто никакого способа, которым можно надежно знать, кто владелец изображения из консоли. Для опытных пользователей я буду вести блог когда-то скоро на способе найти AMI программно [Подсказка].
Существует всесторонний список доступного Чиновника AMI на Облачном Портале Ubuntu. Вы находка дополнительные ресурсы относительно Официального EC2 AMI Canonical выпускаете в Справке Ubuntu: EC2 Запускает Руководство и необработанный каталог всех AMI, выпущенных Каноническим в Изображениях Ubuntu EC2
с помощью рубина 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
Новая и улучшенная версия.
# 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
В основном необработанные данные захватов использовали для ami человечности нахождение страницы и использования jq для парсинга строки, я хочу затем, чтобы grep вытащил значение. Намного быстрее, чем старая версия.
- исходная версия
Вот другой пример. Я просто записал это для выборки последнего испытанного идентификатора AMI. Это использует 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 частях. Первая часть получает все AMI для надежного человека человечности, которые соответствуют различному критерию (ebs, x86_64, и шаблон имени). Это вытаскивает Имя и виды им. Имена отформатированы так, чтобы, сортируя их виды по дате так последний были новейшим. Это имя затем присвоено переменной 'имени'.
Второе использование части, которое называет для запроса идентификатора AMI на AMI с тем именем. Это анализирует просто идентификатор и присваивает его 'ami_id'.
Я думал, что будет полезно продемонстрировать, как сделать это использование с Ansible при помощи ec2_ami_find модуля.
Во время записи (2017-06-07) в ap-southeast-2 регионе AWS предложит их Ubuntu изображения LTS при запуске экземпляра EC2 вручную с консоли:
Это соответствует их рекомендациям использовать виртуализацию HVM, и EBS поддержал Объемы SSD.
Для лучшей производительности мы рекомендуем использовать текущие типы экземпляра поколения и AMI HVM, когда Вы запускаете свои экземпляры.
Для получения тех же AMI, которые рекомендуют AWS, можно использовать следующие задачи:
- 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, возвращенных сборником пьес, Вы видите, что AWS не рекомендуют последнее доступное изображение, а скорее второе или третье последнее. Я не знаю, какие критерии/эвристику они используют здесь.
Можно использовать https://cloud-images.ubuntu.com/locator/ec2/, которые обеспечивают всестороннее сравнение на основе версии, выпускают дату и т.д.
Ищите версию, регион, который Вы хотите и вид на основе даты выпуска для получения последней версии.