AWS Market Placeから作成したインスタンスのVolumeを他インスタンスにアタッチしたい。

| コメントをどうぞ

AWSのMarketPlaceから作成したインスタンスのVolumeってProductCodeがついていて、他のインスタンスにセカンダリディスクとしてつけようとすると、Rootデバイス以外にはアタッチ出来ないメッセージが出てはじかれます。

ログイン出来なくなってしまったようなトラブル時に復旧作業が出来ません。。

でも、前は出来たような・・・?自分もiptablesでSSHを閉じちゃってしかも自動起動で
にっちもさっちもの状態になったんですが、前にAWSセミナーに参加した際にエバンジェリストにその事を質問したら「別のインスタンスのセカンダリディスクとしてつければ復旧可能ですよ」と言われて戻った時に試したらそれで復旧できた記憶があります。

・・・で、ちょっと前にSSHを起動できなくしたインスタンスのVolumeを別のインスタンスのセカンダリにつけて復旧させてようとしたらこれが出来ない。rootデバイスじゃないと駄目だよってメッセージでます。ネットで検索してみるとどうやらMarketPlaceから作ったインスタンスのVolumeは他のインスタンスのセカンダリデバイスとしてアタッチ出来ない制限があるらしい。
ログイン出来ないようなトラブル時には一度AWSサポートへお願いして制限を解除してもらうしかない模様。

・・・そうなんだ。。AWSサポート画面を開いてみる。

・・・サービス上限緩和のメニューしか無いよ?

このAWSアカウントは無料サポートのBASICにしか加入してないからこの手のサポートが受けれない・・・?

フォーラムに投げてみると個別対応しますね。というレスついてメールが来たけど文面から察するに有料サポートよろしく的な事っぽかった。

ログイン出来ないインスタンスはTerminateしてやりました。

どうやらMarketPlaceから作ったインスタンスのVolumeにはProductCodeがひっついていて、これがあるとrootデバイス以外にはアタッチできない仕様になっていた!
(前はこんな制限無かった記憶が・・・。上にも書きましたが。)

無料サポートのBASICの人はMarketPlaceから作ったインスタンスでログイン不能にすると詰みます!

ここで海外の掲示板で抜け道を発見。ProductCodeはOS内部にデータとしてあるわけではないようでMarketPlaceで作成したインスタンスのVolumeの中のデータを新規作成したVolumeに移してしまえばOKと書いてある。やってみよう。

  1. MarkePlaceからインスタンス作成
  2. 同じサイズのまっさらのVolumeを作成した↑のインスタンスにセカンダリとしてアタッチ
  3. まっさらのVolumeをフォーマット(ここではxvdj)
  4. # mkfs -t ext4 /dev/xvdj
    
  5. ddコマンドでコピー
  6. # dd bs=65536 if=/dev/xvde of=/dev/xvdj
    
  7. ProductCodeが無いVolumeの出来上がり!

やってみたところ出来上がったVolumeはrootデバイスとして起動出来るし他のインスタンスにセカンダリデバイスとしてもアタッチ出来ました。これなら起動不能やログイン不能になっても復旧作業出来ます。

ただ、この作業をしたインスタンスを使用していく必要があるので普通に作成して使用していたインスタンスがトラブル発生した場合は当然手も足もでません。

インスタンス作成時に最初にこの作業してから使っていった方が良いかもしれませんね。

しかし・・・

ProductCodeを除去するこのような作業をしたインスタンスを使っていく場合は以降AWSのサポート外になる模様。。

うーん。。でもそもそも無料サポートのBASICは上限緩和しかサポートメニュー無いから恐れる事はないか・・・?

コメントを残す

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>