def image_ec2_id(image_id, image_type='ami'):
"""Returns image ec2_id using id and three letter type."""
template = image_type + '-%08x'
try:
return id_to_ec2_id(image_id, template=template)
except ValueError:
#TODO(wwolf): once we have ec2_id -> glance_id mapping
# in place, this wont be necessary
return "ami-00000000"
因此,AMI ID 只是 Glance 映像的数字 S3 映像 ID(不是 UUID)的十六进制编码版本。据我所知,这个值不会通过任何命令行工具或服务器 API 公开,需要直接通过您的数据库查询。这些数字映射存储在nova.s3_images:
mysql> SELECT s3_images.id, s3_images.uuid, images.name FROM nova.s3_images INNER JOIN glance.images ON s3_images.uuid = images.id WHERE images.id = 'd12a9b68-0194-4a88-b5dd-2de711dec05e';
+----+--------------------------------------+-------------------------+
| id | uuid | name |
+----+--------------------------------------+-------------------------+
| 73 | d12a9b68-0194-4a88-b5dd-2de711dec05e | coreos-stable-v20150728 |
+----+--------------------------------------+-------------------------+
1 row in set (0.00 sec)
你的问题有点不清楚。OpenStack 中的每个镜像都有:
95e52709-0990-4f52-b192-2ba2c0fa6f7f
由于您的示例既不是整数也不是 UUID,因此它必须是显示名称。如果您可以提供更多信息(例如,“当我运行此命令时,我会看到此输出;如何将该输出转换为我需要的其他信息”,同时显示您键入的命令的输出),我们可以提供更好的答案。
通常,您可以使用
nova image-*
与图像交互的命令或glance
命令。要查看可用图像列表,请使用nova
:或使用
glance
:nova image-show
您可以使用or获取有关特定图像的详细信息glance show
,这将为您提供如下信息:您所说的是 AMI ID,它与 Glance 映像 ID 不同,后者是较新版本的 OpenStack 中的标准格式 UUID。
提供 AMI ID 是为了在使用 EC2 兼容层时与 cloud-init 或其他工具兼容。通过查询http://169.154.169.154/latest/meta-data/ami-id或从配置驱动器上提取
ami-id
属性从实例内部访问它。metadata.json
nova.api.ec2.ec2utils
提供了一个名为的方法image_ec2_id
:因此,AMI ID 只是 Glance 映像的数字 S3 映像 ID(不是 UUID)的十六进制编码版本。据我所知,这个值不会通过任何命令行工具或服务器 API 公开,需要直接通过您的数据库查询。这些数字映射存储在
nova.s3_images
: