Я пытаюсь создать экземпляр EC2 с использованием приведенного ниже кода:
response = EC2.run_instances(
# BlockDeviceMappings=deviceMappings,
BlockDeviceMappings=[
{
"DeviceName": "/dev/xvdb",
"VirtualName": "swap",
"Ebs": {
"DeleteOnTermination": True,
"Encrypted": True,
"VolumeType": "standard",
"VolumeSize": 16
},
},
],
ImageId=amiId,
MaxCount=1,
MinCount=1,
InstanceType=instance_class,
InstanceInitiatedShutdownBehavior='stop',
SubnetId=subnet_id,
# SecurityGroupIds=security_groups,
SecurityGroupIds=['sg-8c2bb6f5','sg-edc49b89'],
# TagSpecifications=tagSpecs
TagSpecifications=[
{
'ResourceType':'instance',
'Tags':[
{
'Key':'owner',
'Value':'Sanjeev'
},
{
'Key':'Name',
'Value':'SanjeevTEST'
},
{
'Key':'Environment',
'Value':'PreProduction'
},
]
},
]
)
Код работает, как и ожидалось, когда BlockDeviceMappings, SecurityGroupIds и TagSpecifications предоставляются в строке, как указано выше.Но когда Но, когда я читаю их из файла в переменную и передаю переменную, команда завершается с ошибкой ниже:
botocore.exceptions.ParamValidationError: Parameter validation failed:
Invalid type for parameter TagSpecifications, value: [
{
'ResourceType':'instance',
'Tags':[
{
'Key':'owner',
'Value':'Sanjeev'
},
{
'Key':'Name',
'Value':'SanjeevTEST'
},
{
'Key':'Environment',
'Value':'PreProduction'
},
]
},
]
, type: <type 'str'>, valid types: <type 'list'>, <type 'tuple'>
Я храню сопоставления устройств, группы безопасности и теги вфайл, поскольку мы должны создать несколько экземпляров и не хотим редактировать код всякий раз, когда нам нужно создать новый экземпляр.
Как мне устранить эту ошибку?Ваша помощь будет принята с благодарностью.
Спасибо,
Санджив