月曜日, 10月 26, 2009

【Amazon EC2】自前のAMIの作成と保存方法 (Linux系OS編)

インスタンスに必要なソフトをインストールしカスタマイズした場合、インスタンス終了(Terminate)後、再起動する為には自前のAMIとして保存しておく必要があります。
今回はその方法です。

これまでの操作は全て「AWS Management Console」というUIで操作可能でしたが、今回ばかりは、インスタンス上で「Amazon EC2 AMI Tools」というコマンドを実行する必要があります。
ですので、若干、いろいろと行ないます。

まずは準備から

  1. インスタンスへのJAVAのセットアップ
    「Amazon EC2 AMI Tools」がJAVAを使用している為、JAVAをインスタンスへインストールします。(手順は『【Amazon EC2】インスタンスへのJAVAのインストール方法』を参照してください。)
  1. 「Amazon EC2 AMI Tools」がインストールされていることをwhichコマンドで確認します。インストールされているディレクトリが表示されればOKです。

    # which ec2-bundle-vol
    /usr/local/bin/ec2-bundle-vol
    私が試したいくつかのAMIでは全てインストール済でした。
    もしもインストールされていない場合、ここからダウンロードしてインストールしてください。そのあと、JAVAと同じようにPATHを通してください。

  1. X.509証明書のAMIバンドルの準備
    自前AMIを作成する際、以下が必要になりますので、/mntへ転送します。
    (転送手順は『【Amazon EC2】SSH経由でのファイル転送方法』を参照してください。)

    • X.509証明書(cert-XXXXXX.pem)
    •  秘密鍵(pk-XXXXXX.pem)

    以上でインスタンス側の準備は終了です。

  1. 自前AMIの保存するS3の準備
    自前AMIの保存先をS3に作成します。保存先はBucket(バケット)と呼ばれるフォルダを作成することになります。S3Foxを使用します。  
    (S3Foxの準備は『【Amazon S3】S3のツールS3Foxのセットアップ方法』を参照してください。)
  • (1) 赤枠の「Create Bucket/Directory」を選択して下さい。



  • (2) Bucketを入力して、OKを選択。名前はあとでどのインスタンスを保存したか、わかりやす名前の方がいいですね。



  • (3) Bucketが作成されました。



  1. 最後に、自分のユーザNOを調べておきます。
  • (1) Your Acount-Account Activityを選択して下さい。



  • (2) Account Numberをメモしておきます。


    以上で、全て準備完了です。


