デプロイマニフェストを使用した複数のアプリケーションと ASPNETコアアプリケーションの実行 - AWS Elastic Beanstalk

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

デプロイマニフェストを使用した複数のアプリケーションと ASPNETコアアプリケーションの実行

デプロイマニフェストで、Elastic Beanstalk にアプリケーションをデプロイする方法を伝えることができます。この方法を使用すると、 MSDeployを使用して、ウェブサイトのルートパスで実行される単一の NET. ASPアプリケーションのソースバンドルを生成する必要はありません。マニフェストファイルを使用することにより、異なるパスで複数のアプリケーションを実行することが可能になります。または、 を使用してアプリケーションをデプロイして実行するように Elastic Beanstalk に指示することもできますASP。NET Core。また、デプロイマニフェストは、アプリケーションを実行するためのアプリケーションプールの設定にも使用できます。

デプロイマニフェストは、 のサポートを追加します。NET Elastic Beanstalk へのコアアプリケーション。をデプロイできます。NET デプロイマニフェストのないフレームワークアプリケーション。ただし、。NET コアアプリケーションでは、Elastic Beanstalk でデプロイマニフェストを実行する必要があります。デプロイマニフェストを使用する場合は、アプリケーションごとにサイトアーカイブを作成し、デプロイマニフェストを含む 2 番目のアーカイブにサイトZIPアーカイブをバンドルします。

デプロイマニフェストを使用すると、異なるパスで複数のアプリケーションを実行することもできます。デプロイマニフェストは、デプロイターゲットの配列を定義します。各ターゲットには、サイトアーカイブと、 がそれIISを実行するパスがあります。例えば、 /apiパスAPIでウェブを実行して非同期リクエストを処理し、 を消費するルートパスでウェブアプリケーションを実行できますAPI。

デプロイマニフェストを使用して、 IISまたは Kestrel のアプリケーションプールを使用して複数のアプリケーションを実行することもできます。アプリケーションプールを設定して、アプリケーションを定期的に再起動したり、32 ビットアプリケーションを実行したり、特定のバージョンの を使用したりできます。NET フレームワークランタイム。

完全なカスタマイズのために、Windows で独自のデプロイスクリプト PowerShell を作成し、アプリケーションのインストール、アンインストール、再起動を実行するスクリプトを Elastic Beanstalk に指示できます。

デプロイマニフェストと関連機能を使用するには、Windows Server プラットフォームバージョン 1.2.0 以降が必要です。

.NET コアアプリケーション

デプロイマニフェストを使用して を実行できます。NET Elastic Beanstalk のコアアプリケーション。。NET Core は のクロスプラットフォームバージョンでNET、コマンドラインツール (dotnet) が付属しています。このマニフェストにより、アプリケーションの生成、ローカルでの実行、および公開の準備を行うことができます。

を実行するには。NET Elastic Beanstalk のコアアプリケーションでは、出力を実行してZIPアーカイブにdotnet publishパッケージ化できます。ディレクトリは含まれません。サイトアーカイブを、デプロイマニフェストを使って、デプロイターゲットのタイプ aspNetCoreWeb と一緒にソースバンドルに配置します。

次のデプロイマニフェストは を実行します。NET ルートパスdotnet-core-app.zipの という名前のサイトアーカイブからのコアアプリケーション。

例 aws-windows-deployment-manifest.json - .NET core
{ "manifestVersion": 1, "deployments": { "aspNetCoreWeb": [ { "name": "my-dotnet-core-app", "parameters": { "archive": "dotnet-core-app.zip", "iisPath": "/" } } ] } }

マニフェストとサイトアーカイブをZIPアーカイブにバンドルして、ソースバンドルを作成します。

例 dotnet-core-bundle.zip
. |-- aws-windows-deployment-manifest.json `-- dotnet-core-app.zip

サイトアーカイブには、コンパイルされたアプリケーションコード、依存関係、web.config ファイルが含まれています。

例 dotnet-core-app.zip
. |-- Microsoft.AspNetCore.Hosting.Abstractions.dll |-- Microsoft.AspNetCore.Hosting.Server.Abstractions.dll |-- Microsoft.AspNetCore.Hosting.dll |-- Microsoft.AspNetCore.Http.Abstractions.dll |-- Microsoft.AspNetCore.Http.Extensions.dll |-- Microsoft.AspNetCore.Http.Features.dll |-- Microsoft.AspNetCore.Http.dll |-- Microsoft.AspNetCore.HttpOverrides.dll |-- Microsoft.AspNetCore.Server.IISIntegration.dll |-- Microsoft.AspNetCore.Server.Kestrel.dll |-- Microsoft.AspNetCore.WebUtilities.dll |-- Microsoft.Extensions.Configuration.Abstractions.dll |-- Microsoft.Extensions.Configuration.EnvironmentVariables.dll |-- Microsoft.Extensions.Configuration.dll |-- Microsoft.Extensions.DependencyInjection.Abstractions.dll |-- Microsoft.Extensions.DependencyInjection.dll |-- Microsoft.Extensions.FileProviders.Abstractions.dll |-- Microsoft.Extensions.FileProviders.Physical.dll |-- Microsoft.Extensions.FileSystemGlobbing.dll |-- Microsoft.Extensions.Logging.Abstractions.dll |-- Microsoft.Extensions.Logging.dll |-- Microsoft.Extensions.ObjectPool.dll |-- Microsoft.Extensions.Options.dll |-- Microsoft.Extensions.PlatformAbstractions.dll |-- Microsoft.Extensions.Primitives.dll |-- Microsoft.Net.Http.Headers.dll |-- System.Diagnostics.Contracts.dll |-- System.Net.WebSockets.dll |-- System.Text.Encodings.Web.dll |-- dotnet-core-app.deps.json |-- dotnet-core-app.dll |-- dotnet-core-app.pdb |-- dotnet-core-app.runtimeconfig.json `-- web.config

