2015-12-22 1 views
2
client = boto3.client('ec2', 
     aws_access_key_id=key, 
     aws_secret_access_key=secret, 
     region_name='ap-southeast-1') 


    response = client.create_instances(
     DryRun=True, 
     ImageId=ami1, 
     MinCount=1, 
     MaxCount=1, 
     KeyName='my-key', 
     SecurityGroupIds=[sg1, sg2], 
     InstanceType='m3.medium', 
     Placement={ 
      'AvailabilityZone': 'ap-southeast-1a' 
     }, 
     SubnetId=sb1, 
     NetworkInterfaces=[ 
      { 
       'NetworkInterfaceId': vpc1, 
       'SubnetId': sb1, 
       'Description': 'Description' 
      } 
     ] 
    ) 
    print response 

obtenir erreur en faisant appel api pour créer une instance, j'ai vérifié une autre opération comme describe_images fonctionne bien pour que les touches sont propres.boto3: AttributeError: objet « EC2 » n'a pas d'attribut 'create_instances de

Ai-je raté quelque chose?

+0

ne doit pas la ligne 1 be 'boto3.resource ('ec2' ...' au lieu de 'boto3.client ('ec2' ...'? –

Répondre

6

EC2.Client ne fournit pas create_instances, comme l'indique le message d'erreur.

Au lieu de cela, il est EC2.ServiceResource qui le fournit, selon the boto3 documentation

Vous devez mettre à jour la première instruction:

client = boto3.resource('ec2', 
    aws_access_key_id=key, 
    aws_secret_access_key=secret, 
    region_name='ap-southeast-1') 
+0

Hmm Je reçois 'AttributeError: l'objet 'ec2.ServiceResource' n'a pas d'attribut 'release_address ''. Je crée l'objet avec 'ec2 = session.resource ('ec2')'. – Tvde1