いよいよ実行です。

  1. 自前AMIのインスタンスをバンドルします。インスタンスログイン後、以下のコマンドを実行して下さい。
    (ログイン手順は『【Amazon EC2】SSH経由でTelnet』を参照してください。)
    少し、時間がかかります。

    cd /mnt
    ec2-bundle-vol -d /mnt --privatekey pk-XXXXXX.pem --cert cert-XXXXXX.pem --user XXXX-YYYY-ZZZZ -r i386

    それぞれのパラメータの意味は以下になります。
    • pk-XXXXXX.pem:準備3で転送した秘密鍵名を指定します。
    • cert-XXXXXX.pem:準備3で転送したX.509証明書名を指定します。
    • XXXX-YYYY-ZZZZ:準備5で調べたユーザNOを指定します。
    • i386:32ビット時;i386、64ビット時: x86_64 と指定します。

    (実行状況)
    Copying / into the image file /mnt/image...
    Excluding:
    /sys
    /proc
    /sys/fs/fuse/connections
    /dev/pts
    /proc/sys/fs/binfmt_misc
    /dev
    /media
    /mnt
    /proc
    /sys
    /mnt/image
    /mnt/img-mnt
    1+0 records in
    1+0 records out
    1048576 bytes (1.0 MB) copied, 0.0018 s, 583 MB/s
    mke2fs 1.40.4 (31-Dec-2007)
    NOTE: rsync with preservation of extended file attributes failed. Retrying rsync
    without attempting to preserve extended file attributes...
    NOTE: rsync seemed successful but exited with error code 23. This probably means
    that your version of rsync was built against a kernel with HAVE_LUTIMES defined,
    although the current kernel was not built with this option enabled. The bundling
    process will thus ignore the error and continue bundling.  If bundling completes
    successfully, your image should be perfectly usable. We, however, recommend that
    you install a version of rsync that handles this situation more elegantly.
    Bundling image file...
    Splitting /mnt/image.tar.gz.enc...
    Created image.part.00
    Created image.part.01
    Created image.part.02
    Created image.part.03
    Created image.part.04
    Created image.part.05
    Created image.part.06
    Created image.part.07
    Created image.part.08
    Created image.part.09
    Created image.part.10
    Created image.part.11
    Created image.part.12
    Created image.part.13
    Created image.part.14
    Created image.part.15
    Created image.part.16
    Created image.part.17
    Created image.part.18
    Created image.part.19
    Created image.part.20
    Created image.part.21
    Created image.part.22
    Created image.part.23
    Created image.part.24
    Created image.part.25
    Created image.part.26
    Created image.part.27
    Created image.part.28
    Created image.part.29
    Created image.part.30
    Created image.part.31
    Created image.part.32
    Generating digests for each part...
    Digests generated.
    Unable to read instance meta-data for product-codes
    Creating bundle manifest...
    ec2-bundle-vol complete.
  1. 次に出来上がったAMIイメージをS3へ転送します。
    ec2-upload-bundle --bucket fedora0001 --manifest image.manifest.xml --access-key XXXXXXXX --secret-key YYYYYYYY
    

    それぞれのパラメータの意味は以下になります。
    ・fedora0001:S3にさきほど作成したBucket名を指定します。
    ・image.manifest.xml:S3上に作成されるマニュフェストファイル名を指定します。何でもいいです。
    ・XXXXXXXX:『S3のツールS3Foxのセットアップ方法』で調べたAccess Key ID。
    ・YYYYYYYY:『S3のツールS3Foxのセットアップ方法』で調べたSecret Access Key。

    (実行状況)
    Uploading bundled image parts to the S3 bucket fedora0001 ...
    Uploaded image.part.00
    Uploaded image.part.01
    Uploaded image.part.02
    Uploaded image.part.03
    Uploaded image.part.04
    Uploaded image.part.05
    Uploaded image.part.06
    Uploaded image.part.07
    Uploaded image.part.08
    Uploaded image.part.09
    Uploaded image.part.10
    Uploaded image.part.11
    Uploaded image.part.12
    Uploaded image.part.13
    Uploaded image.part.14
    Uploaded image.part.15
    Uploaded image.part.16
    Uploaded image.part.17
    Uploaded image.part.18
    Uploaded image.part.19
    Uploaded image.part.20
    Uploaded image.part.21
    Uploaded image.part.22
    Uploaded image.part.23
    Uploaded image.part.24
    Uploaded image.part.25
    Uploaded image.part.26
    Uploaded image.part.27
    Uploaded image.part.28
    Uploaded image.part.29
    Uploaded image.part.30
    Uploaded image.part.31
    Uploaded image.part.32
    Uploading manifest ...
    Uploaded manifest.
    Bundle upload completed.
  1. S3FoxでS3に転送されたか確認します。

  1. 今度はAWS Management ConsoleでS3に作成されたAMIイメージを登録します。
  • (1) 左メニューのAMIsを選択しRegister New AMIを選択します。


  • (2)先ほどS3に作成したBucket/マニュフェストファイル名を指定しRegisterを選択します。


  • (3)登録が完了された旨、表示されたらCloseを選択します。

  • (4)自前AMIが登録されました。



    ちなみ、De-registerで登録を削除できます。


  1. 登録されたAMIを選択しLaunchを選択することで起動できます。


以上になります。ちょっと今回はたいへんでした。


今回の手順はAmazonにもマニュアルがあります。以下を参考にしてください。

◯AMI関連の操作マニュアルはここにあります。
メニューからたどる場合、以下になります。
ResourcesーDocumentationーAmazon Elastic Compute CloudーGetting Started Guide

次に左メニューを以下のようにたどると参照できます。
Getting Started with the Command Line ToolsーRunning an InstanceーLinux and UNIXーBundling an AMI

◯「Amazon EC2 AMI Tools」のコマンドマニュアルはここにあります。
メニューからたどる場合、以下になります。ResourcesーDocumentationーAmazon Elastic Compute CloudーCommand Line Reference

次に左メニューを以下のようにたどると参照できます。
AMI Tools Referenceーec2-bundle-vol
AMI Tools Referenceーec2-upload-bundle