F.Ko-Jiの「一秒後は未来」

EC2でSnapshotから作ったAMIのインスタンスが正常起動しない場合のひとつの対処法

Amazon EC2 で Amazon Linux AMI を使って色々試していたのですが、起動中のインスタンスのボリュームのスナップショットからAMIを作成し、そのAMIからインスタンスを起動しようとするとうまく起動しないということがありました。

システムログから原因を探る

たいていの場合うまく起動しなかったインスタンスを選択して右クリック→「Get System Log」を選んでシステムログを見れば原因がわかります。

ec2-snapshot-instance-kernel-panic-1.jpg

↑ 今回の場合はカーネルパニックが発生しています。

なぜKernel Panicが発生するのか・・・と考えて思い当たる点は、インスタンスを起動もしくはスナップショットからAMIを作成する際に指定できる「Kernel ID」しかありません。

結論からいうと、その「Kernel ID」をスナップショットの元になっているインスタンスと同じ ID にすれば、正常に起動することができます。

起動中インスタンスのボリュームのスナップショットから作成したAMIを使って、カーネルパニックを起こさずにインスタンスを起動する手順

ec2-snapshot-instance-kernel-panic-2.jpg

↑ まず使用中のインスタンスの Volume を選択して右クリック→「Create Snapshot」を選択してスナップショットを作成。

ec2-snapshot-instance-kernel-panic-3.jpg

↑ 作成した Snapshot を選択して右クリック→「Create Image from Snapshot」

ec2-snapshot-instance-kernel-panic-4.jpg

↑ ここで「Kernel ID」を指定しておきます。(もちろん Architecture も正しく指定しておいてください。)

Kernel ID はあらかじめスナップショットを作成したインスタンスのものをメモしておきましょう。

ec2-snapshot-instance-kernel-panic-5.jpg

↑ Kernel IDはインスタンスのプロパティに記載されています。

こうしてAMIを作成しておけば、AMIからインスタンスを起動する際の Kernel ID は「Use Default」のままで大丈夫です。

AMI作成時にKernel IDを指定しなかった場合

上記ではスナップショットからAMIをつくる際にカーネルIDを指定しましたが、それを忘れている場合もあります。

そういう場合は、インスタンスを起動する際に適切な Kernel ID を指定すれば大丈夫です。

ec2-snapshot-instance-kernel-panic-6.jpg

↑ インスタンス起動ウィザードで Kernel ID を指定できます。

まとめ

というわけでまとめると、

  • スナップショットからAMIを作成する際に Kernel ID を指定しておく。(Architectureも正しく指定)
  • もしくは、AMIからインスタンスを起動する際に Kernel ID を指定する。

のいずれかを心がけておけば大丈夫です。

» Amazon Web Servicesの基礎 (全17回) – ドットインストール

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など