AWS 
VM Import/Export 
ハンズオン 
JAWS Festa Tohoku 2014, 6 September 2014 
Haruka Iwao
もくじ 
はじめに 
VM Import / Export とは 
詳しい使い方 
実際にやってみよう
はじめに
Disclaimer(おやくそく) 
この発表は個人的なもので、 
所属する組織の見解ではあり 
ません 
内容は無保証です
わたしはだれ? 
岩尾はるか(@Yuryu) 
レッドハットで働いています 
ストレージが専門です 
大阪→つくば→横浜→東京 
上野からスーパーひたちで仙 
台に来たことがあります 
好きなサービス: S3
VM Import / Export とは
EC2のインスタンスを出し入れ 
EC2はXenで動いている 
HVMでは完全仮想化環境 
手元の仮想マシンとディスク 
イメージのやりとりが可能
何がうれしいの? 
秘伝のサーバーをそのまま 
EC2に移行できる 
とりあえずEC2に移して、 
サーバーが動くか確認できる
対応OS 
イメージを改変するので、対応OS 
に限りがある 
Windows Server 2003/2003 R2/ 
2008/2008 R2/2012/2012 R2 
Red Hat Enterprise Linux(RHEL) 
/CentOS 5.1~6.5(6.0を除く) 
Ubuntu 12.04~13.10 
Debian 6.0.0~6.0.8, 7.0~7.2 
RHEL 7やUbuntu 14.04は未対応
OSのライセンス 
WindowsはAWSが用意するラ 
イセンスに移行 
時間課金になる 
RHELは手元のサブスクリプ 
ションをAWS上に移行 
年間契約のまま
サポートするイメージ形式 
VMware VMDK 
Hyper-V VHD 
Citrix Xen VHD 
その他の形式もコンバートす 
れば利用可能
サポートされるインスタンス 
Windowsは何でもOK 
Linuxは一部 
インポートしてから変更はOK
その他注意書き 
サポート対象はしばしば更新 
されるのでAWSのドキュメン 
トで確認 
http://docs.aws.amazon.com/AW 
SEC2/latest/UserGuide/VMImpor 
tPrerequisites.html
VM Exportについて 
インポートしたインスタンス 
のみエクスポート可能 
S3にエクスポートされる
詳しい使い方
Amazon EC2 CLI を使う 
ec2- で始まるJavaのツール 
AWS CLI(Python製)は非対応 
Amazon Linux にはじめから 
入っている
環境変数をセット 
AWS_ACCESS_KEY 
AWS_SECRET_KEY 
EC2_URL 
リージョンです 
東京はhttps://ec2.ap-northeast- 
1.amazonaws.com
VirtualBoxを使う場合 
VBoxManage internalcommands 
converthd –srcformat VDI -dstformat 
VMDK <source> <dest> 
VirtualBoxで直接使うVMDK 
ファイルは使用不可
QEMUを使う場合 
qemu-img convert –f qcow2 – 
O vmdk <source> <dest>
インポートの手順
インポートの流れ(内部処理) 
S3にアップロード 
インスタンスを登録 
つなぎ合わせてEBSボリュー 
ムを作成
ec2-import-instance 
ec2-import-instance 
-o $AWS_ACCESS_KEY 
-w $AWS_SECRET_KEY 
-f VMDK 
-t t2.micro -a x86_64 -p Linux 
--subnet <対象サブネット> 
-z <AZ: サブネットに合わせる> 
–b <作業用S3 Bucket> 
centos6.vmdk(インポートするファイル名)
S3に登録された様子
進行状況をチェック 
ec2-describe-conversion-tasks
S3の作業用ファイルを削除 
ec2-delete-disk-image 
-o $AWS_ACCESS_KEY 
-w $AWS_SECRET_KEY 
-t <対象タスクID>
エクスポートの手順
エクスポートの準備 
使うS3のバケットに権限付与 
vm-import-export@amazon.com 
Upload/DeleteとView Permissions
ec2-create-instance-export-task 
ec2-create-instance-export-task 
<インスタンスID> 
-e VMware 
-b <出力bucket>
ec2-describe-export-tasks 
状況を表示 
終わるとactive→completed に 
変化します
S3を確認 
ファイルができている 
あとは煮るなり焼くなり
実際にやってみよう
S3のバケット作成 
リージョンを合わせること
作業用EC2立ち上げ 
t2.micro でAmazon Linux のイ 
ンスタンスを起動 
会場の回線が限られているので 
EC2上で作業します 
VPCが無い人はVPCも
参考:EC2 API Toolsのインストー 
ル 
OS X 
$ brew install ec2-api-tools 
$ echo ‘export JAVA_HOME="$(/usr/libexec/java_home)”’  
>> ~/.bash_profile 
$ echo ‘export EC2_HOME=/usr/local/Cellar/ec2-api-tools/ 
1.7.1.0/libexec’ >> ~/.bashrc 
Cellar のパスはバージョンごとに変わるので要確認
参考:EC2 API Toolsのインストー 
ル 
Linux 
$ wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip 
$ # Ubuntu の場合 
$ echo 'export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/jre"’ 
 >> .profile 
$ # Fedora / CentOS の場合 
$ echo 'export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk"’  
>> .bash_profile 
ec2-api-tools.zip を展開(unzip) 
$ unzip ec2-api-tools.zip 
$ echo “export EC2_HOME=$(pwd)/ec2-api-tools-1.7.1.1”  
>> .profile 
$ echo ‘export PATH=$PATH:$EC2_HOME/bin’ >> .profile 
EC2_HOME のパスはバージョンによって変わるので要確認
インポートするVMの準備 
今回はすでに作成したものを 
使います 
$ wget bit.ly/sendai-vm-import-2014 
このURLは期間限定です
環境変数を用意します 
aws.sh というファイルに内容 
を用意 
$ source aws.sh を実行 
export AWS_ACCESS_KEY=xxx 
export AWS_SECRET_KEY=xxx 
export EC2_URL=https://ec2.ap-northeast-1.amazonaws.com
インポート 
ec2-import-instance 
-o $AWS_ACCESS_KEY 
-w $AWS_SECRET_KEY 
-f VMDK 
-t t2.micro -a x86_64 -p Linux 
--subnet <対象サブネット> 
-z <AZ: サブネットに合わせる> 
–b <作業用S3 Bucket> 
centos6.vmdk(インポートするファイル名)
サブネットIDの調べ方
しばらく待ちます 
ec2-describe-conversion-tasks 
で進行状況をチェック
コンソールから確認
起動してみよう 
id:root, password:centos で入 
れます
エクスポートしてみよう 
ec2-create-instance-export-task 
<インスタンスID> 
-e VMware 
-b <出力bucket>
おまけ: Docker化
VolumeのDocker化 
標準では、インポートしたも 
のではないインスタンスは持 
ち出せないので、Dockerで持 
ち出してみよう
ボリュームをマウント
マウントして固める 
# mount /dev/xvdf1 /mnt 
# cd /mnt 
# tar --numeric-owner -czpf 
/tmp/amazon-linux.tar.gz . 
必要に応じてファイルを移動
Docker にインポート 
# cat /tmp/amazon-linux.tar.gz 
| docker - amazon
何か実行 
# docker run -it amazon cat 
/etc/system-release
Thank you!

AWS VM import / export ハンズオン