AWS DataSyncでクラウド間データ移行をやってみた
はじめに
マルチクラウド環境を採用している場合、AzureとAWS間のデータ移行が必要なケースがあるかもしれません。AWSでは、異なるデータストレージ間での効率的でセキュアなデータ移行を可能にするサービスとして、AWS DataSyncが提供されています。この記事では、Azure Blob StorageからAWS S3へのデータ移行をAWS DataSyncを使用して双方向のデータ移行検証と実装手順について紹介します。
AWS DataSyncとは
AWS DataSyncは、異なるデータストレージ間でのデータ移行を容易に行うためのサービスです。オンプレミスとクラウド環境、クラウド間でのデータ移行を高速でセキュアに行うことができ、スケジュールを設定して継続的なデータ転送が可能です。ですので、Azureで蓄積されたデータをAWSで効果的に分析するということも可能です。
実装してみる
詳細な手順はAWSのブログで丁寧に記載があるので、そちらを参考にします。ここでは、ブログでは記載がなく、私が実装で躓いた箇所について記載していきます。
前提条件
ブログに記載されている前提条件を確認し、必要な準備を行います。AzCopyはMSドキュメントよりDLして解凍します。環境変数を登録しておくと便利です。Hyper-Vサービスの有効化は、「Windowsの機能の有効化または無効化」で実施します。
AWS DataSyncエージェントのデプロイ
このエージェントがクラウドをまたいでデータの読み書きをしてくれます。
ステップ 1: デプロイ用のAWS DataSyncエージェントイメージを準備する
AWSのブログに従い、デプロイ用のAWS DataSyncエージェントイメージを作成します。以下のイメージがローカルファイルに作成されていればOKです。
ステップ 2: VHDをマネージドディスクにアップロードする
AWSのブログに従い、Azure CloudShellとローカルのPowerShellを使用して、VHDをマネージドディスクにアップロードします。アップロードはローカルのPowerShellで行い、他はCloudShellで行います。以下のようにディスクが作成されていればOKです。
ステップ 3: AWS DataSyncエージェントVMを作成する
ブログの手順に従って進めますが、ここの「3.シリアル接続で接続し、エージェントのローカルコンソールにログインします。」で結構躓きました。
以下に問題点と解決方法を記載しておきます。ここさえ躓かなければスムーズにアクティベーションキーが手に入ると思います。
詰まった点1: シリアルコンソールでログイン画面が表示されない
事象: ブート診断をONにしてシリアルコンソールにアクセスするも自動的に接続が終了され、シリアルコンソールでログイン画面が表示されない。
対応: シリアルコンソールサービス用IPアドレス(20.43.70.205、20.189.228.222)をストレージアカウントで許可します。それに加え、ローカルのIPアドレス、[信頼されたサービスの一覧にある Azure サービスがこのストレージ アカウントにアクセスすることを許可します] にチェックを入れます。これによりシリアルコンソールに接続できるようになります。
詰まった点2: ログインの認証方法がわからない
事象: ログインの認証方法がわからず、ログインできない。SSHキー?パスワード変更?など的外れなことを考えてしまいました。
対応: AWSのドキュメントによれば、デフォルトのユーザー名はadmin、パスワードはpasswordです。これでログインが可能です。セキュリティ向上のためコンソールで「6」を押してコマンドプロンプトを開き、「passwd」コマンドでパスワードは変えておきましょう。
ステップ 4: AWS DataSyncエージェントVMをアクティブ化する
AWSのブログに従い進めます。こちらは特に躓くことはないと思います。以下のようにエージェントが作成できればOKです。
AWSDataSyncエージェントのデプロイ
エージェントの準備ができれば、あとは転送先と転送元を設定し、移行用のタスクを設定するだけで移行の準備が完了します。今回はAzure Blob Storage⇒AWS S3、AWS S3⇒Azure Blob Storageの双方向データ移行を試してみます。
ステップ 1: 転送元 Azure Blob Storage のロケーションを設定する
SASとコンテナURLを用いて、手順通り設定します。Azure Blob Storageへ転送する場合は、SASの許可をRead,Listに加え、Write,Deleteも追加しましょう。
ステップ 2: 転送先のロケーションを設定する
IAMロールを用いて、手順通りに設定します。IAMロールは指定したS3にのみアクセスできるロールをワンクリックで作成できます。
ステップ 3: レプリケーションタスクを作成する
上で作成したロケーションを指定してタスクを作成します。移行をさせたくないファイルも設定できます。ロケーションを入れ替えれば、AWS⇒Azureへの移行も可能で、かつエージェントが1台あれば複数のコンテナからの移行も可能です。エージェントの用意は少し手間ですが、一度作れば直感的にロケーション作成、タスクが作成できます。
ステップ 4: AWS DataSync タスクを開始する
任意のタイミングで開始すれば移行が行われます。スケジュールを組めば継続的な移行を行えます。なお、UTCでの指定になるので注意して設定してください。
移行確認
Azure側には事前にWord,Excel,PowerPointのフォルダを作成していました。タスクを実行して1,2分でデータが全て移行されたことがわかります。metadataは自動で作成されるようです。
ロケーションを入れ替えたタスクを作って、AWSからAzureへの移行も確認してみます。Azure側ではいったんBLOBを削除してタスクを起動させます。すると3分ほどでデータの移行が確認できました。Azureから送るときよりも少し時間がかかっています。これは、エージェントをAzure側(送信元)で構築しているため、データの圧縮が効率よく行われ転送速度が上がっている上がるようです。圧縮効率が高い場合、送信料金も下がるので、AWSとしてはエージェントを送信元に作成することを推奨しています。
まとめ
以上のようにAWSDataSyncを使って、クラウド間のデータ移行が実装できました。AWSのブログと本ブログを参考にしていただければ、誰でもスムーズにAWSDataSyncの準備ができると思います。クラウド間のデータ移行を実装して、マルチクラウドに強いエンジニアになりましょう!
参考資料
Amazon Web Services ブログ
https://aws.amazon.com/jp/blogs/news/migrating-azure-blob-storage-to-amazon-s3-using-aws-datasync/
この記事が気に入ったらサポートをしてみませんか?