

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

# .NET および Elastic Beanstalk 用の複数アプリケーションのサポート
<a name="deployment-beanstalk-multiple-application"></a>

デプロイマニフェストを使用すると、複数のアプリケーションを同じElastic Beanstalk 環境にデプロイする能力があります。

デプロイマニフェストは、[ASP.NET Core](http://www.asp.net/core) ウェブアプリケーションおよび従来の ASP.NET アプリケーションの msdeploy アーカイブをサポートします。例えば、フロントエンドに ASP.NET Core を使用したすばらしい新たなアプリケーションを作成し、拡張 API 用のウェブ API プロジェクトがあるとします。また、従来の ASP.NET を使用して作成した管理者アプリがあるとします。

ツールキットのデプロイウィザードは 1 つのプロジェクトのデプロイに重点を置いています。複数のアプリケーションのデプロイを利用するには、アプリケーションバンドルを手動で作成する必要があります。まず、マニフェストを作成します。この例では、ソリューションのルートにマニフェストを作成します。

マニフェストのデプロイセクションには 2 つの子があります。デプロイを行う一連の ASP.NET Core ウェブアプリケーションと、デプロイを行う一連の msdeploy アーカイブです。各アプリケーションで、IIS パスとアプリケーションのビットのマニフェストへの相対位置を設定します。

```
{
  "manifestVersion": 1,
  "deployments": {

    "aspNetCoreWeb": [
      {
        "name": "frontend",
        "parameters": {
          "appBundle": "./frontend",
          "iisPath": "/frontend"
        }
      },
      {
        "name": "ext-api",
        "parameters": {
          "appBundle": "./ext-api",
          "iisPath": "/ext-api"
        }
      }
    ],
    "msDeploy": [
      {
        "name": "admin",
        "parameters": {
          "appBundle": "AmazingAdmin.zip",
          "iisPath": "/admin"
        }
      }
    ]
  }
}
```

作成したマニフェストを使い、Windows PowerShell を使用して、アプリケーションバンドルを作成し、それを実行する既存のElastic Beanstalk環境を更新します。スクリプトは、Visual Studio ソリューションが含まれるフォルダから実行されることを前提として作成されます。

スクリプトで最初に必要なことは、アプリケーションバンドルを作成する、ワークスペースフォルダをセットアップすることです。

```
$publishFolder = "c:\temp\publish"

$publishWorkspace = [System.IO.Path]::Combine($publishFolder, "workspace")
$appBundle = [System.IO.Path]::Combine($publishFolder, "app-bundle.zip")

If (Test-Path $publishWorkspace){
  Remove-Item $publishWorkspace -Confirm:$false -Force
}
If (Test-Path $appBundle){
  Remove-Item $appBundle -Confirm:$false -Force
}
```

フォルダを作成したら、次にフロントエンドの準備を行います。デプロイウィザードと同様に、dotnet CLI を使用してアプリケーションを発行します。

```
Write-Host 'Publish the ASP.NET Core frontend'
$publishFrontendFolder = [System.IO.Path]::Combine($publishWorkspace, "frontend")
dotnet publish .\src\AmazingFrontend\project.json -o $publishFrontendFolder -c Release -f netcoreapp1.0
```

サブフォルダ "frontend" は出力フォルダに使用されていることに注意し、マニフェストで設定するフォルダを一致させます。次に、同様の作業をウェブ API プロジェクトに対して行う必要があります。

```
Write-Host 'Publish the ASP.NET Core extensibility API'
$publishExtAPIFolder = [System.IO.Path]::Combine($publishWorkspace, "ext-api")
dotnet publish .\src\AmazingExtensibleAPI\project.json -o $publishExtAPIFolder -c Release -f netcoreapp1.0
```

管理者サイトは、従来の ASP.NET アプリケーションであるため、dotnet CLI を使用することはできません。管理者アプリケーションには、msbuild を使用して、ビルドターゲットパッケージを渡して msdeploy アーカイブを作成します。デフォルトでは、パッケージターゲットは msdeploy アーカイブを `obj\Release\Package` フォルダの下に作成するため、アーカイブを発行ワークスペースにコピーする必要があります。

```
Write-Host 'Create msdeploy archive for admin site'
msbuild .\src\AmazingAdmin\AmazingAdmin.csproj /t:package /p:Configuration=Release
Copy-Item .\src\AmazingAdmin\obj\Release\Package\AmazingAdmin.zip $publishWorkspace
```

これらすべてのアプリケーションに関する指示を Elastic Beanstalk 環境に与えるには、マニフェストをソリューションから発行ワークスペースにコピーしてフォルダを圧縮します。

```
Write-Host 'Copy deployment manifest'
Copy-Item .\aws-windows-deployment-manifest.json $publishWorkspace

Write-Host 'Zipping up publish workspace to create app bundle'
Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory( $publishWorkspace, $appBundle)
```

アプリケーションバンドルの作成が完了したので、ウェブコンソールに移動して、アーカイブをElastic Beanstalk環境にアップロードします。または、引き続き AWS PowerShell コマンドレットを使用して、アプリケーションバンドルを使って、Elastic Beanstalk 環境を更新します。`Set-AWSCredentials` および `Set-DefaultAWSRegion` コマンドレットを使用して、Elastic Beanstalk 環境を含むプロファイルとリージョンに現在のプロファイルとリージョンが設定されていることを確認します。

```
Write-Host 'Write application bundle to S3'
# Determine S3 bucket to store application bundle
$s3Bucket = New-EBStorageLocation
Write-S3Object -BucketName $s3Bucket -File $appBundle


$applicationName = "ASPNETCoreOnAWS"
$environmentName = "ASPNETCoreOnAWS-dev"
$versionLabel = [System.DateTime]::Now.Ticks.ToString()

Write-Host 'Update Beanstalk environment for new application bundle'
New-EBApplicationVersion -ApplicationName $applicationName -VersionLabel $versionLabel -SourceBundle_S3Bucket $s3Bucket -SourceBundle_S3Key app-bundle.zip
Update-EBEnvironment -ApplicationName $applicationName -EnvironmentName $environmentName -VersionLabel $versionLabel
```

ここで、ツールキットまたはウェブコンソールのどちらかの Elastic Beanstalk 環境のステータスページを使用して、更新のステータスを確認します。完了すると、デプロイマニフェストで設定した IIS パスを使って、デプロイされた各アプリケーションに移動できるようになります。