メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

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

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

デプロイマニフェストは、Elastic Beanstalk へ .NET Core アプリケーションのサポートを追加します。デプロイマニフェストなしでも、.NET Standard アプリケーションをデプロイできますが、.NET Core アプリケーションを Elastic Beanstalk で実行するにはデプロイマニフェストが必要です。デプロイマニフェストを使用すると、各アプリケーションのサイトアーカイブを作成し、そのサイトアーカイブをデプロイマニフェストを含むもう一つの ZIP アーカイブとバンドルします。

デプロイマニフェストは、異なるパスでの複数のアプリケーションを実行する機能も備えています。デプロイマニフェストは、多くのデプロイのターゲットを、サイトアーカイブと IIS が実行するパスにより個別に定義します。たとえば、/api パスで非同期リクエストを行うウェブ API を実行し、ルートパスでその API を実行するウェブアプリケーションを実行できます。

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

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

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

.NET Core アプリケーション

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

注記

デプロイマニフェストを使って Elastic Beanstalk で .NET Core アプリケーションを実行するチュートリアルとサンプルアプリケーションについては、AWS Elastic Beanstalk を使用した ASP.NET Core アプリケーションのデプロイ を参照してください。

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

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

例 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

すべての例については、チュートリアルを参照してください。

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

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

以下のデプロイマニフェストは、MS Deploy を使用してルートパスで .NET Standard アプリケーションを、また、ASP.NET Core ウェブアプリケーションを /admin で実行します。フロントエンドのウェブアプリケーションは、 という名前のスタンダード MS Deploy ソースバンドルwebapp.zipです。また、アドミンアプリケーションは、admin.zip という名前の .NET Core サイトアーカイブです。

例 aws-windows-deployment-manifest.json - multiple apps

{
  "manifestVersion": 1,
  "deployments": 
  {
    "msDeploy":
    [{
      "name": "Web app",
      "parameters":
      {
        "appBundle": "webapp.zip",
        "iisPath": "/",
        "iisWebSite": "Default Web Site"
      }
    }],
    "aspNetCoreWeb":
    [{
      "name": "Admin app",
      "parameters": 
      {
        "appBundle": "admin.zip",
        "iisPath": "/admin",
        "iisWebSite": "Default Web Site"
      }
    }]
  }
}

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

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

デプロイマニフェストを使って、IIS でアプリケーションプールを設定し、複数のアプリケーションを実行するために使用できます。

以下のデプロイマニフェストでは、アプリケーションを 10 分ごとに再起動し、ルートパスで実行する .NET Standard ウェブアプリケーションへアタッチするアプリケーションプールを設定します。

例 aws-windows-deployment-manifest.json - app pool

{
  "manifestVersion": 1,
  "iisConfig": {
    "appPools": [
      {
        "name": "App pool",
        "recycling": {
          "regularTimeInterval": 10
        }
      }
    ]
  },
  "deployments": {
    "msDeploy": [
      {
        "name": "Web app",
        "parameters": {
          "archive": "site.zip",
          "iisPath": "/",
          "appPool": "MyPool"
        }
      }
    ]
  }
}

iisConfig の下の appPools ブロックはアプリケーション プールを定義します。

deployments ブロックの各デプロイは、アーカイブ、実行するパス、実行する appPool を指定します。

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

さらなるコントロールとして、カスタムデプロイを定義することで、アプリケーションのデプロイを完全にカスタマイズできます。

以下のデプロイマニフェストでは、Elastic Beanstalk に install という名前の siteInstall.ps1 スクリプトを実行させ、インスタンスの起動とデプロイの間にウェブサイトをインストールし、デプロイの間に新しいバージョンをインストールする前に uninstall スクリプトを実行し、管理コンソールでrestartアプリサーバーの再起動を選択したとき スクリプトを実行してアプリケーションを再起動します。

例 aws-windows-deployment-manifest.json - custom deployment

{
  "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