amazon web services - AWS AMI deprecation (API: ec2:RunInsta



所以我一直在使用AWS AMI在我的云形成模板。

似乎他们每个月都创建新图像,并在新图像发布两周左右后弃用旧图像。这会产生很多问题:

  1. 模板需要更新

我错过了什么吗?

如我在看

API: ec2:RunInstances Not authorized for images: [ami-1523bd2f]

错误云形成事件。

查找它,这是02.12图像id:http://thecloudmarket.com/image/ami - 1523 - bd2f - windows -服务器- 2012 rtm -英语- 64位- sql - 2012 sp1 - web - 2014 - 02 - 12

这里有一个新的图像id:http://thecloudmarket.com/image/ami e976efd3 - windows - server - 2012 rtm -英语- 64位- sql - 2012 sp1 - web - 2014 - 03 - 12

你确实是对的。当新版本发布时,Windows AMI已被弃用(参见http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Basics_WinAMI.html)

目前还没有"点击式"解决方案,文档中说:"AWS每年更新AWS Windows ami几次。更新涉及弃用以前的AMI,并用新的AMI和AMI ID替换它。要查找更新后的AMI,请使用名称而不是ID。AMI名称的基本结构通常是相同的,只是在末尾添加了一个新的日期。您可以使用查询或脚本按名称搜索AMI,确认找到了正确的AMI,然后启动实例。"

一个可能的解决方案可能是开发一个CloudFormation自定义资源,在启动EC2实例之前检查AMI的可用性。

查看有关CFN自定义资源的文档:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/crpg-walkthrough.html

和这个来自re:Invent: https://www.youtube.com/watch?v=ZhGMaw67Yu0#t=945的演讲(和这个AMI查找的示例代码)

您还可以根据Amazon提供的AMI创建自己的自定义AMI。即使你不修改任何东西。您的自定义AMI将是Amazon提供的AMI的精确副本,但在Amazon AMI弃用后仍然可用。

Netflix有开源工具来帮助管理ami,看看Aminator

Linux AMI在发布多年后就被弃用了(2003.11今天仍然可用!),但Windows AMI一旦有补丁版本可用就被弃用了。这是出于安全考虑。

这个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
}

我最近遇到了同样的错误。我在一个帐户中构建了一个自定义ami,并试图从另一个帐户运行EC2实例。

我的问题是AMI没有正确的权限来允许我的用户从其他帐户运行它。

为了解决这个问题,我登录了另一个帐户,并向ami添加了所需的权限:

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

如果您正在使用培训材料并复制了代码,请确保将AMI名称替换为您帐户下可见的AMI列表下可用的正确AMI Image值。与其他值类似。如果您只是剪切和粘贴训练代码中的值,现在可能不可用。

最新更新