在不同区域创建专色实例

时间:2017-09-25 07:37:24

标签: amazon-ec2 boto3 aws-cli

我正在尝试使用boto3在不同区域创建专色实例。 我的默认区域定义为us-east-1。

当我尝试在默认区域中创建不同区域的专色实例时,会抛出此消息引发异常:

<img id="drag1" src="images/equation.jpg" draggable="true" ondragstart="drag(event)">
<img  id="drag2" src="images/equation_1.jpg" draggable="true" ondragstart="drag(event)">

<div class="box" id="div3" ondrop="drop(event)" ondragover="allowDrop(event)"> </div>
<div class="box" id="div4" ondrop="drop(event)" ondragover="allowDrop(event)"> </div>

使用此代码段创建的实例:

botocore.exceptions.ClientError: An error occurred (InvalidParameterValue) when calling the RequestSpotInstances operation: Invalid availability zone: [eu-west-2b]

1 个答案:

答案 0 :(得分:0)

我认为您的regions列表实际上包含可用区的列表,而不是区域(因为它显示为'AvailabilityZone': regions[idx])。

每个AWS区域都独立运作。在建立与AWS服务的连接时,您必须连接到特定区域中的特定服务

例如:

client = boto3.client('ec2')

这会连接到默认区域中的EC2。

或者,您可以指定区域:

client = boto3.client('ec2', region_name = 'eu-west-2')

您收到Invalid availability zone错误,因为您的客户端已连接到某个区域(例如us-east-1),但正在引用位于其他区域的可用区(例如eu-west-2b)。

您的代码只创建一次客户端,但尝试连接到多个区域。解决方案是为您要使用的区域创建新的客户端连接。如果你的循环连接到多个区域,那么client应该在循环中定义,而不是在循环之外。