複数のアプリケーションを実行する

デプロイマニフェストを使って、複数のデプロイターゲットを指定することにより、複数のアプリケーションを実行できます。

次のデプロイマニフェストは、2 つの を設定します。NET コアアプリケーション。WebApiSampleApp アプリケーションはシンプルなウェブを実装APIし、/apiパスで非同期リクエストを処理します。DotNetSampleApp アプリケーションは、ルートパスでリクエストを処理するウェブアプリケーションです。

例 aws-windows-deployment-manifest.json - 複数のアプリ
{ "manifestVersion": 1, "deployments": { "aspNetCoreWeb": [ { "name": "WebAPISample", "parameters": { "appBundle": "WebApiSampleApp.zip", "iisPath": "/api" } }, { "name": "DotNetSample", "parameters": { "appBundle": "DotNetSampleApp.zip", "iisPath": "/" } } ] } }

複数のアプリケーションのサンプルアプリケーションはこちらで入手できます:

アプリケーションプールを設定する

Windows 環境では、複数のアプリケーションをサポートできます。そのためには、次のような 2 つのアプローチが存在します。

  • out-of-process ホスティングモデルは Kestrel ウェブサーバーで使用できます。このモデルでは、複数のアプリケーションを 1 つのアプリケーションプールで実行するように構成します。

  • インプロセスホスティングモデルを使用する場合には、複数のアプリケーションを実行するために複数のアプリケーションプールを用意して、各プール内では単一アプリケーションのみを実行します。IIS サーバーを使用していて、複数のアプリケーションを実行する必要がある場合は、このアプローチを使用する必要があります。

1 つのアプリケーションプールで複数のアプリケーションを実行するように Kestrel を構成するには、hostingModel="OutofProcess" ファイルに web.config を追加で記述します。次に挙げるサンプルを参考にしてください。

例 web.config - Kestrel out-of-process ホスティングモデル用
<configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\CoreWebApp-5-0.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="OutofProcess" /> </system.webServer> </location> </configuration>
例 aws-windows-deployment-manifest.json - 複数のアプリケーション
{ "manifestVersion": 1, "deployments": {"msDeploy": [ {"name": "Web-app1", "parameters": {"archive": "site1.zip", "iisPath": "/" } }, {"name": "Web-app2", "parameters": {"archive": "site2.zip", "iisPath": "/app2" } } ] } }

IIS は、処理中のホスティングモデルを使用するため、1 つのアプリケーションプール内の複数のアプリケーションをサポートしていません。したがって、複数のアプリケーションを構成するには、各アプリケーションを個別のアプリケーションプールに割り当てる必要があります。つまり、1 つのアプリケーションプールに割り当てられるのは、1 つのアプリケーションのみです。

aws-windows-deployment-manifest.json ファイル内で異なるアプリケーションプールを使用するIISように を設定できます。次のサンプルファイルを参考にしながら、同様な更新を行ってください。

  • iisConfig というサブセクションを含む、appPools というセクションを追加します。

  • appPools ブロックに、アプリケーションプールをリストします。

  • deployments セクションで、各アプリケーションの parameters セクションを定義します。

  • parameters セクションでは、各アプリケーションのアーカイブ、実行するパス、および実行するために使用する appPool を指定します。

次のデプロイマニフェストでは、10 分ごとにアプリケーションを再起動する 2 つのアプリケーションプールを構成しています。また、アプリケーションを にアタッチします。NET 指定されたパスで実行されるフレームワークウェブアプリケーション。

例 aws-windows-deployment-manifest.json - アプリケーションプールごとに 1 つのアプリケーション
{ "manifestVersion": 1, "iisConfig": {"appPools": [ {"name": "MyFirstPool", "recycling": {"regularTimeInterval": 10} }, {"name": "MySecondPool", "recycling": {"regularTimeInterval": 10} } ] }, "deployments": {"msDeploy": [ {"name": "Web-app1", "parameters": { "archive": "site1.zip", "iisPath": "/", "appPool": "MyFirstPool" } }, {"name": "Web-app2", "parameters": { "archive": "site2.zip", "iisPath": "/app2", "appPool": "MySecondPool" } } ] } }

カスタムデプロイを定義する

さらにきめ細かく制御するには、カスタムデプロイを定義することによって、アプリケーションのデプロイを完全にカスタマイズできます。

次のデプロイマニフェストでは、Elastic Beanstalk に対し、install という名前の siteInstall.ps1 スクリプトを実行するように指示しています。このスクリプトにより、インスタンスの起動とデプロイ時にウェブサイトがインストールされます。これに加えて、デプロイマニフェストは、デプロイ中に新しいバージョンをインストールする前に uninstallスクリプトを実行するように Elastic Beanstalk に指示し、 AWS マネジメントコンソールでアプリケーションサーバーを再起動するを選択した場合にアプリケーションを再起動するrestartスクリプトも指示します。

例 aws-windows-deployment-manifest.json - カスタムデプロイ
{ "manifestVersion": 1, "deployments": { "custom": [ { "name": "Custom site", "scripts": { "install": { "file": "siteInstall.ps1" }, "restart": { "file": "siteRestart.ps1" }, "uninstall": { "file": "siteUninstall.ps1" } } } ] } }

ソースバンドルには、マニフェスト、スクリプトと一緒にアプリケーションの実行に必要なアーティファクトをすべて含めます。

例 Custom-site-bundle.zip
. |-- aws-windows-deployment-manifest.json |-- siteInstall.ps1 |-- siteRestart.ps1 |-- siteUninstall.ps1 `-- site-contents.zip