【MGN】Replication Agentのインストール時にSSLエラーが出た際の対処

意外にも(?)インターネットに情報が転がってなかったので残しておきます。

AWS Application Migration Service (以下「MGN」)という、仮想化基盤からAWSへ移行する際にリホストで使用するサービスに関する記事です。
※ 一昔前まではCloud Endureという名前のサービスでした

何のサービス?

超ざっくり説明すると、MGNは移行で利用するサービスです。
ちなみにこの記事で触れる事象はエージェント有りでの移行の場合に発生するため、エージェントレス移行が可能なESXi 6.7以上は恐らく対象になりません。

MGNでは、AWS Replication Agentという移行用のエージェントを、移行したい仮想マシンのゲストOS上にインストールして、AWSに複製を行います。
複製が終わったら、EC2として起動ができるという素晴らしいサービスです。
サービスとしての停止時間が少なく、移行元と移行先で差異がかなり少なく抑えられるのが特徴です。

VM Import/Exportという、仮想化基盤からそのままovfファイルとしてデータをS3に保管して、インポートしたAMIからEC2を起動する手法はありますが、これは停止時間が長期化してしまうため、サポートされているOSはMGNを利用することが多いです。

実行環境とコマンド

今回の事象に遭遇した移行環境では、VPC Endpointを設定しており、MGN, S3, EC2のエンドポイントを指定する必要があります。
そのため、対話型ではなく以下のインストールコマンドを用いてエージェントインストールを行いました。(Windows OSの場合)

AWSReplicationWindowsInstaller.exe --region ap-northeast-1 --aws-accesskey-id <アクセスキー> --aws-secret-access-key <シークレット> --s3-endpoint <S3-VPCe> --endpoint <MGN-VPCe> --no-prompt

コマンドの詳細は以下ドキュメントにあります。
https://docs.aws.amazon.com/ja_jp/mgn/latest/ug/windows-agent.html

--no-prompt を付けておくと、移行するドライブ(C:やD:)の選択が無くなり、全て選択される状態になります

発生したエラー

今回発生したエラーは次の画像の通りです。

最終行だけ切り出すと、以下のように出ています:

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)

どうやら、Pythonのエラーのようですね。
信頼できるルート証明書がないため、verifyが失敗しているようです。
(エンドポイントを経由したため検証ができなかったようですが、インターネット経由であれば同エラーは出ないかもしれません)

解決策

原因がルート証明書にあると分かったので、Amazon Trust Servicesから証明書をダウンロードして突っ込みます。
https://www.amazontrust.com/repository/

Root CAsから、PEM形式でダウンロードできます

ダウンロードした証明書は、クリックでインストールするかPowerShellでインストールします。一応コマンドも置いておきます。

Import-Certificate -FilePath "C:\Users\xyz\Desktop\BackupCert.Cer" -CertStoreLocation cert:\CurrentUser\Root

引用 - Microsoft Docsより:
https://learn.microsoft.com/ja-jp/powershell/module/pki/import-certificate?view=windowsserver2022-ps

これでエラーが出たコマンドをもう一度実行すれば、このエラーは解消できるはずです。
Replication Agentは何回インストールを行っても動作に影響はないので、ガンガントライしてみましょう。

あとがき

今回はMGNのReplication Agentを例にしましたが、この手法は他のPython製品にて出たエラーでも流用できます。
(某バックアップ製品でも、S3連携時に同エラーが出ました!)

どこかでお役に立ちましたら嬉しいです。