如何使用boto3从Amazon EBS快照创建AMI

时间:2019-10-03 21:45:58

标签: python amazon-web-services amazon-ec2 boto3 amazon-ami

使用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。

enter image description here

有人知道解决方法吗?谢谢。

3 个答案:

答案 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)

从此处的官方文档中: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.create_image

“ 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'}}])