株式会社ライブキャストロゴ 株式会社ライブキャスト

私もガッツリはまりました。。。
以前に作成していたFedora8のインスタンスを起動するも、puTTYで接続できず。
なんと、Amazon EC2ツールのバグだとか。rx7さん、有益な情報ありがとうございます。
Amazon EC2の公式AMI(Fedora8)利用時の注意点(SSH接続できなくなる場合有) – RX-7乗りの適当な日々

泣く泣くあきらめ、新たにインスタンスを作成することに(何をSetupしてたのかも忘れてしまっていましたが)。

1.fedora-8-i386-base-v1.07.manifest.xmlを選択・起動
Amazonが提供しているパブリックなAMIはFedora系しかないんです。

Standard Instances

Instances of this family are well suited for most applications.

    * $0.10 – Small Instance (Default) 1.7 GB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB of instance storage, 32-bit platform

    * $0.40 – Large Instance 7.5 GB of memory, 4 EC2 Compute Units (2 virtual cores with 2 EC2 Compute Units each), 850 GB of instance storage, 64-bit platform

    * $0.80 – Extra Large Instance 15 GB of memory, 8 EC2 Compute Units (4 virtual cores with 2 EC2 Compute Units each), 1690 GB of instance storage, 64-bit platform

High-CPU Instances

Instances of this family have proportionally more CPU resources than memory (RAM) and are well suited for compute-intensive applications.

    * $0.20 – High-CPU Medium Instance 1.7 GB of memory, 5 EC2 Compute Units (2 virtual cores with 2.5 EC2 Compute Units each), 350 GB of instance storage, 32-bit platform

    * $0.80 – High-CPU Extra Large Instance 7 GB of memory, 20 EC2 Compute Units (8 virtual cores with 2.5 EC2 Compute Units each), 1690 GB of instance storage, 64-bit platform

Small Instanceの積んでいるメモリは1.7G、Large Instanceの積んでいるメモリは7.5G。というわけで、32ビット系はSmall Instanceでしか起動できません。逆もしかりで64ビット系はLarge Instance以上でないと起動できません。というわけで、一番安価なStandardのSmall Instanceを立ち上げることのできるfedora-8-i386-base-v1.07.manifest.xmlを選択。

ElasticfoxにてAMIを立ち上げます。右クリックし、コンテキストメニューから「Launch instance(s) of this AMI」を選択しますと「Launch new instance(s)」画面が立ち上がります。

※ ここでは、keypair:gsg-keypairを選択せずに起動するとその後sshで接続する際につながりませんので注意!

この後、Instanceが立ち上がるまで少し時間がかかります。Elasticfoxの画面下部に立ち上げたInstanceが表示されますので、右クリックのコンテキストメニューから「Copy Public DNS Name to clipboard」を選択し、各Instance起動時に自動で振られるドメイン名をコピーします(ssh接続で必要)。

※ 課金体系は$/hだが、Instanceの起動/停止の度にも課金されるので注意!(OSの再起動は課金されない)1時間に10回の起動/停止を繰り返すと0.1$/h ×10h =1$

2.puTTYで接続
puTTYを立ち上げホスト名を入力(root@hostname形式で入力)。hostname部分は1でコピーしたPublic DNS Name。

接続できた!

3.スペックの確認
以下のコマンドをたたいてスペックを確認。当然ながら、表記どおりのスペックでした。

  • OSバージョンの確認(cat /etc/redhat-release)
  • CPUの確認(cat /proc/cpuinfo)
  • メモリの確認(cat /proc/meminfo)

4.emacsのインストール
テキストファイルを作成して、Instance再起動後、そのファイルが保存されているか確認する。viでもよかったが、キーバインドがよくわからないのでとりあえずemacsをインストール。

[root@ip-10-251-90-31 ~]# yum install emacs
Loading “fastestmirror” plugin
Determining fastest mirrors
 * fedora: mirror.cogentco.com
 * updates: mirror.cogentco.com
fedora                    100% |=========================| 2.1 kB    00:00
primary.sqlite.bz2        100% |=========================| 4.9 MB    00:00
updates                   100% |=========================| 2.6 kB    00:00
primary.sqlite.bz2        100% |=========================| 2.2 kB    00:00



