#python #amazon-ec2 #boto #boto3
#python #amazon-ec2 #boto #boto3
Вопрос:
Я хочу создать скрипт на python, в котором я могу передавать аргументы / входные данные для указания типа экземпляра, а затем присоединять дополнительные EBS (при необходимости).
ec2 = boto3.resource('ec2','us-east-1')
hddSize = input('Enter HDD Size if you want extra space ')
instType = input('Enter the instance type ')
def createInstance():
ec2.create_instances(
ImageId=AMI,
InstanceType = instType,
SubnetId='subnet-31d3ad3',
DisableApiTermination=True,
SecurityGroupIds=['sg-sa4q36fc'],
KeyName='key'
)
return instanceID; ## I know this does nothing
def createEBS():
ebsVol = ec2.Volume(
id = instanceID,
volume_type = 'gp2',
size = hddSize
)
Теперь, может ли ec2.create_instances() вернуть идентификатор или мне нужно выполнить итерацию резервирования?
или мне сделать ec2.create(instance_id) / вернуть instance_id? Документация здесь не совсем понятна.
Комментарии:
1.
create_instance
вернет объект ответа, вот где вы получаете идентификатор экземпляра после создания.
Ответ №1:
в boto3 create_instances возвращает список, поэтому, чтобы получить идентификатор экземпляра, который был создан в запросе, выполните следующие действия:
ec2_client = boto3.resource('ec2','us-east-1')
response = ec2_client.create_instances(ImageId='ami-12345', MinCount=1, MaxCount=1)
instance_id = response[0].instance_id
Ответ №2:
В документах указано, что вызов create_instances()
Возвращает список (ec2.Instance). Таким образом, вы должны иметь возможность получать идентификаторы экземпляров из свойства ‘id’ объекта (объектов) в списке.
Комментарии:
1. Ах, спасибо, Дэн. Я совершенно не видел этого o_O. Спасибо.
Ответ №3:
вы можете выполнить следующее
def createInstance():
instance = ec2.create_instances(
ImageId=AMI,
InstanceType = instType,
SubnetId='subnet-31d3ad3',
DisableApiTermination=True,
SecurityGroupIds=['sg-sa4q36fc'],
KeyName='key'
)
# return response
return instance.instance_id
фактически create_instances
возвращает ec2.instance
экземпляр