オンプレミス VMware 仮想環境で AWS DataSync を利用してみた @ホームラボ

# 1. はじめに

自宅にホームラボを構えていろいろと検証しているのですが、NAS ストレージ内のデータを Amazon S3 にも遠隔保管したくなったので、[AWS DataSync](https://aws.amazon.com/jp/datasync/) を利用してみることにしました。

VMware 仮想環境で AWS DataSync を利用してみたのでセットアップ手順の備忘録を残しておきます。

## 全体構成の概要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/6558f854-d58e-72c6-0429-64f3dde36729.png)

::: note warn

今回は検証目的でのセットアップのため、本番環境で求められるようなセキュリティ設定などは割愛しておりますのでその点はご留意ください。

:::

# 2. 前提条件

VMware 仮想環境、および AWS クラウド側に必要なネットワーク要件、およびアクセス要件は事前に揃っているものとします。

https://docs.aws.amazon.com/ja_jp/datasync/latest/userguide/requirements.html

私のホームラボ環境は VMware ESXi 7.0 ベースであり、AWS DataSync 仮想アプライアンス (VM) は家庭用のインターネット回線経由で AWS クラウドにアクセスできる状態にしています。

もしもプライベートネットワーク経由で通信させたい場合は VPC エンドポイントを利用した構成も可能です。

https://docs.aws.amazon.com/ja_jp/datasync/latest/userguide/datasync-in-vpc.html

また、NFS (もしくは SMB) アクセスできる共有ストレージも事前に準備しておきます。
私の環境では [Synology の NAS 製品](https://www.synology.com/ja-jp/products/DS923+) を利用しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/23b854f6-faaa-4929-8845-c8cf247d272a.png)

# 3. セットアップ手順

## AWS DataSync 仮想アプライアンス (VM) の初期デプロイ

AWS マネジメントコンソールから　AWS DataSync のサービスに遷移します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/f1a4c3c2-cb44-43a9-9e6d-9b1fc9293e4f.png)

ハイパーバイザーとして「VMware ESXi」を選択し、イメージをダウンロードします。約 650MB 程度のサイズです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/08e2076d-a5ab-7753-156d-7f4452211bcf.png)

ダウンロードした OVA ファイルから仮想アプライアンスをデプロイします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/447cbb3f-056c-fad0-aa86-060c81bf715e.png)

まずはデフォルトの設定でデプロイします。
ちなみに私の環境ではリソースを節約するためにシンプロビジョニングにしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/386b1168-9b64-0506-96ff-c7c1c42ad308.png)


Web コンソールからログインしてみると CPU コア数が足りない！とエラーとなっています。
(デフォルトの設定でデプロイしたのに・・。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/1fb88c01-6683-b543-2813-84f10109aed4.png)

というわけで CPU コアだけは 4 Cores にスケールアップしておきます。
メモリ、ディスク容量は今回はそのままにしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/ec79963e-696d-0c68-0676-8544bf4a11a8.png)

今回は実施していませんが、追加でホスト名・NTP 設定や NIC の追加などを実施する場合はコンソールへのログインが必要となります。
ユーザー名、パスワードはこちらに記載されています。

https://docs.aws.amazon.com/ja_jp/datasync/latest/userguide/local-console-vm.html

## エージェントのアクティベーション

AWS マネジメントコンソールからの作業の続きです。

「AWS マネジメントコンソールを操作している端末」から、先ほど AWS DataSync 仮想アプライアンス (VM) に対して疎通できる状態にします。

その状態で、AWS DataSync 仮想アプライアンス (VM) の IP アドレスを入力し、「キーを取得する」を実施します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/a04ca2a2-4906-8ad3-939b-d6a62eb30bd7.png)

※アクティベーションキーを手動入力する方法を選択する場合はこちらをご参照ください。

https://docs.aws.amazon.com/ja_jp/datasync/latest/userguide/activate-agent.html#get-activation-key

アクティベーションが完了したら、エージェント名を付与します (任意)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/6d6988de-8da5-a145-b1db-bb51d0eee775.png)

エージェントのステータスが「オンライン」となっていることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/5fb467fe-a57b-91fb-7f5c-b2da1f51e63d.png)

## データ送信元・送信先の設定

データ送信元のロケーションとして、オンプレミスの NFS サーバーを登録します。
AWS DataSync 仮想アプライアンス (VM) からアクセス可能な IP アドレスで指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/71512129-4a6f-fbce-5b80-4d11cb98ae97.png)

データ送信先のロケーションとして、Amazon S3 を選択します。
バケットは事前に作成しておきます。IAM ロールも事前作成可能ですが、私は自動作成 (Autogenerated) の IAM ロールを使用しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/14d8b17e-8608-4856-9b7d-5f6f3befc8a3.png)

作成したロケーションを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/b4a77e81-47e7-8e75-2d32-eb194d75811d.png)

これで事前準備は完了です。

## タスクの作成 (データ同期の開始)

「タスク」の作成を実施していきます。
送信元のロケーションとして、オンプレミスの NFS サーバーを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/5837d5b6-a56c-9c7c-739f-e412232a7d86.png)

送信先のロケーションとして、Amazon S3 の対象バケットを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/3f096783-e5ff-b635-a568-a1a2f6cdfefb.png)

帯域幅の制限、上書き実施の有無、同期スケジュールなどを必要に応じて設定します。
今回はデフォルト値のままで進めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/0a9a95a6-1940-50bb-53e9-5f1dc83039f8.png)

タスクが作成されたら、「開始」を選択してデータ同期を始めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/2a6ef5a6-9475-f0d6-0921-2638f2cec51d.png)

タスクの進捗状態を確認し、ステータスが「成功」となるまで待ちます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/55e94791-fe0e-28f1-096f-3fb769895cee.png)

Amazon S3 バケットを確認し、対象のデータが同期されたのを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/b19a3029-ab3d-f36e-c152-bec96141f5e5.png)

データの同期が完了していました。これで検証は成功です！

# 4. 参考資料

https://docs.aws.amazon.com/ja_jp/datasync/latest/userguide/what-is-datasync.html

https://d1.awsstatic.com/webinars/jp/pdf/services/20210316_AWSBlackBelt2021_AWS-DataSync-v1.pdf

https://repost.aws/ja/knowledge-center/datasync-cross-activate-agent

https://blog.serverworks.co.jp/tech/2020/02/14/lets-use-aws-data-sync/