タイトルがやたらと長くなってしまいました。監督です。

前回AWSについてちょこっとだけお伝えしましたが、もうひとつ良かった点として、AWSのコンソールが非常に優秀というところがあります。基本的な作業は、ブラウザで実行出来るこのコンソールでほとんど実行できます。ただし、いくつかの作業はコマンドラインから実行せねばなりません。

今日ご紹介するのはそのひとつ、Root Device Type が instance-store である EC2 の instance の AMI 作成です。※Root Device Type が EBS であればコンソールから実行出来ます。

まず、AWSのページからアクセスキーとセキュリティ証明書を取得しておきましょう。ここらへんから取得出来ます。アクセスキーとセキュリティ証明書の使い分けは、AWSのAPIがRESTなものとSOAPなものがあるためのようです。正直面倒です。取得した証明書はAMIを作成したいサーバーの適当なところに設置しといてください。あと、ユーザー番号もメモっておいてください。セキュリティ証明書が取得出来るページに、「口座番号」として記載されています。これもしばらく気付かなかった。。

で、本題です。とりあえず説明抜きで。

  1. S3に bucket と folder を作成する
  2. サーバー上でディスクイメージを作成する
  3. S3にアップロード
  4. AMIとして登録

ってな感じです。以下詳細。

  1. イメージデータはS3に保存されるので、先に bucket と folder を作っておきます。この作業はコンソールからでも問題ありません。
  2. 以下のコマンドラインツールでイメージデータを作成します。このコマンドラインツール、そもそも Amazon Linux をOSで指定していないと入っていないようですので他のOSの場合インストールが必要なようです。
  3. # ec2-bundle-vol -d /mnt --privatekey [プライベートキーファイル] --cert [証明書ファイル] --user [ユーザー番号] --fstab /etc/fstab -r x86_64
    
  4. 1番で作成されたイメージをS3にアップロードします。
  5. # cd /mnt
    # ec2-upload-bundle --bucket [作ったバケット/フォルダ] --manifest image.manifest.xml --access-key [アクセスキーID] --secret-key [シークレットアクセスキー]
    
  6. 2番でアップロードされたイメージをAMIとして登録します。
  7. # ec2-register -K [プライベートキーファイル] -C [証明書ファイル] -n [AMI名] --region [リージョン:ap-northeast-1 とか] [作ったバケット/フォルダ]/image.manifest.xml
    

大体こんな感じでした。