在任何VPC子网中启动EC2实例,在非VPC启动中模拟“无首选项”选项

时间:2013-02-27 22:25:00

标签: amazon-web-services amazon-ec2 boto amazon-vpc

我有一个非常标准的堆栈,RDS,使用ELB的2个EC2实例。因为我希望将ELB限制在特定的IP范围内,所以我已经在VPC中启动了堆栈,出于DR的原因,它跨越了两个子网。

我使用了几台短暂的ec2机器,当它不在VPC中时,我允许在任何可用区域中启动。其中(据我所知)将意味着如果AZ不可用,那么机器将在其他区域启动。

有没有办法在VPC中模拟这个?有没有办法说在VPC的任何子网中启动机器?

如果不是通过随机选择一个子网并且如果它尝试另一个子网失败则相当容易解决。只是想知道是否有一个更清洁的支持方法?

我正在使用python和boto。

感谢

1 个答案:

答案 0 :(得分:2)

  

根据我的理解,这意味着如果AZ不可用,那么机器将在其他区域启动。

这是正确的,在通过可用的Amazon VPC API操作直接运行实例时,Amazon EC2中也可以使用此选项。

不幸的是,RunInstancesRequestSpotInstances API操作只允许分别指定可选参数 SubnetId LaunchSpecification.SubnetId 启动[Spot] Instance 的子网ID,因此,如果没有指定子网,则不会有任何关于要启动实例的VPC的信息。

解决方法

您可以通过Auto Scaling API动作通过CreateAutoScalingGroup间接实现所需的行为,请参阅参数 VPCZoneIdentifier

  

以逗号分隔的Amazon Virtual Private Cloud(Amazon VPC)的子网标识符列表。