
Amazon EC2の機能を詳しく見てみる(3)--インスタンスデータとAMI
Amazon Machine Image(AMI)
Amazon Machine Image(AMI)とは、単純に言ってしまうとルートパーティション(ルートファイルシステム)のイメージ(以降、ルートイメージ)です。もう少し詳細には、manifestファイルと圧縮・暗号化・分割されたルートパーティションのイメージからなります。
manifestファイルはXML形式のファイルで、AMIに関する各種情報が入っています。
ec2-describe-imagesコマンドでAMIの一覧が出てきます。以下は実行例です。
# ec2-describe-images -o amazon ... IMAGE ami-d1ca2db8 aws-toolkit-for-eclipse-amis-us/haproxy-v1.0.2.manifest.xml amazon available public i386 machine aki-a71cf9ce ari-a51cf9cc IMAGE ami-11ca2d78 aws-toolkit-for-eclipse-amis-us/tomcat-v1.0.0.manifest.xml amazon available public i386 machine aki-a71cf9ce ari-a51cf9cc IMAGE ami-2c5fba45 ec2-public-images/demo-paid-AMI-v1.07.manifest.xml amazon available public A79EC0DB i386 machine IMAGE ami-bd9d78d4 ec2-public-images/demo-paid-AMI.manifest.xml amazon available publicA79EC0DB i386 machine IMAGE ami-2f5fba46 ec2-public-images/developer-image-i386-v1.07.manifest.xml amazon available public i386 machine IMAGE ami-26b6534f ec2-public-images/developer-image.manifest.xml amazon available publici386 machine IMAGE ari-a51cf9cc ec2-public-images/ec2-initrd-2.6.21.7-2.fc8xen.i386.manifest.xml amazonavailable public i386 ramdisk IMAGE ari-b31cf9da ec2-public-images/ec2-initrd-2.6.21.7-2.fc8xen.x86_64.manifest.xml amazonavailable public x86_64 ramdisk IMAGE aki-a71cf9ce ec2-public-images/ec2-vmlinuz-2.6.21.7-2.fc8xen.i386.manifest.xml amazonavailable public i386 kernel IMAGE aki-b51cf9dc ec2-public-images/ec2-vmlinuz-2.6.21.7-2.fc8xen.x86_64.manifest.xml amazonavailable public x86_64 kernel ...
3カラム目がmanifestファイルで、Amazon S3システムでの格納場所を示しています。ルートイメージは同じバケットに格納されています。
ec2-describe-imagesで表示されるイメージには3種類あって、「ami-」で始まるのが AMIで、その他に「aki-」で始まるカーネル、「ari-」で始まるramdisk(initrd)があります。
実は、AMIの中のルートイメージには、カーネル、initrdは含まれません。カーネルとinitrdは別に指定します。通常、インスタンスの起動時には、AMIしか指定しませんが、それは、manifestファイルの中にカーネルとinitrdのIDが指定されているからです。また、指定されていなければ、プラットフォームごとに用意されているデフォルトのカーネルとinitrdが使用されます。
AMIの形式は、ドキュメントとして公開されていません。ただし、AMIの作成ツールは、オープンソースで提供されているため、ソースコードを読めば、一応仕様を知ることはできます。
ルートイメージを暗号化するために使用したキーは、manifestファイルに入っています。もちろん、このキー自体が暗号化されていますが、Amazon EC2 の公開鍵で暗号化したものと、AMIの作成者の公開鍵で暗号化したものの2つが入っています。そのため、Amazon EC2システム、または、AMIの作成者だけが復号できるということになります。
AMIの実行については、プライベートかパブリックが指定できます。パブリックを指定すると誰でも実行できます。プライベートの指定では、基本的には作成者のみ実行できますが、実行できるユーザーのリストを設定することもできます。
AMIの作成は、通常、既存のAMIをベースとして行います。既存のAMIを使用してインスタンスを起動し、必要なパッケージやプログラムの追加、構成ファイルの変更・追加を行った上で、インスタンス上で、ec2-bundle-volコマンドツールを使用して作成します。
AMIの作成は、ルートイメージを用意すれば出来ますが、いろいろな構成ファイルをAmazon EC2に合わせる必要があったり、カーネルに対応したカーネルモジュールを用意したりと面倒が多いので、既存のAMIから作成した方が無難です。
なお、Windows用のAMIの作成手順は、Linuxのものとは異なっています。詳細は、Developer Guide(PDFファイル)を参照してください。
さて、カーネルやinitrdの作成や登録はどうすればよいのでしょうか。実は、通常のユーザーはそれを行うことができません。つまり、ユーザーが、カーネルをカスタマイズすることはできないのです。従って、残念ながらカーネルの開発環境として、Amazon EC2を使用することはできません。
参考までに、LinuxのAMI用に用意されているカーネルは準仮想化カーネルが使用されています。仮想化ソフトとしてはXenを使用していると述べましたが、そのバージョンレベルなど、詳細が公開されているわけではありませんので、ユーザーが自由に作成できないのはある意味当然です。
Amazon EC2互換システムを作成する際には、AMIの仕様が公開されていない部分をどう実装するかが問題になりそうです。
筆者紹介
VA Linux Systems Japan 高橋浩和・小田逸郎・箕浦真(MAIL)
各種OS、仮想化、Linux Kernelおよびオープンソースにおける高度な技術と経験を基盤とした、技術コンサルティング、開発、インテグレーションとソフトウェアソリューションを提供。VA Linuxは、2000年9月に設立され、Linux Kernelや仮想化に関するグローバルレベルの技術力をベースにLinuxおよびオープンソース業界を牽引する中核企業として成長を続けている。
- 新着記事
- 特集
- ブログ
- 企画特集
-
働き方、生産性を根底から底上げ!
-
変化への対応はリアルタイム経営で
-
分析されたデータを活用できるか?
-
働き方改革にモニターが有効なワケ
-
ITシステムは永久のβ版思考で
-
ウルトラ帳票文化を乗り越える!
-
隗より始めよ
-
レガシーなインフラ設計を見直す
-
特集:ポスト2020時代のCX再考
-
意識してますか?PCの「信頼性」
-
特集:ビジネスを止めるな!
-
クラウドバックアップお悩み相談室
-
データ活用を加速するエコシステム
-
「データ」こそDXの主役
-
明治創業の鉄道企業がAWSに挑戦
-
どこまで可能?企業を究極の自動化
-
Why ワークプレース?
-
下した決断は「ハイブリッドへ」
-
サブスクモデルのSaaSで業務改善
-
働き方改革は身近な「改善」から
-
ビジネスの大きな転換点で勝者に!
-
ビジネス成功の砦はここにあり!
-
RPAがニガテなExcelをどう使う
-
AI活用が激変する新たなインフラ
-
攻めと守りのクラウド活用とは!?
-
講演レポ:ポスト2020時代の基盤
-
2020年代を勝ち抜くインフラ