Installed: emacs.i386 0:22.1-6.fc8
Dependency Installed: emacs-common.i386 0:22.1-6.fc8 giflib.i386 0:4.1.3-8 libXfont.i386 0:1.3.1-1.fc8 libXpm.i386 0:3.5.7-1.fc8 libfontenc.i386 0:1.0.4-4.fc8 xorg-x11-font-utils.i386 1:7.2-2.fc8 xorg-x11-fonts-ISO8859-1-100dpi.noarch 0:7.2-3.fc8
Complete!

ちゃんと保存されたかはemacsが起動するかで確認することにしよう。

5.イメージファイルの作成
ということで、起動したInstanceをイメージファイルとして保存します。ec2-bundle-volコマンドを実行します。

[root@ip-10-251-90-31 ~]# ec2-bundle-vol -d /mnt -k pk-XXXXXXXXXXXXXXX.pem -u xxxxxxxxxxxx -c cert-XXXXXXXXXXXXXXX.pem
Please specify a value for arch [i386]:
Copying / into the image file /mnt/image…



Bundling image file…
Splitting /mnt/image.tar.gz.enc…
Created image.part.00
Created image.part.01
Created image.part.02



Created image.part.32
Created image.part.33
Generating digests for each part…
Digests generated.
Unable to read instance meta-data for product-codes
Creating bundle manifest…
ec2-bundle-vol complete.
  • -d:イメージファイルを出力するサーバ上のパスを指定(/mntでいいと思います)
  • -k:X.509証明書を指定
  • -u:Account Numberを指定
  • -c:X.509秘密鍵を指定

※ pk-XXXXXXXXXXXXXXX.pemとcert-XXXXXXXXXXXXXXX.pemはあらかじめInstance内に保存しておきます。以前はこの処理に20~30分かかってたような気がしますが、今は5分程度でした。パフォーマンスもずいぶん改善されているようです。

6.S3へのアップロード
作成したイメージファイルをAmazon S3にアップロードします。ec2-upload-bundleコマンドを実行します。

[root@ip-10-251-90-31 ~]# ec2-upload-bundle -b backetname -m /mnt/image.manifest.xml -a XXXXXXXXXXXXXXXXXXXX -s XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Setting bucket ACL to allow EC2 read access …
Uploading bundled image parts to https://s3.amazonaws.com:443/backetname …
Uploaded image.part.00 to https://s3.amazonaws.com:443/backetname/image.part.00
Uploaded image.part.01 to https://s3.amazonaws.com:443/backetname/image.part.01
Uploaded image.part.02 to https://s3.amazonaws.com:443/backetname/image.part.02



Uploaded image.part.32 to https://s3.amazonaws.com:443/backetname/image.part.32
Uploaded image.part.33 to https://s3.amazonaws.com:443/backetname/image.part.33
Uploading manifest …
Uploaded manifest to https://s3.amazonaws.com:443/backetname/image.manifest.xml
Bundle upload completed.
  • -b:Amazon S3の保存先フォルダ名を指定
  • -m:アップロードするイメージファイル名を指定
  • -a:Access Key IDを指定
  • -s:Secret Access Keyを指定

むむっ。何かエラーが出てるぞ。ま、いっか。後で調べよう。

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.

※ ここまでがサーバ上での作業になります。

7.アップロードしたイメージの登録
Amazon S3にアップロードしたイメージファイルをカスタムAMIとしてリストに登録します。クライアント側に戻って、ec2-registerコマンドを実行します。

[asato@bagus]~% ec2-register backetname/image.manifest.xml
IMAGE   ami-xxxxxxxx

引数にバケット名からイメージファイルを指定します。登録が完了するとami-xxxxxxxx形式のIDが発番され、自分だけのカスタムAMIの完成です。

8.インスタンスの停止
Elasticfoxにて、起動したInstanceを停止します。Instanceを選択し、右クリックの「Terminate this instance」を選択します。

しばらくすると、Instanceが停止します。

以上でAMI起動~停止までの一連の作業になります。その後、だめもとで保存したAMIを再起動してpuTTYで接続し、emacsとたたくと・・・おっ。立ち上がった。4.でインストールしたemacsはちゃんと保存されていました。なのでfedora8のAmazon EC2ツールのバグは解消されていました。ヨカッタヨカッタ。