.NET と Elastic Beanstalk 用の複数アプリケーションのSupport - AWS Amazon Q を使用したツールキット

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

.NET と Elastic Beanstalk 用の複数アプリケーションのSupport

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

デプロイマニフェストは、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 環境にアップロードします。あるいは、を引き続き使用することもできます。AWSPowerShell コマンドレットを使用して Elastic Beanstalk 環境を更新します。Elastic Beanstalk 環境を含むプロファイルとリージョンに、現在のプロファイルとリージョンが設定されていることを確認します。これには、Set-AWSCredentialsそしてSet-DefaultAWSRegionコマンドレット。

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 パスを使って、デプロイされた各アプリケーションに移動できるようになります。