Azure App Service on Linuxへデプロイした.NET Coreアプリを、IDEを使わずにAWS Elastic Beanstalkへ移行する

2021.08.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

Azure App Serviceはデプロイされているモジュールのダウンロードが可能です。
そしてElastic Beanstalkはモジュールをアップロードして環境を作成します。

うまいことやればそのままファイル移植だけで移行出来るんじゃないかと思い、試してみました。

移行元(App Service on Linux)環境の作成

今回は、移行元環境はサッと作成しましょう。

WindowsのVisual Studio 2019からASP.NET Coreを作成し、App Service on Linuxへデプロイします。

デプロイ出来ました。

移行モジュールを取得する

FTP接続して取得することも可能なのですが、今回はバックアップ機能を使ってダウンロードしてみようかなと思います。
App Serviceのバックアップ機能を使うとZipダウンロード出来ます。

WEBSITE_RUN_FROM_PACKAGEによって、wwwrootSitePackagesか取得先が変わります。
詳細は以下を参照してください。

アップロードバンドルを作成

Elastic Beanstalk用にアップロードバンドルを作成する必要があります。

今回の場合だと、マニフェストファイルを作成して、Zip圧縮ファイルに含めます。
マニフェストファイルの中身は上記を参考にしてください。

iwasa.takahito@hoge 20210827084148 % ls
AzureToAws.Views.dll        AzureToAws.runtimeconfig.json
AzureToAws.Views.pdb        Procfile
AzureToAws.deps.json        appsettings.Development.json
AzureToAws.dll            appsettings.json
AzureToAws.exe            web.config
AzureToAws.pdb            wwwroot
iwasa.takahito@hoge 20210827084148 % vi aws-windows-deployment-manifest.json
iwasa.takahito@hoge 20210827084148 % zip -r -X hoge.zip .

Beanstalkアプリケーションの作成

このhoge.zipをアップロードファイルに指定してBeanstalkアプリを作成します。

無事、App ServiceからBeanstalkへ移植出来ました。
実際にはアプリケーション設定などなど他にも移行に際して考慮しなければいけないことはありますが、一旦モジュールを移植して動かすことは出来ました。

まとめ

  • App Serviceからダウンロードしたzipファイルをそのままアップロードして動かすことは出来ない
  • Beanstalk用のバンドル手順を把握し、実施する必要がある
  • バンドル手順さえしっかりしていれば、ソースコードを使った再デプロイはしなくても良い