以前にも、us-west-1のAMI(EBS)をap-southeast-1にて同じような内容を紹介していますが、AWS環境もいろいろなアップデートがされているので、再度下記にまとめておきます。
(1) 移行元リージョンでの作業
(1-1) Amazon Linuxを立ち上げ、ログインします。
尚、ログインはec2-userなので注意が必要です。
(1-2) rootにスイッチします。
$ sudo su -
(1-3) 作業用EBSの作成とアタッチをします。
15G(適宜必要なサイズ)でEBSを作成し、/dev/sdf1にアタッチします。
(1-4)ファイルシステムを作成してマウントします。
# mkfs.ext4 /dev/xvdf1 # mount -t ext4 /dev/xvdf1 /mnt/
(1-5) AMIのスナップショットからEBSを作成しアタッチします。
該当するスナップショットから6G(スナップショットのサイズ)で作成して/dev/sdf2にアタッチします。
(1-6) AMIのルートディスクイメージをファイルに出力し、圧縮します。
# dd if=/dev/xvdf2 of=/mnt/suz-lab.img # bzip2 /mnt/suz-lab.img
(2) 移行先リージョンでの作業
(2-1) Amazon Linuxを立ち上げログインします。
尚、ログインはec2-userなので注意が必要です。
(2-2) rootにスイッチします。
$ sudo su -
(2-3) 作業用EBSの作成とアタッチをします。
15G(適宜必要なサイズ)でEBSを作成し、/dev/sdf1にアタッチします。
(2-4)ファイルシステムを作成してマウントします。
# mkfs.ext4 /dev/xvdf1 # mount -t ext4 /dev/xvdf1 /mnt/
(3) 移行元リージョンのインスタンスから移行先リージョンのインスタンスにAMIのルートディクスイメージファイルを転送
(4) 再び移行先リージョンでの作業
(4-1) AMIのルートディスクイメージ用EBSを作成しアタッチします。
6G(ルートディスクイメージのサイズ)でEBSを作成し、/dev/sdf2にアタッチします。
(4-2) 転送されたルートディスクイメージファイルを解凍しEBSへ書き込みます。
# bzip2 -d /mnt/suz-lab.img.bz2 # dd if=/mnt/suz-lab.img of=/dev/xvdf2
(5) ルートディスクイメージのスナップショットをAMIとして登録
require_once("/opt/aws/php/sdk.class.php"); define("AWS_KEY" , "AAAAAAAA"); define("AWS_SECRET_KEY", "SSSSSSSS"); $ec2 = new AmazonEC2(); $ec2->set_region(AmazonEC2::REGION_US_E1); $response = $ec2->register_image(array( "Name" => "suz-lab_ebs_centos-core-i386-6.0.1", "Architecture" => "i386", "KernelId" => "aki-805ea7e9", "RootDeviceName" => "/dev/sda1", "BlockDeviceMapping" => array( array( "DeviceName" => "/dev/sda1", "Ebs" => array( "SnapshotId" => "snap-078cd466" ) ) ) )); var_dump($response);