Cloud9 のデータをリージョン間で移行する方法を教えてください

2023.07.17

困っていた内容

現在開発者ごとに複数のリージョンで Cloud9 を使用していますが、運用ルールの変更によりすべての Cloud9 環境を東京リージョンに集約することになりました。
しかし、Cloud9 のデータをリージョン間で移行する方法がわからなかったため、Cloud9 のデータをリージョン間で移行する方法を教えてください。

どう対応すればいいの?

EBS スナップショットのリージョン間コピーを使用する方法をご検討ください。
Cloud9 環境の複製自体は弊社ブログでも紹介されている通り、スナップショットからボリュームを作成して新しい環境にアタッチすることで複製可能です。

上記ブログの手順のうち、スナップショットを作成した後にスナップショットをリージョン間でコピーする手順を実行します。
例えば、バージニア北部リージョンから東京リージョンにデータを移行する場合、以下のような手順を実行します。

  1. バージニア北部リージョンの Cloud9 環境に紐づく EBS ボリュームのスナップショットを作成
  2. 1 で作成したスナップショットを東京リージョンにコピー
  3. 東京リージョンで Cloud9 環境を作成
  4. 3 の環境のルートボリュームをデタッチ
  5. 2 のスナップショットから EBS ボリュームを復元
  6. 5 の EBS ボリュームをアタッチ

やってみた

実際にコンソール上でバージニア北部リージョンから東京リージョンへのデータ移行を実施してみました。

まずはバージニア北部リージョンで Cloud9 環境をデフォルト設定で作成しました。

データ移行の確認用に test.txt というファイルを作成しておきます。

バージニア北部リージョンの Cloud9 環境に紐づく EBS ボリュームからスナップショットを作成します。

バージニア北部リージョンのスナップショットを東京リージョンへコピーします。

東京リージョンで Cloud9 環境をデフォルト設定で作成します。

東京リージョンの Cloud9 環境の EBS ボリューム付け替えのため、Cloud9 環境に紐づく EC2 インスタンスを停止します。

東京リージョンの Cloud9 環境に紐づいているルートボリュームをデタッチします。

バージニア北部リージョンから東京リージョンへコピーしたスナップショットを確認します。

コピーしたスナップショットからボリュームを作成します。
この時、EC2 インスタンスが起動するサブネットの AZ と、EBS ボリュームを復元する AZ を統一してください。
EC2 インスタンスとボリュームが別々の AZ にある場合、EC2 インスタンスにボリュームをアタッチすることができません。

EBS ボリュームは、同じアベイラビリティーゾーン内の任意の EC2 インスタンスにアタッチできます。

AWS 公式ドキュメントより

復元したボリュームを EC2 インスタンスにアタッチします。

東京リージョンの Cloud9 の IDE を開きます。
ルートボリュームの置き換えにより警告が表示されるので、「Accept」をクリックします。

バージニア北部リージョンの Cloud9 環境で作成した test.txt が東京リージョンの Cloud9 環境にも移行されていることが確認できました。

以上で Cloud9 のデータをリージョン間で移行する手順は完了です。

参考資料