基于AWS Region的不同AMI?

时间:2015-07-06 09:18:48

标签: amazon-web-services amazon-cloudformation

根据地区,AWS AMI是否有任何不同?
例如,如果我尝试在法兰克福启动EC2实例,我就得到了这个AMI:

Amazon Linux AMI 2015.03 (HVM), SSD Volume Type - *ami-a8221fb5*

在俄勒冈州时:

Amazon Linux AMI 2015.03 (HVM), SSD Volume Type - *ami-e7527ed7*

请注意不同的ami版本: ami-a8221fb5 ami-e7527ed7
有什么理由吗?

我如何建立一个我可以在法兰克福或俄勒冈州推出的云形态模板,而无需更改ami?

3 个答案:

答案 0 :(得分:2)

您可以使用参数化值,例如在这个非常好的示例中:

  

您可以使用输入参数来引用地图中的特定值   通过使用Fn :: FindInMap函数。例如,假设你有一个   映射到特定AMI的区域列表。您可以选择AMI   您的堆栈使用时通过在创建时指定region参数   堆栈。

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-input-conditional-parameters.html

答案 1 :(得分:1)

不同区域中不同AMI的原因与您必须在该区域中具有可用于启动实例的实际图像这一事实有关。 (如果你没有,你基本上必须从它将被掌握的地方转移 - 远程地区之间的转移需要很长时间 - 因此启动新的ec2实例需要很长时间)。

理论上,我猜你可以在多个区域拥有相同的图像ID,但这只会让绑定到id的图像不一样时会让人感到困惑。更不用说你可能不想把它推到所有地区(区域间的交通不是免费的)。

ec2在这里选择每个区域具有不同ID的选项可为您提供最大程度的控制和灵活性,而无需高昂的价格。

通过cloudformation启动机器,你绝对可以通过E.J.的方式进行参数化。 Brennan描述了它。

答案 2 :(得分:0)

我刚推了一个工具来帮助创建多个区域的映射(通过查找给定源AMI图像ID和区域的图像的相应AMI图像ID)。它是用boto3编写的。你可能会发现它很有用。 https://github.com/codesolid/ami-lookup