見出し画像

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です。

ステップ1終了後 

ステップ 2: VHDをマネージドディスクにアップロードする

AWSのブログに従い、Azure CloudShellとローカルのPowerShellを使用して、VHDをマネージドディスクにアップロードします。アップロードはローカルのPowerShellで行い、他はCloudShellで行います。以下のようにディスクが作成されていればOKです。

ステップ2終了後

ステップ 3: AWS DataSyncエージェントVMを作成する

ブログの手順に従って進めますが、ここの「3.シリアル接続で接続し、エージェントのローカルコンソールにログインします。」で結構躓きました。
以下に問題点と解決方法を記載しておきます。ここさえ躓かなければスムーズにアクティベーションキーが手に入ると思います。

ステップ3終了後 20桁のアクティベーションキーが表示される(Xの部分)

詰まった点1: シリアルコンソールでログイン画面が表示されない

事象: ブート診断をONにしてシリアルコンソールにアクセスするも自動的に接続が終了され、シリアルコンソールでログイン画面が表示されない。

シリアルコンソールに接続できない

対応: シリアルコンソールサービス用IPアドレス(20.43.70.205、20.189.228.222)をストレージアカウントで許可します。それに加え、ローカルのIPアドレス、[信頼されたサービスの一覧にある Azure サービスがこのストレージ アカウントにアクセスすることを許可します] にチェックを入れます。これによりシリアルコンソールに接続できるようになります。

シリアルコンソールアクセス時の正しいFW設定

詰まった点2: ログインの認証方法がわからない

事象: ログインの認証方法がわからず、ログインできない。SSHキー?パスワード変更?など的外れなことを考えてしまいました。

対応: AWSのドキュメントによれば、デフォルトのユーザー名はadmin、パスワードはpasswordです。これでログインが可能です。セキュリティ向上のためコンソールで「6」を押してコマンドプロンプトを開き、「passwd」コマンドでパスワードは変えておきましょう。

ステップ 4: AWS DataSyncエージェントVMをアクティブ化する

AWSのブログに従い進めます。こちらは特に躓くことはないと思います。以下のようにエージェントが作成できればOKです。

ステップ4終了後

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も追加しましょう。

Azure側のロケーション作成

ステップ 2: 転送先のロケーションを設定する

IAMロールを用いて、手順通りに設定します。IAMロールは指定したS3にのみアクセスできるロールをワンクリックで作成できます。

AWS側のロケーション作成

ステップ 3: レプリケーションタスクを作成する

上で作成したロケーションを指定してタスクを作成します。移行をさせたくないファイルも設定できます。ロケーションを入れ替えれば、AWS⇒Azureへの移行も可能で、かつエージェントが1台あれば複数のコンテナからの移行も可能です。エージェントの用意は少し手間ですが、一度作れば直感的にロケーション作成、タスクが作成できます。

Azure⇒AWS用のタスク作成

ステップ 4: AWS DataSync タスクを開始する

任意のタイミングで開始すれば移行が行われます。スケジュールを組めば継続的な移行を行えます。なお、UTCでの指定になるので注意して設定してください。

移行確認

Azure側には事前にWord,Excel,PowerPointのフォルダを作成していました。タスクを実行して1,2分でデータが全て移行されたことがわかります。metadataは自動で作成されるようです。

AWS S3_データが移行されている。

ロケーションを入れ替えたタスクを作って、AWSからAzureへの移行も確認してみます。Azure側ではいったんBLOBを削除してタスクを起動させます。すると3分ほどでデータの移行が確認できました。Azureから送るときよりも少し時間がかかっています。これは、エージェントをAzure側(送信元)で構築しているため、データの圧縮が効率よく行われ転送速度が上がっている上がるようです。圧縮効率が高い場合、送信料金も下がるので、AWSとしてはエージェントを送信元に作成することを推奨しています。

Azure BlobStorage_データが移行されている。

まとめ

以上のようにAWSDataSyncを使って、クラウド間のデータ移行が実装できました。AWSのブログと本ブログを参考にしていただければ、誰でもスムーズにAWSDataSyncの準備ができると思います。クラウド間のデータ移行を実装して、マルチクラウドに強いエンジニアになりましょう!

参考資料

Amazon Web Services ブログ
https://aws.amazon.com/jp/blogs/news/migrating-azure-blob-storage-to-amazon-s3-using-aws-datasync/


この記事が気に入ったらサポートをしてみませんか?