AWS MGN で VMware Cloud on AWS 上の仮想マシンを Amazon EC2 に移行してみた #2 (プライベートアクセス編)

# 1. はじめに

オンプレミス環境からAmazon EC2に移行する際に利用するツールとして、[AWS Application Migration Service (MGN)](https://aws.amazon.com/jp/application-migration-service/)はよく検討される選択肢かと思います。

VMware Cloud on AWSからもAmazon EC2への移行でも同様にAWS MGNが活用できるので、前回に引き続き実際に試してみた手順を備忘録として残します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/c67134dd-0e17-e00d-6223-909198f217af.png)


:::note
今回はConnected VPCのENI経由で移行元VM(のAWS Replicaiton Agent)とAWS MGNをプラベートアクセスさせています。

前回記事ではInternet Gateway(IGW)経由で移行元VM(のAWS Replicaiton Agent)とAWS MGNをパブリックアクセスさせる構成をご紹介しています。
:::

AWS MGNの概要、および共通する手順の詳細については前回も合わせて記事をご参考ください。

https://qiita.com/sanjushi003/items/2587e13bc0088b26c11d

ざっくりとしたイメージとしては、VMware Cloud on AWSを「オンプレミスVMware仮想環境」のように扱って、Amazon EC2に移行していると想像いただければと思います。

# 2. 今回の構成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/eb81e10d-a849-33d5-3744-9e1a6b4a03c0.png)

:::note
ステージング環境およびターゲット環境ともに、移行元であるVMware Cloud on AWSのConnected VPCを選択しています。
:::

:::note
Connected VPCのENI経由で移行元VM(のAWS Replicaiton Agent)とAWS MGNをプラベートアクセスさせるために、Amazon Route 53、AWS PrivateLink、Amazon S3 gateway endpointを利用します。
:::

何やら構成が若干複雑に見えますが、実際の構築手順は簡単です。今回は構築でポイントとなる部分を抜粋してご紹介します。

ちなみにVMware Cloud on AWS環境は前回と同じくVMware vSphere 8.0系、移行元仮想マシンはWindows Server 2019およびCentOS Linux 7系です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/578dc025-9590-5928-4900-ae0a3ab3b870.png)


# 3. やってみた

基本的にAWS公式ガイドの手順に沿っていけばセットアップできます。

https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/connect-to-application-migration-service-data-and-control-planes-over-a-private-network.html

:::note warn
今回はシンプル化のためConnected VPCにはサブネット、ルートテーブル、セキュリティグループはそれぞれデフォルトの１つだけしか持たせていません。またPublic IPあるいはNAT Gatewayも利用していません。
:::

## 各種エンドポイントの作成 < Connectec VPCの設定 >

AWS MGN、Amazon EC2、Amazon S3 のエンドポイントをConnected VPC内に作成していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/a7f7b645-9c5b-47ce-77ff-07d8edc4c120.png)

Amazon S3 の Gateway Endpint と Interface Endpoint (PrivateLink) のちがいについては次の Docs をご参照ください。

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-s3

https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpc-endpoints-s3.html


### AWS MGN のInterface Endpoint を作成

Private DNS名での名前解決は有効にします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/58d97eef-6f96-3f5e-3603-4d7d65128f34.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/b3534ef6-ad10-b412-5f0b-359bea818487.png)

### Amazon EC2 のInterface Endpoint を作成

Private DNS名での名前解決は有効にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/aead64c6-dec5-d950-fcbf-835daea95cc5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/65120453-dc38-5328-c9e0-7add2ccd56b8.png)

### Amazon S3 のInterface Endpoint を作成

Interfaceタイプを選択し、Private DNS名での名前解決は無効(有効のチェックボックスを外す)にします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/9097bf0a-11b6-ca86-9d40-561756895b2b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/155ff472-a22f-0ac5-e046-929fea265ddd.png)

### Amazon S3 のGateway Endpoint を作成

Gatewayタイプを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/64dee452-464b-7d39-9b8a-94594029c39f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/ab8b0438-7e80-2f03-3350-8eab3732b663.png)

## DNSの設定 < Connectec VPC、VMCの設定 >

プライベートアクセス環境における各種AWSサービスのDNS名前解決のため、Connected VPC側でAmazon Route 53 Resolver の Inbound Endpointを作成し、VMware Cloud on AWS側のDNSサービスに登録します。

### Amazon Route 53 Resolver の Inbound Endpoint を作成

Inbound onlyを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/44c7a5f1-e0d7-20bb-00d3-bf6b6ef56411.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/94c0232a-61de-4a70-4387-5acc87e47882.png)

次のステップで使うのでIPアドレスを控えておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/6bea93a2-ff9e-8bd8-882d-5e8317a9ffdf.png)


### VMware Cloud on AWS 側のDNSサービスに登録 < VMCの設定 >

DNS Zoneを作成します。

DomainはAWSサービスの"amazonaws.com"を指定し、DNS ServersのIPアドレスは作成した Amazon Route 53 Resolver の Inboud EndPoint のIPを入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/af7ea67c-af3b-2a33-28da-5288a45962ff.png)

DNSサービスを登録します。
作成したDNS Zoneを、Compute Gateway DNS Forwarderに登録します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/dffffbcd-5cb5-d4ed-af1c-76d2bab0c8ee.png)

以上で、DNSの設定は完了です。

### Gateway Firewall、Security Group の設定 < VMCの設定 >

VMware Cloud on AWS側からConnected VPCへのアクセスに必要なポートの通信許可をします。
今回は検証環境なので、VMware Cloud on AWS上の移行元仮想マシンからConnected VPCへの通信は全て許可しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/6c2d6424-ed8c-740c-a82f-804370593f8b.png)

