2017-11-06 2 views
-1

boto3을 사용하여 EC2 instance을 시작하려고합니다. 나는 아래의 코드를 실행하면 그것은AWS EC2에서 start_instances()에서만 키워드 인수를 허용합니다.

import boto3 


ec2client = boto3.client('ec2') 

class StartInstances: 

    def start_ec_instances(self): 
     response = ec2client.start_instances(InstanceIds=['i-XXXXXXXXXX']) 
     return 

StartInstances().start_ec_instances() 

를 잘 작동하지만이 코드를 실행하면 나는 파이썬 질문

import boto3 


ec2client = boto3.client('ec2') 

class StartInstances: 

    def start_ec_instances(self, instanceid): 
     response = ec2client.start_instances(instanceid) 
     return 

StartInstances().start_ec_instances('InstanceIds=[\'i-XXXXXXXXXX\']') 

Traceback (most recent call last): File "/Users/xxx/PycharmProjects/ctm-scripting-utils/ec2/start_instances.py", line 25, in StartInstances().start_ec_instances("InstanceIds=[\'i-XXXXXXXXXX\']") File "/Users/xxx/PycharmProjects/ctm-scripting-utils/ec2/start_instances.py", line 11, in start_ec_instances response = ec2client.start_instances(instanceids) File "/Users/xxx/Library/Python/3.6/lib/python/site-packages/botocore/client.py", line 310, in _api_call "%s() only accepts keyword arguments." % py_operation_name) TypeError: start_instances() only accepts keyword arguments.

답변

2

좀 더 아래. kwargs : InstanceIds=[..] 대신 string : 'InstanceIds=[\'i-XXXXXXXXXX\']'을 전달하려고합니다. 수정할 수있는 방법 중 하나는 다음과 같습니다.

class StartInstances: 
    def start_ec_instances(self, instanceid): 
     response = ec2client.start_instances(InstanceIds=[instanceid]) 
     return 

StartInstances().start_ec_instances('i-XXXXXXXXXX') 
관련 문제