我正在尝试使用boto3创建一个ec2实例:
#!/usr/bin/env python
import boto3
import json
from collections import defaultdict
ec2 = boto3.resource('ec2', region_name='us-west-1')
print ("Creating instance...")
ec2info = defaultdict()
vpc = ec2.Vpc('vpc-22222222')
instance = ec2.create_instances(
VpcId='vpc-22222222'
ImageId='ami-aaaaaaa',
SubnetId='subnet-99999999',
KeyName='skahmed-gss',
SecurityGroupIds=["sg-5555555","sg-9999999"],
MinCount=1,
MaxCount=1,
InstanceType='t2.micro',
#BlockDeviceMappings=[{"DeviceName": "/dev/xvda","Ebs" : { "VolumeSize" : 350 }}]
BlockDeviceMappings=[
{
'DeviceName': '/dev/sda1',
'Ebs': {
'VolumeSize': 20,
'VolumeType': 'gp2'
}
}
]
)
print("Instance ID: " + instance[0].id)
ec2.create_tags(Resources = [instance[0].id], Tags = [{'Key': 'Name', 'Value': 'SWALK-CENTOS7'}, {'Key': 'Environment', 'Value': 'NON_PROD'},
{'Key': 'scheduler:ec2-startstop', 'Value': 'default'}, {'Key': 'Server_Function', 'Value': 'Spacewalk'}, {'Key': 'System', 'Value': 'GSS/C
hef'}, {'Key': 'Fisma_Id', 'Value': 'CIS-0000-MMM-1111'}, {'Key': 'POC', 'Value': 'person@email.com'} ])
问题:VpcId ='vpc-22222222'是指定用于此ec2实例创建的vpc的正确方法吗?我找不到一个像样的例子,boto3 doc有点神秘,加上它描述了创建一个VPC与使用现有的VPC相比。
答案 0 :(得分:4)
您正在将EC2实例启动到VPC的子网中,因此您必须提供子网ID。然后,AWS可以根据需要推断VPC。
在boto3中,在调用create_instances时提供NetworkInterfaces参数,例如:
NetworkInterfaces = [
{
'SubnetId': subnet_id,
'DeviceIndex': 0,
'AssociatePublicIpAddress': True,
'Groups': [sg1, sg2]
}
]