使用boto3 lib在AWS中创建映像(AMI)时,提供以下参数:
ec2.create_image(Name=name, BlockDeviceMappings=[{'DeviceName':device_name,'Ebs':{'SnapshotId':snapshot_id, 'DeleteOnTermination': delete_on_term,
'VolumeSize':10, 'VolumeType':'gp2'}}])
我收到此错误:Missing required parameter in input: "InstanceId"
但是,当我从用户界面创建映像时,不需要实例ID。
在下面的图片中,您可以看到我可以从“快照”页面创建图像,而无需指定实例ID。
有人知道解决方法吗?谢谢。
答案 0 :(得分:1)
使用此功能register_image从快照创建图像
response = client.register_image(
ImageLocation='string',
Architecture='i386'|'x86_64'|'arm64',
BlockDeviceMappings=[
{
'DeviceName': 'string',
'VirtualName': 'string',
'Ebs': {
'DeleteOnTermination': True|False,
'Iops': 123,
'SnapshotId': 'string',
'VolumeSize': 123,
'VolumeType': 'standard'|'io1'|'gp2'|'sc1'|'st1',
'Encrypted': True|False,
'KmsKeyId': 'string'
},
'NoDevice': 'string'
},
],
Description='string',
DryRun=True|False,
EnaSupport=True|False,
KernelId='string',
Name='string',
BillingProducts=[
'string',
],
RamdiskId='string',
RootDeviceName='string',
SriovNetSupport='string',
VirtualizationType='string'
)
答案 1 :(得分:0)
“ InstanceId”是必需的-它必须包含您要用来创建映像的实例ID。
答案 2 :(得分:0)
从控制台创建映像时,请选择“选择实例”并选择“创建映像”选项。因此,控制台使用选定的实例ID进行传递以创建映像。
当需要使用boto3创建图像时,需要告诉API您要为其创建图像的实例,因此需要传递参数。试试这个
ec2.create_image(instance_id=yourInstanceId, Name=name, BlockDeviceMappings=[{'DeviceName':device_name,'Ebs':{'SnapshotId':snapshot_id, 'DeleteOnTermination': delete_on_term,
'VolumeSize':10, 'VolumeType':'gp2'}}])