翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
デプロイマニフェストを使用した複数のアプリケーションと 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": "/"
}
}
]
}
}
複数のアプリケーションのサンプルアプリケーションはこちらで入手できます:
-
デプロイ可能なソースバンドル - dotnet-multiapp-sample-bundle-v2.zip
-
ソースコード - dotnet-multiapp-sample-source-v2.zip
アプリケーションプールを設定する
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