2014-10-07 34 views
3

短版:啓動從快照的AWS實例,找不到內核IDS

對於你如何找到內核ID從給定的AMI ID,或與AMI啓動一個實例AWS。

長版:

我有一個AWS實例,其中所有的驅動器都支持EBS。我試圖從驅動器的快照中啓動它的確切副本。

在該過程的第一步驟是從根卷快照創建一個新的AMI。當我這樣做之前我剛剛GOOGLE了阿美ID,發現某處有內核ID張貼AMI我從AWS控制檯中選擇的標準的Ubuntu,但似乎並沒有被工作這段時間。

大量的搜索,閱讀文檔和aws論壇使得聽起來像內核文件應該填充在實例描述中,但對我(和論壇中的很多其他人)來說它的空白。我試圖啓動一個新的(從控制檯)實例[亞馬遜的Linux AMI 2014.09(HVM) - AMI-08842d60]核心領域是空白的那一個也。

如果我創建了一個全新機,快照,然後離開了內核爲默認AMI工作得很好,但默認情況下不會爲任何的老AMI的我都試過工作。

任何一個有任何想法尋找kernek ID爲AMI的過程,這些天?

+1

不是試圖從快照製作新機器,而是嘗試將所有EBS驅動器的單個映像一起創建並從該映像啓動新實例? – jimdrang 2014-10-07 20:02:14

回答

2

短版:

看來你並不需要一個內核的ID在所有如果您的AMI是HVM,只要你設置的選擇權。

長版:

如果您使用博託調用,比如創建您的AMI:

ami_id = conn.register_image(
     name='some_name', 
     description='some_description', 
     architecture='x86_64', 
     root_device_name='/dev/sda1', 
     snapshot_id=snapshot_id, 
     delete_root_volume_on_termination=True) 

這似乎工作如果實例的原始AMI是在AWS控制檯中的最近HVM AMI。但是一旦aws更新了默認的ami,就停止工作。我認爲它是因爲在後臺的東西拾起正確的內核ID或東西。無論哪種方式這個工作是非常混亂!

但是,如果您將virtualization_type設置爲hvm,那麼看起來一直沒有內核ID。

ami_id = conn.register_image(
     name='some_name', 
     description='some_description', 
     architecture='x86_64', 
     virtualization_type='hvm', 
     root_device_name='/dev/sda1', 
     snapshot_id=snapshot_id, 
     delete_root_volume_on_termination=True) 

在另一方面,如果你的例子是半虛擬化似乎只要你指定的內核,你不需要指定的博託呼叫virtualization_type。

1

從AWS兩者Documentation你可以在一個運行實例發現使用以下命令內核編號:

$ ec2-describe-instance-attribute instance_id --kernel --region region

然後你就可以得到的版本信息:

$ ec2-describe-images [kernelID you got from previous command] --region region

編輯:剛注意到這是一個HVM;不知道你爲什麼想從快照中創建圖像。如果直接從EC2創建映像也將爲您創建快照,然後你可以去的AMI,讓您創建的圖像的新EC2,它不會要求一個內核ID。

如果實例不見了,你什麼都沒有,但快照我能理解你正在嘗試做的,而不是試圖從你的快照做出AMI,只需打個卷出它來代替。然後啓動一個類似的基於HVM的實例,讓它啓動,然後停止它。交換根卷並開始備份。

+0

是的,它返回:「內核\t [instance_id]」,然後沒有別的。它似乎具有您在控制檯中看到的相同的空白值。我甚至嘗試啓動一個全新的實例(如後文所述),但它也不適用。 ec2-describe-instance-attribute確實會返回實例類型,所以我不認爲我在錯誤地調用它。 – TristanMatthews 2014-10-07 19:00:28

+0

剛注意到這是一個linux hvm而不是paravirtual – jimdrang 2014-10-07 19:48:42