Amazon Elastic Block Store (Amazon EBS) スナップショットを Amazon Simple Storage Service (Amazon S3) バケットにコピーしたいと考えています。また、S3 バケットに保存されているデータから Amazon EBS ボリュームも作成したいです。しかし、どうすればよいのかわかりません。
簡単な説明
EBS スナップショットを作成すると、Amazon Web Services (AWS) が管理する Amazon S3 バケットに自動的に保存されます。スナップショットは、同じ AWS リージョン内、またはリージョンから別のリージョンにコピーできます。ただし、管理している S3 バケットにスナップショットをコピーすることはできません。
アクセス頻度の低いスナップショットを保存するには、 Amazon EBS スナップショットアーカイブ の使用を検討してください。それでもAmazon S3 を使用してスナップショットを保存したい場合は、次の回避策を使用できます。
解決方法
注: AWS コマンドラインインターフェイス (AWS CLI) のコマンド実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
スナップショットからボリュームを作成することで、スナップショットの内容を S3 バケットにコピーできます。ボリュームを Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスにマウントします。次に、AWS CLI または S3 API を使用してデータを S3 バケットにコピーします。
EBS スナップショットの内容を Amazon S3 バケットにコピーするには、次の手順に従います。
1. スナップショットから EBS ボリュームを作成する。
2. 作成したボリュームと同じアベイラビリティーゾーンで EC2 Linux インスタンスを起動する。
3. ボリュームを IR インスタンスにアタッチする。
4. Linux インスタンスに接続する。
5. Linux インスタンスに AWS CLI をインストールする。
6. 次のコマンドを実行して、ボリュームをインスタンスにマウントする。
$ sudo mount /dev/xvdf /mnt
注: デバイス (上記の例で /dev/xvdf) は、異なるデバイス名でインスタンスにアタッチされている場合があります。lsblk コマンドを使って、使用可能なディスクデバイスとマウントポイントを表示し、正しいデバイス名を確認してください。
7. pv パッケージをインストールして tar アーカイブ作成中の進行状況を監視する。
Amazon Linux および Red Hat Enterprise Linux (RHEL) ディストリビューション
$ sudo yum install pv
**注:**Amazon Linux および RHEL ディストリビューション用の pv パッケージをインストールする前に、エンタープライズ Linux (EPEL) リポジトリ用の追加パッケージを有効にする必要があります。「CentOS、RHEL、または Amazon Linux を実行している Amazon EC2 インスタンスの EPEL リポジトリを有効にするにはどうすればよいですか?」を参照してください。
Ubuntu および Debian ベースのディストリビューション
$ sudo apt install pv
8. 次のコマンドを実行して EBS ボリュームデータを S3 バケットにコピーする。
$ tar c /mnt | pv -s $(($(du -sk /mnt | awk '{print $1}') * 1024)) | gzip | aws s3 cp - "s3://my-bucket/backup1.tar.gz"
注:上記のコマンドは、/mnt ディレクトリから圧縮ファイルを作成し、そのファイルを my-bucket という名前で S3 バケットにアップロードします。my-bucket を S3 バケットの名前に、backup1 をファイル名に置き換えます。
9. Amazon S3 コンソール を使用して、圧縮ファイルが S3 バケットにアップロードされていることを確認する。
10. 次のコマンドを実行して、ボリュームをアンマウントする。
$ sudo umount /mnt
11. Linux インスタンスから EBS ボリュームをデタッチする。
12. ボリュームを削除し、インスタンスを終了する。
関連情報
Amazon EBS スナップショットをコピーする