Прекращение поддержки AWS AMI (API: ec2: RunInstances Не авторизован для изображений)

Итак, я использовал AWS AMI в своем шаблоне формирования облака.

Похоже, они создают новые изображения каждый месяц и отказываются от старых через 2 недели или около того после выпуска нового. Это создает множество проблем:

  1. Старые стопки шаблонов ломаются.
  2. Шаблоны необходимо обновить.

Я что-то упускаю?

НАПРИМЕР. Я смотрю на

API: ec2: RunInstances Не авторизован для изображений: [ami-1523bd2f]

ошибка в моих событиях формирования облака.

При поиске это идентификатор изображения 02.12: http://thecloudmarket.com/image/ami-1523bd2f--windows-server-2012-rtm-english-64bit-sql-2012-sp1-web-2014.-02-12

Где, как и сейчас, есть новый идентификатор изображения: http://thecloudmarket.com/image/ami-e976efd3--windows-server-2012-rtm-english-64bit-sql-2012-sp1-web-2014-03-12


person Sleeper Smith    schedule 26.03.2014    source источник
comment
Это также огромная проблема, если вы используете автомасштабирование. После того, как AMI устарел, автоматическое масштабирование начинает давать сбой, потому что не может добавлять новые экземпляры, и ваша производственная система выходит из строя. Это кажется серьезным недостатком в конструкции AWS.   -  person bikeman868    schedule 16.09.2017


Ответы (4)


Вы действительно правы. Windows AMI устаревает при выпуске новой версии (см. http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Basics_WinAMI.html)

В документации говорится: «AWS обновляет AWS Windows AMI несколько раз в год. Для этого не существует решения по принципу« укажи и щелкни ». Обновление предполагает отказ от предыдущего AMI и замену его новыми AMI и AMI ID. Чтобы найти AMI после он был обновлен, используйте имя вместо идентификатора. Основная структура имени AMI обычно такая же, с новой датой, добавленной в конец. Вы можете использовать запрос или сценарий для поиска AMI по имени, подтвердите, что вы нашли правильный AMI, а затем запустите свой экземпляр ".

Одним из возможных решений может быть разработка настраиваемого ресурса CloudFormation, который будет проверять доступность AMI перед запуском экземпляра EC2.

См. Эту документацию о настраиваемых ресурсах CFN: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/crpg-walkthrough.html

И этот доклад от re: Invent: https://www.youtube.com/watch?v=ZhGMaw67Yu0#t=945этот пример кода для поиска AMI)

У вас также есть возможность создать свой собственный AMI на основе предоставленного Amazon, даже если вы ничего не изменяете. Ваш пользовательский AMI будет точной копией того, который предоставляется Amazon, но останется доступным после прекращения поддержки Amazon AMI.

Netflix предлагает инструменты с открытым исходным кодом для управления AMI. Взгляните на Aminator.

Linux AMI устарел спустя годы после выпуска (2003.11 все еще доступен сегодня!), Но Windows AMI устарел, как только станет доступна исправленная версия. Это сделано из соображений безопасности.

person Sébastien Stormacq    schedule 26.03.2014
comment
Я думаю, что другой вариант - запустить экземпляр и создать из него свой личный образ ..... zzz. Хотя ваш ответ, вероятно, стандартный, он порождает проблему несоответствия в том, что то, что я создал ранее, было протестировано с конкретным изображением и может не работать с будущими изображениями. - person Sleeper Smith; 27.03.2014
comment
Вы правы, я забыл упомянуть возможность создания собственного пользовательского AMI на основе предоставленного Amazon. Даже без доработки. Это также добавило бы административных накладных расходов для управления ими. В частности, если вы выполняете развертывание в нескольких регионах. Netflix имеет инструменты с открытым исходным кодом, помогающие управлять AMI, взгляните на Aminator и Asgard - person Sébastien Stormacq; 27.03.2014
comment
Я знал об Асгарде для развертывания приложений и управления ресурсами, но не знал об Aminator. Спасибо за предложение. - person Sleeper Smith; 30.03.2014
comment
Можете ли вы добавить их к вопросу, и я отмечу это как ответ. Спасибо. - person Sleeper Smith; 30.03.2014
comment
Хммм, Аминатор работает только для CentOS и RHL. Некоторым из моих вещей нужны окна. Это и окна должны использовать объединение, а не снимок на AWS. Ургхх .... Наличие библиотеки исторических AMI действительно не так дорого, не знаю, почему они должны отказаться от них. zzz. - person Sleeper Smith; 30.03.2014

Этот скрипт ps работает для моих целей, мы используем базовое изображение Windows 2012:

$imageId = "xxxxxxx"

if ( (Get-EC2Image -ImageIds $imageId) -eq $null ) {

    $f1 = New-Object  Amazon.EC2.Model.Filter ; $f1.Name="owner-alias";$f1.Value="amazon"
    $f2 = New-Object  Amazon.EC2.Model.Filter ; $f2.Name="platform";$f2.Value="windows"

    $img = Get-EC2Image -Filters $f1,$f2 | ? {$_.Name.StartsWith("Windows_Server-2012-RTM-English-64Bit-Base")} | Select-Object -First 1

    $imageId =$img.ImageId

}
person Avner    schedule 12.08.2014
comment
Извини, нет. См. Мой комментарий к предыдущему ответу. Какое бы изображение я ни использовал в Dev, UAT, Staging, w / e, это именно то, что я собираюсь использовать в Prod. Нет, если, нет, но нет, однако. - person Sleeper Smith; 13.08.2014
comment
Ах, мой плохой просмотр комментариев. Похоже, тебе нужно вырезать ами. Как вы с этим справились? - person Avner; 14.08.2014
comment
Мы запускаем какой-нибудь скрипт с пользовательскими данными, чтобы подготовить машину. Нет, на данный момент у нас нет комплексного решения. Это в нашем списке дел, но очень далеко. : / - person Sleeper Smith; 14.08.2014
comment
Я имею в виду подготовить машину и забрать из нее Ами. - person Sleeper Smith; 14.08.2014

Недавно я столкнулся с той же ошибкой. Я создал пользовательский ami для одной учетной записи и пытался запустить экземпляр EC2 из другой учетной записи.

Для меня проблема заключалась в том, что у AMI не было правильных разрешений, позволяющих моему пользователю из другой учетной записи запускать его.

Чтобы исправить это, я вошел в другую учетную запись и добавил необходимые разрешения для ami:

aws ec2 modify-image-attribute --image-id youramiid --launch-permission "Add=[{UserId=youruserid}]"

Дополнительную информацию см. На этой странице документации.

person Paolo    schedule 12.12.2019
comment
Кроме того, можно обновить разрешение в исходной учетной записи: на странице управления AMI AWS Console выберите нужный AMI, а затем выберите в меню «Действия» пункт «Изменить разрешения для изображения», чтобы добавить нужную учетную запись. Примечание. Команда CLI ожидает номер учетной записи, в котором упоминается UserId. - person Michael Behrens; 10.07.2020

Если вы используете учебный материал и скопировали код, не забудьте заменить имя AMI на правильные значения AMI Image, доступные в списке AMI, видимых в вашей учетной записи. Аналогично другим значениям. Если вы просто скопировали и вставили значения из обучающего кода, возможно, сейчас они будут недоступны.

person user3154031    schedule 04.07.2020