EC2Launch v2 (Ver.2.0.651) のインストール・移行に失敗する件について

2021.10.19

しばたです。

先日同僚より質問を受けて調べた結果について共有します。

TL;DR

本日(2021年10月19日)時点で最新のEC2Launch v2 (Ver.2.0.651) のMSIインストーラーに何らかの不備があり正常にインストールできません。
これによりEC2Launch v1からの移行にも失敗します。

ワークアラウンドとして古いバージョンのEC2Launch v2のMSIインストーラーを使うことでエラーを回避できます。

発生する現象

今回は本日時点で最新の日本語Windows Server 2019 AMI (ami-0d3442738ced05bc2 Windows_Server-2019-Japanese-Full-Base-2021.10.13) で動作確認しています。

上記記事にある手順で最新の64bit版移行ツール(EC2LaunchMigrationTool.zip)EC2Launch v1からV2への移行スクリプトを実行すると、

ERROR Cannot copy EC2Launch v2 configuration file: パス 'C:\ProgramData\Amazon\EC2Launch\config\agent-config.yml' が存在しないため検出できません。

といったメッセージとともにエラーとなってしまいます。
そして、表示上はEC2Launch v2のインストール自体は成功している様に見えますが、移行ツールのdataフォルダに作成される実行ログEC2LaunchV2Installation.logファイルを確認すると、

MSI (s) (B0:80) [02:10:52:129]: Product: Amazon EC2Launch -- Installation failed.
MSI (s) (B0:80) [02:10:52:129]: Windows インストーラーにより製品がインストールされました。製品名: Amazon EC2Launch、製品バージョン: 2.0.651.0、製品の言語: 1033、製造元: Amazon Web Services、インストールの成功またはエラーの状態: 1603

と実際にはエラーコード1603で失敗しています。

加えてSSM Run CommandでAWSEC2Launch-RunMigrationを実行した場合も同様にエラーとなってしまいます。

(一部文字化けしてるが AWSEC2Launch-RunMigration ドキュメントでも同様のエラーとなる)

原因

根本原因はMSIインストーラーが1603エラーになっていることです。
MSIインストーラーが1603エラーを返す要因は複数あるためなぜ発生するかまでは突き止めることができず、MSIインストーラーをマニュアルで実行してもエラーを一切回避できなかったので打つ手は無さそうです...

回避策

私が調べた限りでは過去のMSIインストーラーではこの様なエラーは発生しませんでした。
EC2Launch v2および移行ツールのバージョン履歴は以下のページにあります。

EC2Launch v2および移行ツールの過去バージョンは以下のURLでダウンロードできます。

  • 64bit版 : https://s3.amazonaws.com/amazon-ec2launch-v2/windows/amd64/<バージョン番号>/AmazonEC2Launch.msi
  • 64bit版 : https://amazon-ec2launch-v2-utils.s3.amazonaws.com/MigrationTool/windows/amd64/<バージョン番号>/EC2LaunchMigrationTool.zip

このため古いEC2Launch v2が同梱されている移行ツールを使うか、最新の移行ツールを使いつつインストールするEC2Launch v2のバージョンを下げることでエラーを回避できます。

回避例

今回は最新の移行ツールで、ひとつ前のバージョンであるVer.2.0.592に差し替える方法を試してみます。
EC2Launch Ver.2.0.592は以下のURLからダウンロードできます。

移行ツールのZipを展開した後のAgentsフォルダにEC2Launch v2のMSIインストーラーが同梱されています。
このインストーラーをダウンロードした古いバージョンに差し替えてやればOKです。

MSIインストーラーを差し替えた後で改めて移行ツールを実行するとエラー無く無事移行が完了します。

無事EC2Launch v2に移行できたあとはAWS-ConfigureAWSPackageドキュメントから最新バージョンに更新してやると良いでしょう。

細かい理屈は不明ですが、一度EC2Launch v2になってしまえばそこから再インストールする分にはVer.2.0.651でも問題ない様です。

注意事項

なお、現状AWSEC2Launch-RunMigrationでは内部で利用する移行ツールのバージョン指定ができないためこの回避策は使えません。

最後に

以上となります。

本件はAWSにはフィードバック済みですので以後のバージョンでは問題自体が解消されると思います。

まだEC2Launch v2への移行をする方自体も少ないと思うので本件の影響を受ける方もそういないとは思いますが、同様の事例に遭遇した方がいれば参考になると思いブログの形で対応方法を共有しておきます。