おそらく、ルートボリュームに/dev/sda1
の代わりに/dev/xvda
を使用するAMIを使用している可能性があります。
のAMIこれらの日はHVM画像がAWS Documentationからdev/xvda
又は/dev/sda1
(以上いずれかを指定することができ、一方、2仮想化の種類、準仮想化(PV)またはハードウェア仮想化(HVM)、及びPVイメージの一つは、ルートデバイス名の/dev/sda1
をサポートするサポート)。
イメージチェックを追加して、使用しているAMIのルートボリュームを設定してから、その情報をcreate_images
に使用することができます。
describe_images
にコールを発信し、そのRootDeviceName
に関する情報を取得し、それを使用してブロックデバイスマッピングを設定するコードスニペットです。
{u'Images': [{u'Architecture': 'x86_64',
u'BlockDeviceMappings': [{u'DeviceName': '/dev/xvda',
u'Ebs': {u'DeleteOnTermination': True,
u'Encrypted': False,
u'SnapshotId': 'snap-0ddda62ff076afbc8',
u'VolumeSize': 8,
u'VolumeType': 'gp2'}}],
u'CreationDate': '2016-11-13T14:03:45.000Z',
u'Description': 'Debian jessie amd64',
u'EnaSupport': True,
u'Hypervisor': 'xen',
u'ImageId': 'ami-49e5cb5e',
u'ImageLocation': '379101102735/debian-jessie-amd64-hvm-2016-11-13-1356-ebs',
u'ImageType': 'machine',
u'Name': 'debian-jessie-amd64-hvm-2016-11-13-1356-ebs',
u'OwnerId': '379101102735',
u'Public': True,
u'RootDeviceName': '/dev/xvda',
u'RootDeviceType': 'ebs',
u'SriovNetSupport': 'simple',
u'State': 'available',
u'VirtualizationType': 'hvm'}],
'ResponseMetadata': {'HTTPHeaders': {'content-type': 'text/xml;charset=UTF-8',
'date': 'Mon, 19 Dec 2016 14:03:36 GMT',
'server': 'AmazonEC2',
'transfer-encoding': 'chunked',
'vary': 'Accept-Encoding'},
'HTTPStatusCode': 200,
'RequestId': '85a22932-7014-4202-92de-4b5ee6b7f73b',
'RetryAttempts': 0}}
:参考
import boto3
if __name__ == '__main__':
client = boto3.client('ec2')
# This grabs the Debian Jessie 8.6 image (us-east-1 region)
image_id = 'ami-49e5cb5e'
response = client.describe_images(ImageIds=[image_id])
device_name = response['Images'][0]['RootDeviceName']
print(device_name)
block_device_mappings = []
block_device_mappings.append({
'DeviceName': device_name,
'Ebs': {
'VolumeSize': 300,
'DeleteOnTermination': True,
'VolumeType': 'gp2'
}
})
# Whatever you need to create the instances
は、describe_images
への呼び出しは次のようになりますdict
返します