またConnected VPC側Security Groupはデフォルトのまま設定変更はせず、VMware Cloud on AWSからの通信は全て許可しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/df73f983-4024-16d4-71b6-51232988db1e.png)

もちろん必要な通信ポートだけにアクセス許可を絞ることもできます。その場合はAWS公式ガイドも合わせてご参照ください。

https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/connect-to-application-migration-service-data-and-control-planes-over-a-private-network.html

## Amazon EC2 への移行

以降は前回記事と同じくAWS Replication Agentを実行するだけなのですが、このエージェントはAmazon S3 Interface Endpoint経由でダウンロードする必要があります。

手順が被る部分については説明を割愛しているので、前回記事も合わせてご参考ください。

https://qiita.com/sanjushi003/items/2587e13bc0088b26c11d

### Windows の場合

Windows用のエージェントをブラウザから次のURL経由でダウンロードします。

```
https://aws-application-migration-service-<aws_region>.bucket.<s3-endpoint-DNS-name>/latest/windows/AwsReplicationWindowsInstaller.exe
```


例えば私の作成した環境では次のようになります。一部****としてマスクしています。

```
https://aws-application-migration-service-us-east-1.bucket.vpce-0929d2****42f7fe-5mz****b6c.s3.us-east-1.vpce.amazonaws.com/latest/windows/AwsReplicationWindowsInstaller.exe
```

ダウンロード後、エージェントを管理者権限で実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/07193156-a614-aae5-ef5f-aa4f9b675281.png)

エージェントが実行されれば、自動的にレプリケーションが実行されます。
以降はAWSマネジメントコンソールからAWS MGNの手順にしたがってAmazon EC2への移行を進めていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/b051bf40-8673-789a-9db0-7d8db4b4586f.png)

### Linux の場合

次のコマンドを使用してLinux用のエージェントをインストールします。

```
wget -O ./aws-replication-installer-init.py \ 
https://aws-application-migration-service-<aws_region>.bucket.<s3-endpoint-DNS-name>/latest/linux/aws-replication-installer-init.py
```


例えば私の作成した環境では次のようになります。一部****としてマスクしています。

```
wget -O ./aws-replication-installer-init.py \https://aws-application-migration-service-us-east-1.bucket.vpce-0929d2****42f7fe-5mz****b6c.s3.us-east-1.vpce.amazonaws.com/latest/linux/aws-replication-installer-init.py
```

ダウンロード後、エージェントを実行すれば自動的にレプリケーションが実行されます。
以降はAWSマネジメントコンソールからAWS MGNの手順にしたがってAmazon EC2への移行を進めていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/8533c1f7-0280-55ce-1a64-0b8fc8dd8e87.png)

# 4. さいごに

今回も前回に引き続き、AWS MGNを活用したVMware Cloud on AWS環境からAmazon EC2への移行を試してみました。
インターネットへのアクセスがない、プライベートアクセスのみの環境でもVMware Cloud on AWSからConnected VPC内のAmazon EC2に移行できるということが検証できました。

AWS PrivateLink、Amazon Route 53など複数のサービスを活用しましたが、存外簡単にセットアップできるということも感じていただければ幸いです！

今度は他にもAWS Migration Hubを活用したより発展的な移行、またVMware vCenter Converterを活用したAmazon EC2からVMware Cloud on AWSへの逆方向の移行なども試してみようと思います。

## 余談: Amazon S3 Gateway Endpoint と Interface Endpoint の違い

ざっくり紹介すると、「Interface Endpoint (= PrivateLink)」ではデータ処理に応じた課金(per GB)および利用時間課金 (per Hour)が発生するのに対し、 「Gateway Endpoint」では課金が一切発生しません。
そのため、コストの観点では可能な限り「Gateway Endpoint」を利用していくことが基本戦略になります。

詳細な利用シーンおよび課金体系については次の資料もご参考ください。

https://aws.amazon.com/jp/about-aws/whats-new/2023/03/amazon-s3-private-connectivity-on-premises-networks/

https://dev.classmethod.jp/articles/amazon-s3-private-connectivity-on-premises-networks/

# 5. 前回記事

https://qiita.com/sanjushi003/items/2587e13bc0088b26c11d

# 6. 参考にさせていただいた記事

https://aws.amazon.com/jp/blogs/news/migrate-vmware-virtual-machines-to-amazon-ec2-with-the-aws-application-migration-service-replication-agent/

https://repost.aws/articles/ARWz24YQIcQWCo3Io0iQq6cw/aws-application-migration-service-mgn-%E3%81%A8-mgn-v-center-%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%83%AC%E3%82%B9%E3%81%A7-v-mware-%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83-v-mware-cloud-on-aws-%E4%B8%8A%E3%81%AE%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3%E3%82%92-amazon-ec-2-%E3%81%AB%E7%A7%BB%E8%A1%8C%E3%81%99%E3%82%8B

https://dev.classmethod.jp/articles/aws-mgn-over-private-network/

# 7. そのほか参考資料

https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/connect-to-application-migration-service-data-and-control-planes-over-a-private-network.html

https://docs.aws.amazon.com/ja_jp/mgn/latest/ug/what-is-application-migration-service.html

https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/what-is-privatelink.html

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resolver.html

https://aws.amazon.com/jp/blogs/apn/choosing-the-right-dns-architecture-for-vmware-cloud-on-aws/

https://aws.amazon.com/jp/about-aws/whats-new/2023/03/amazon-s3-private-connectivity-on-premises-networks/

https://dev.classmethod.jp/articles/amazon-s3-private-connectivity-on-premises-networks/

https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpc-endpoints-s3.html

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-s3