2016-10-28 107 views
0

AWS python boto3調用ec2.meta.client.modify_reserved_instances()時出現問題。aws修改保留實例

我收到以下錯誤:

botocore.exceptions.ParamValidationError: Parameter validation failed: Unknown parameter in TargetConfigurations[0]: "Scope", must be one of: AvailabilityZone, Platform, InstanceCount, InstanceType

這是我的函數:

def modify_reserved_instance(self, region, iid, icount, itype): 
    ec2 = boto3.resource(
    'ec2', region_name=region[:-1], api_version='2016-04-01') 

    response = ec2.meta.client.modify_reserved_instances(
    ClientToken='string', 
    ReservedInstancesIds=[ 
    iid, 
    ], 
    TargetConfigurations=[ 
    { 
    'AvailabilityZone': region, 
    'Platform': 'Linux/UNIX (Amazon VPC)', 
    'InstanceCount': icount, 
    'InstanceType': itype, 
    'Scope': 'Availability Zone' 
    }, 
    ] 
    ) 
    print (response) 
    return response 

我已經嘗試了範圍,因爲AvailabilityZoneAvailability Zone

  • 更新botocore:sudo pip install botocore --upgrade

  • 安裝boto3/botocore從GitHub:https://github.com/boto/boto3

有其他人從boto3.resource('ec2')對象使用的方法是什麼?

+0

雖然沒有明顯的相關錯誤信息(表示該字符串中的空間肯定需要被移除) ,這似乎是錯誤的:'{'AvailabilityZone':region,...}'區域與可用區域不同。例如,「us-west-2」是一個區域,「us-west-2c」是該區域內的可用區域。 –

回答

0

boto3 documentation for modify_reserved_instance()顯示參數爲:

  • AvailabilityZone:例如us-west-2c
  • 平臺:要麼EC2古典或EC2-VPC
  • InstanceCount
  • InstanceType
  • 範圍:standardconvertible

你的錯誤消息指出boto3不承認Scope參數

這是說,Scope參數應設置爲「AvailabilityZone,平臺,InstanceCount,InstanceType」 - 他們僅僅是的,這是期待(和範圍的參數列表中沒有的一個他們)。

可轉換預留實例became available in September 2016。看來您的本地副本boto3已過期。

我建議您更新您的boto3版本,它知道Scope參數的一個版本:

sudo pip install boto3 --upgrade 
+0

這是我的問題api_version ='2016-04-01' –