Support di più applicazioni per .NET e Elastic Beanstalk - AWS Toolkit per Visual Studio

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Support di più applicazioni per .NET e Elastic Beanstalk

Utilizzando il manifest di distribuzione, è possibile distribuire più applicazioni nello stesso ambiente Elastic Beanstalk.

Il manifest di distribuzione supportaASP.NET Coreapplicazioni web e archivi msdeploy per le applicazioni ASP.NET tradizionali. Immagina uno scenario in cui hai scritto una nuova straordinaria applicazione utilizzando ASP.NET Core per il frontend e un progetto API Web per un'API di estensioni. Hai anche un'app di amministrazione che hai scritto utilizzando ASP.NET tradizionale.

La procedura guidata di distribuzione del toolkit si concentra sulla distribuzione di un singolo progetto. Per trarre vantaggio dalla distribuzione di più applicazioni, è necessario creare manualmente il pacchetto di applicazioni. Per iniziare, scrivi il manifesto. Per questo esempio, scriverai il manifesto alla radice della soluzione.

La sezione di distribuzione nel manifest ha due figli: un array di applicazioni Web ASP.NET Core da distribuire e un array di archivi msdeploy da distribuire. Per ogni applicazione, è possibile impostare il percorso IIS e la posizione dei bit dell'applicazione rispetto al manifest.

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

Con il manifest scritto, utilizzerai Windows PowerShell per creare il bundle di applicazioni e aggiornare un ambiente Elastic Beanstalk esistente per eseguirlo. Lo script viene scritto supponendo che venga eseguito dalla cartella contenente la soluzione Visual Studio.

La prima cosa da fare nello script è impostare una cartella del workspace in cui creare il bundle dell'applicazione.

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

Una volta creata la cartella, è ora di preparare il frontend. Come per la procedura guidata di distribuzione, utilizzare l'interfaccia a riga di comando di dotnet per pubblicare l'applicazione.

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

Notate che la sottocartella «frontend» è stata utilizzata per la cartella di output, corrispondente alla cartella impostata nel manifest. Ora è necessaria la stessa operazione per il progetto dell'API Web.

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

Il sito di amministrazione è un'applicazione ASP.NET tradizionale, quindi non è possibile utilizzare l'interfaccia a riga di comando dotnet. Per l'applicazione admin, dovresti usare msbuild, passando il pacchetto target di build per creare l'archivio msdeploy. Per impostazione predefinita, la destinazione del pacchetto crea l'archivio msdeploy sottoobj\Release\Packagecartella, quindi sarà necessario copiare l'archivio nell'area di lavoro di pubblicazione.

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

Per indicare all'ambiente Elastic Beanstalk cosa fare con tutte queste applicazioni, copiare il manifest dalla soluzione nell'area di lavoro di pubblicazione e quindi comprimere la cartella.

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)

Ora che hai il pacchetto di applicazioni, puoi andare sulla console Web e caricare l'archivio in un ambiente Elastic Beanstalk. In alternativa, è possibile continuare a utilizzare ilAWSCmdlet PowerShell per aggiornare l'ambiente Elastic Beanstalk con il bundle dell'applicazione. Assicurati di aver impostato il profilo e la regione correnti sul profilo e sulla regione che contiene l'ambiente Elastic Beanstalk utilizzandoSet-AWSCredentialseSet-DefaultAWSRegionCmdlet .

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

Ora, controlla lo stato dell'aggiornamento utilizzando la pagina di stato dell'ambiente Elastic Beanstalk nel toolkit o nella console Web. Una volta completato, sarà possibile passare a ciascuna delle applicazioni distribuite nel percorso IIS impostato nel manifest di distribuzione.