AMIの作成/保存/起動
AMIの作成
AMIを作成するには、まずインスタンスに「X.509証明書」を転送します。X.509証明書は「pk-xxxxx.pem」と「cert-xxxxx.pem」の2種類となります。なお、インスタンスへログインする際に使用するキーは、前回同様「fedora_test.id」とします。
$ scp -i fedora_test.id *.pem root@ec2-xx-xx-xx-xx.compute-1.amazonaws.com:/mnt
次に、インスタンスのディスク内容を基にAMIを作成します。インスタンスにSSHでログインし、次のコマンドを実行します。
ec2# cd /mnt/ ec2# ec2-bundle-vol -d /mnt --privatekey pk-xxxxx.pem --cert cert-xxxxx.pem --user xxxx-xxxx-xxxx --fstab /etc/fstab
上記では、--privatekey
と--cert
の後ろに転送した2つの.pemファイルを、--user
の後ろには、アカウント番号(Account Number)を指定しています。
アカウント番号については、Amazon Web Servicesの「Account Activity」のページなどで確認できます。
リンク先へ遷移し(認証が必要です)、右上部にある「Account Number」を確認してください(図1参照)。
先ほどのec2-bundle-vol
コマンド実行後、次のようにアーキテクチャの種別を問われます。
Please specify a value for arch [i386]:
デフォルトのインスタンスタイプである「m1.small」なら、そのまま[Enter]を押してください。「m1.large」など、64ビットプラットフォームのインスタンスを利用している場合は、「x86_64
」と入力します。なお、インスタンスタイプについては前回の記事を参照ください。
なおAMIの作成には、使用しているディスク量に比例し、数分~十数分程度の時間がかかります。気長に待ちましょう。
AMIをAmazon S3へアップロードする
AMIの作成が完了したら、次はそのAMIを「Amazon S3」のストレージ上へアップロードします。これについても専用のコマンドが用意されているので、次の要領でコマンドを実行してください。
ec2# ec2-upload-bundle --bucket ${アップ先のバケット名} --manifest image.manifest.xml --access-key ${Access Key ID} --secret-key ${Secret Access Key}
--bucket
には保存先を示すバケット名を入力してください。例えば、「bucketname」というバケットを使っていて、その直下にある「ec2_images」ディレクトリ内に「fedora」という名前でAMIを保存したい場合は、上記例の${アップ先のバケット名}
部分に「bucketname/ec2_images/fedora
」と入力します。バケットについては第2回目の記事を参照ください。
--access-key
および--secret-key
については、同じく第2回記事の「アクセスキーの取得」で紹介した「Access Key ID」と「Secret Access Key」の値を入力してください。
AMIの登録/削除
次に、先ほどアップロードしたAMIからインスタンスを起動できるよう、AMIを登録してIDを発行します。SSHでインスタンスへ接続している場合は一度ログアウトし、ローカルで次のコマンドを実行してください。
$ ec2-register ${アップ先のバケット名}/image.manifest.xml IMAGE ami-be799cd7
上記の${アップ先のバケット名}
は、先ほどAMIをアップロードした際に指定した値を入力してください。
次のコマンドで、登録したAMIを確認できます。AMIからのインスタンス起動時に、ami-xxxxxxxx
形式で表示されている「AMIのID」を使うので、メモしておきましょう。
$ ec2-describe-images -o self IMAGE ami-be799cd7 ${アップ先のバケット名}/image.manifest.xml xxxxxxxxxxxx available private i386 machine aki-a71cf9ce ari-a51cf9cc
なお、登録したAMIを削除する場合は、次のコマンドを実行します。
$ ec2-deregister ${AMIのID}
作成したAMIからインスタンスを起動する
作成したAMIからディスク内容をロードしてインスタンスを起動する場合は、下記の要領でコマンドを実行してください。
# ec2-run-instances ${AMIのID} -k fedora_test.id
先ほどメモしたami-xxxxxxxx
形式の「AMIのID」を指定して、インスタンスへログインする際に必要となるキーを指定します。
インスタンス起動後、ログインしてディスク内容を確認してみましょう。AMIを作成をしたタイミングの状態に戻っているかと思います。
このように、あらかじめOSイメージファイル(AMI)を作ってしまえば、その状態から何個でも同じ(セットアップを行った)内容のインスタンスを起動することができます。これはサーバ仮想化技術の醍醐味の1つです。