我正在尝试使用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]
答案 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
应该在循环中定义,而不是在循环之外。