はじめに
最近はシステムデータ用途にInstance Store Image を利用することは少ないと思うが、
終了時にディスクが消去されてもよい状況で、追加費用無しで利用できる
ディスクとして利用する状況はまだそれなりにあると思う。
今回は既存の EBS で稼働しているシステムから Instance Store Image を使用したAMIを作成する。
必要なもの
- AWS Access Key ID (S3にアクセス権限のある IAM ユーザー)
- AWS Secret Key (S3にアクセス権限のある IAM ユーザー)
- S3 Bucket (AMIデータのアップロード先)
- AWS Account Number (ここで確認できる)
- X.509 証明書 (~/certificate/iam_cert.crt)
- X.509 秘密鍵 (~/certificate/iam_cert.key)
また Amazon Linux 以外のディストリの場合は、
事前に Amazon EC2 CLI や AMI Tools の導入が必要になる。
Setting Up the Amazon EC2 CLI and AMI Tools
Setting Up the Amazon EC2 Command Line Interface Tools on Linux/Unix and Mac OS X
IAM ユーザーの作成
AWS ダッシュボードから
- Identity & Access Management
- Users
を選択し、S3にアクセス権限のある IAM User を作成する。
S3 Bucket の準備
AWS ダッシュボードから、
- S3
- Create Bucket
を選択し、作成するAMIを保存する Bucket Name を記述、Region を選択し Createをクリック。
X. 509 証明書
証明書と秘密鍵の作成
X. 509 証明書が必要になるが、今回は作業用に自作する。
作業用マシンにディレクトリを作成し、下記のコマンドを実行し、
必要事項を入力する。
$ mkdir -p ~/certificate
$ cd ~/certificate
$ openssl genrsa -rand rand.dat -des3 2048 > iam_cert.key # 秘密鍵作成
$ openssl req -new -x509 -out iam_cert.crt -key iam_cert.key # 証明書作成
証明書と秘密鍵のアップロード
イメージ作成元となるインスタンスに以下のコマンドで秘密鍵と証明書をコピーする。
$ scp -i ~/.ssh/[AWS にアクセスするための秘密鍵] iam_cert.key ec2-user@[Instance Public IP]:/tmp/iam_cert.key
$ scp -i ~/.ssh/[AWS にアクセスするための秘密鍵] iam_cert.crt ec2-user@[Instance Public IP]:/tmp/iam_cert.crt
Image の作成
下記コマンドをイメージ作成元となるインスタンスで実行する。
最小構成のインスタンスで処理終了までに10分程度はかかった。
-e /tmp
の部分は証明書を置いたディレクトリを指定する。
$ sudo su -
# ec2-bundle-vol --no-filter -k /tmp/iam_cert.key \
-c /tmp/iam_cert.crt -u [AWS Account Number] -r x86_64 -e /tmp/
# exit # root から抜ける
S3へイメージをアップロード
$ ec2-upload-bundle --location ap-northeast-1 -b [bucket_name/bundle_name] \
-m /tmp/image.manifest.xml -a [access_key_id] -s [secret_access_key]
AMIの登録
$ ec2-register [bucket_name/bundle_name]/image.manifest.xml \
--region ap-northeast-1 -n [AMI name] \
-O [your_access_key_id] -W [your_secret_access_key]
IMAGE ami-cXXXXXXXX
AWS ダッシュボードの
- EC2
- IMAGES
- AMIs
- IMAGES
に作成した AMI が登録されているのを確認できればOK。
おわりに
あとは作成した AMI を利用してインスタンスを作成すればよい。
ただし、t2.micro 等の EBS しか使えないマシンでは利用できないので、
その点には注意が必要。
参考文献
Creating an Instance Store-Backend Linux AMI
Instance Store-BackedのAMIをつくる