Support mehrerer Anwendungen für .NET und Elastic Beanstalk - AWS Toolkit mit Amazon Q

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Support mehrerer Anwendungen für .NET und Elastic Beanstalk

Mit dem Bereitstellungsmanifest haben Sie die Möglichkeit, mehrere Anwendungen für dieselbe Elastic Beanstalk-Umgebung bereitzustellen.

Das Bereitstellungsmanifest unterstützt ASP.NET Core-Webanwendungen sowie msdeploy-Dateien für herkömmliche ASP.NET-Anwendungen. Stellen Sie sich vor, Sie hätten mit ASP.NET Core eine neue, faszinierende Anwendung für das Frontend und ein Web-API-Projekt für eine Erweiterungen-API geschrieben. Außerdem hätten Sie eine Admin-App mit dem herkömmlichen ASP.NET. geschrieben.

Der Bereitstellungsassistent des Toolkits konzentriert sich auf die Bereitstellung eines einzelnen Projekts. Wenn Sie von der Bereitstellung mehrerer Anwendungen profitieren möchten, müssen Sie das Anwendungspaket manuell erstellen. Zunächst schreiben Sie die Manifestdatei. Bei diesem Beispiel wird das Manifest in das Stammverzeichnis Ihrer Lösung geschrieben.

Der Bereitstellungsabschnitt im Manifest hat zwei untergeordnete Elemente: ein Array aus bereitzustellenden ASP.NET Core-Webanwendungen und ein Array aus bereitzustellenden msdeploy-Dateien. Sie geben für jede Anwendung den IIS-Pfad sowie den Speicherort der Anwendungsbits im Bezug auf das Manifest an.

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

Wenn das Manifest geschrieben ist, verwenden Sie Windows PowerShell zum Erstellen des Anwendungspakets und aktualisieren eine vorhandene Elastic Beanstalk-Umgebung, um es darin auszuführen. Das Skript wird unter der Annahme geschrieben, dass es über den Ordner ausgeführt wird, der Ihre Visual Studio-Lösung enthält.

Zunächst müssen Sie im Skript einen Workspace-Ordner einrichten, in dem das Anwendungspaket erstellt wird.

$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 }

Sobald Sie den Ordner erstellt haben, wird das Frontend vorbereitet. Ebenso wie beim Bereitstellungsassistenten verwenden Sie die dotnet CLI zum Veröffentlichen der Anwendung.

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

Beachten Sie, dass der Unterordner "Frontend" für den Ausgabeordner verwendet wurde, entsprechend dem von Ihnen im Manifest festgelegten Ordner. Nun führen Sie dieselben Schritt für das Web-API-Projekt durch.

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

Bei der Administrationswebsite handelt es sich um eine herkömmliche ASP.NET-Anwendung, sodass Sie die dotnet CLI nicht verwenden können. Für die Admin-Anwendung sollten Sie msbuild verwenden, mit Übergabe in das erstellte Zielpaket zum Erzeugen der msdeploy-Datei. Standardmäßig erstellt das Paketziel die msdeploy-Datei unter dem obj\Release\Package-Ordner. Daher müssen Sie die Datei in den Workspace zum Veröffentlichen kopieren.

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

Damit Elastic Beanstalk-Umgebung Informationen erhalten bleibt, was mit all diesen Anwendungen zu tun ist, kopieren Sie das Manifest von Ihrer Lösung in den Workspace zum Veröffentlichen und komprimieren den Ordner.

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)

Nun verfügen Sie über das Anwendungspaket und könnten die Datei über die Webkonsole in eine Elastic Beanstalk-Umgebung hochladen. Alternativ können Sie weiterhin die verwendenAWSPowerShell-Cmdlets zum Aktualisieren der Elastic Beanstalk-Umgebung mit dem Anwendungspaket. Vergewissern Sie sich, dass Sie das aktuelle Profil und die Region zum Profil sowie die Region, die Ihre Elastic Beanstalk-Umgebung enthält, festgelegt haben, indem SieSet-AWSCredentialsundSet-DefaultAWSRegion-Cmdlets.

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

Nun überprüfen Sie den Status der Aktualisierung über die Statusseite der Elastic Beanstalk-Umgebung im Toolkit oder über die Webkonsole. Nachdem der Vorgang abgeschlossen ist, können Sie zu jeder Anwendung navigieren, die Sie für den, im Bereitstellungsmanifest angegebenen, IIS-Pfad bereitgestellt haben.