nishio-dens's diary

Railsとかプログラミング関連の備忘録

Amazon EC2のイメージをAmazon S3にバックアップする

Amazon EC2では,インスタンスを終了すると保存されていたデータがすべて消えてしまいます.せっかくインストールしたソフトウェア等も,不慮の事態や誤った操作によってインスタンスが終了してしまった場合に消えてしまっては困ります.

そこで,Amazon S3にEC2イメージのフルバックアップを行う方法を紹介します.このようにしておけば,あとからS3上のバックアップデータからインスタンスを作成することができます.

なお,EC2からS3へのデータ転送は無料です.もちろん,S3にデータを置いておく料金はかかります.あくまでも転送が無料なだけです.

まずは,S3を利用するために証明書が必要です.アクセス証明書の秘密鍵とX.509証明書をダウンロードしておいてください.


この秘密鍵や証明書はEC2上に置いておく必要があります.よって,ダウンロード後にセキュアコピー等を使ってあらかじめEC2にアップロードしておいてください.

セキュアコピーはLinuxからはscpコマンドで行うことができます.ターミナル上で

scp -i sshアクセス用の秘密鍵 転送したいファイル ec2-user@EC2のアドレス

などとすればアップロードを行うことができます. Windowsを利用している方はWinSCP等のソフトを使うことでアップロードが可能です.

次に,Amazon EC2sshでログインします.ターミナルなどから

ssh -i 秘密鍵のパス ec2-user@EC2のアドレス

を入力し,sshでログインします. Windowsユーザの方はPuTTY等のソフトウェアを用いてアクセスを行ってください.

EC2にログイン後,

sudo su -

コマンドを入力し,rootユーザへと移行してください.

次にEC2上で ec2-bundle-vol コマンドを入力し,EC2のイメージのバックアップをとります.

イメージのバックアップをとるためには,X509の秘密鍵が必要です. ec2-bundle-volコマンドは

ec2-bundle-vol -d イメージを保存するディレクトリ --privatekey 秘密鍵 --cert 証明書 --user ユーザの口座番号

とすることで利用できます.--cert 証明書の部分は必要ないかもしれないです.

口座番号はAccountのページに書いてあります(下図の下線部分).


下図の例では,イメージのバックアップをとりあえず /mnt ディレクトリに保存することとしました.バックアップはmicro instanceでは15分から20分程度の時間がかかりましたが,この辺りは時間帯によって変ってくるかと思います.

コマンドが完了したら,イメージを保存したディレクトリに移動し,正しく作成されているかどうかを確認してください.

例では/mnt ディレクトリにイメージを作成したため,

cd /mnt

でディレクトリを移動し,lsコマンドでイメージが作成されているかを確認してください.また,ディレクトリの中にimage.manifest.xmlというファイルが存在しているはずです.このxmlはS3へのイメージアップロードの際に利用します.

次に,作成したイメージをS3にアップロードします.

ec2-upload-bundle コマンドを利用することで、S3にイメージをアップロードできます. ec2-upload-bundleコマンドは以下のように利用します.

ec2-upload-bundle --bucket S3のストレージ名 --manifest image.manifest.xml --access-key アクセスキー --secret-key シークレットキー

--bucket の後には,S3上で作成したバケット名を入力してください.また,アクセスキーおよびアクセスシークレットはAccountのページから確認できます.


イメージを保存したディレクトリに移動後,ec2-upload-bundleコマンドを入力してS3にイメージをバックアップしてください.

コマンドが完了後,Management ConsoleにてS3にアクセスし,イメージがアップロードされているかを確認してください.


目次に戻る