Boto3: Создание точечного экземпляра
Я пытаюсь создать экземпляр с использованием boto3. Хотя я следую документации API, я получаю исключение, которое я не смог бы понять. Код, который я использую:
import boto3
import datetime
client = boto3.client('ec2')
response = client.request_spot_instances(
DryRun=False,
SpotPrice='0.10',
ClientToken='string',
InstanceCount=1,
Type='one-time',
LaunchSpecification={
'ImageId': 'ami-fce3c696',
'KeyName': 'awskey.pem',
'SecurityGroups': ['sg-709f8709'],
'InstanceType': 'm4.large',
'Placement': {
'AvailabilityZone': 'us-east-1a',
},
'BlockDeviceMappings': [
{
'Ebs': {
'SnapshotId': 'snap-f70deff0',
'VolumeSize': 100,
'DeleteOnTermination': True,
'VolumeType': 'gp2',
'Iops': 300,
'Encrypted': False
},
},
],
'EbsOptimized': True,
'Monitoring': {
'Enabled': True
},
'SecurityGroupIds': [
'sg-709f8709',
]
}
)
И я получаю следующее исключение:
botocore.exceptions.ClientError: An error occurred (InvalidParameterValue) when calling the RequestSpotInstances operation: Value () for parameter groupId is invalid. The value cannot be empty
Дело в том, что в запросе в документации API нет параметра groupId.
Я что-то пропустил?
Ответы
Ответ 1
Хотя он не указан в документации API, для параметра "SecurityGroups", по-видимому, требуются имена групп безопасности, а не идентификаторы.
Изменение имени группы решило проблему.
Спасибо, что кто-то позаботился о том, чтобы сначала прочитать вопрос.
Ответ 2
Попробуйте с идентификаторами группы безопасности, он работает нормально.
#!/usr/bin/python3.6
import boto3
session=boto3.session.Session(profile_name="*****")
ec2instances=session.resource('ec2',region_name="********")
new_instance = ec2instances.create_instances(
ImageId = 'ami-04125d804acca5692',
MinCount = 1,
MaxCount = 1,
InstanceType = 't2.micro',
KeyName ='xxxxxxxxxxxxxxxxx',
SecurityGroupIds=['sg-05dec40ce8b91a8c8'],
SubnetId = 'subnet-01ca807d148d9e328'
)
print(new_instance)