インスタンスに必要なソフトをインストールしカスタマイズした場合、インスタンス終了(Terminate)後、再起動する為には自前のAMIとして保存しておく必要があります。
今回はその方法です。
これまでの操作は全て「AWS Management Console」というUIで操作可能でしたが、今回ばかりは、インスタンス上で「Amazon EC2 AMI Tools」というコマンドを実行する必要があります。
ですので、若干、いろいろと行ないます。
まずは準備から
- インスタンスへのJAVAのセットアップ
「Amazon EC2 AMI Tools」がJAVAを使用している為、JAVAをインスタンスへインストールします。(手順は『【Amazon EC2】インスタンスへのJAVAのインストール方法』を参照してください。)
- 「Amazon EC2 AMI Tools」がインストールされていることをwhichコマンドで確認します。インストールされているディレクトリが表示されればOKです。
# which ec2-bundle-vol
/usr/local/bin/ec2-bundle-vol
私が試したいくつかのAMIでは全てインストール済でした。
もしもインストールされていない場合、ここからダウンロードしてインストールしてください。そのあと、JAVAと同じようにPATHを通してください。
- X.509証明書のAMIバンドルの準備
自前AMIを作成する際、以下が必要になりますので、/mntへ転送します。
(転送手順は『【Amazon EC2】SSH経由でのファイル転送方法』を参照してください。)
- X.509証明書(cert-XXXXXX.pem)
- 秘密鍵(pk-XXXXXX.pem)
以上でインスタンス側の準備は終了です。
- 自前AMIの保存するS3の準備
自前AMIの保存先をS3に作成します。保存先はBucket(バケット)と呼ばれるフォルダを作成することになります。S3Foxを使用します。
(S3Foxの準備は『【Amazon S3】S3のツールS3Foxのセットアップ方法』を参照してください。)
- (1) 赤枠の「Create Bucket/Directory」を選択して下さい。
- (2) Bucketを入力して、OKを選択。名前はあとでどのインスタンスを保存したか、わかりやす名前の方がいいですね。
- 最後に、自分のユーザNOを調べておきます。
- (1) Your Acount-Account Activityを選択して下さい。
- (2) Account Numberをメモしておきます。
以上で、全て準備完了です。
いよいよ実行です。
- 自前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.
- 次に出来上がった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.
- S3FoxでS3に転送されたか確認します。
- 今度はAWS Management ConsoleでS3に作成されたAMIイメージを登録します。
- (1) 左メニューのAMIsを選択しRegister New AMIを選択します。
- (2)先ほどS3に作成したBucket/マニュフェストファイル名を指定しRegisterを選択します。
- (3)登録が完了された旨、表示されたらCloseを選択します。
- (4)自前AMIが登録されました。
ちなみ、De-registerで登録を削除できます。
- 登録された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
Leia Mais…