Support de plusieurs applications pour .NET et Elastic Beanstalk - AWS Boîte à outils avec Amazon Q

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Support de plusieurs applications pour .NET et Elastic Beanstalk

Grâce au manifeste de déploiement, vous avez la possibilité de déployer plusieurs applications sur le même environnement Elastic Beanstalk.

Le manifeste de déploiement prend en charge les applications web ASP.NET Core ainsi que les archives msdeploy pour les applications ASP.NET traditionnelles. Imaginez un scénario dans lequel vous avez écrit une nouvelle application incroyable en utilisant ASP.NET Core pour le serveur frontal et une API web pour une API d'extension. Vous disposez également d'une application d'administration que vous avez écrite à l'aide d'ASP.NET traditionnel.

L'assistant de déploiement de la boîte à outils se concentre sur le déploiement d'un seul projet. Pour profiter du déploiement de plusieurs applications, vous devez créer manuellement la solution groupée d'applications. Pour commencer, écrivez le manifeste. Dans cet exemple, vous allez écrire le manifeste à la racine de votre solution.

La section de déploiement du manifeste possède deux enfants : un éventail d'applications web ASP.NET Core à déployer et un éventail d'archives msdeploy à déployer. Pour chaque application, vous définissez le chemin IIS et l'emplacement des bits de l'application relatifs au manifeste.

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

Une fois le manifeste écrit, vous utilisez Windows PowerShell pour créer le bundle d'application et mettre à jour un environnement Elastic Beanstalk existant pour l'exécuter. Le script est écrit en supposant qu'il sera exécuté depuis le dossier contenant votre solution Visual Studio.

La première chose à faire dans le script est de configurer un espace de travail dans lequel créer la solution groupée d'applications.

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

Une fois le dossier créé, il est temps de préparer le serveur frontal. Comme avec l'assistant de déploiement, utilisez l'interface de ligne de commande dotnet pour publier l'application.

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

Notez que le sous-dossier « serveur frontal » a été utilisé pour le dossier de sortie, qui correspond à celui que vous avez défini dans le manifeste. Maintenant, vous devez faire de même pour le projet d'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

Le site d'administration est une application ASP.NET traditionnelle, vous ne pouvez donc pas utiliser l'interface de ligne de commande dotnet. Pour l'application d'administration, vous devez utiliser msbuild, en spécifiant le package de build cible pour créer l'archive msdeploy. Par défaut, le package cible crée l'archive msdeploy sous le dossier obj\Release\Package, vous devrez donc la copier dans l'espace de travail de publication.

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

Pour indiquer à l'environnement Elastic Beanstalk ce qu'il doit faire avec toutes ces applications, copiez le manifeste depuis votre solution sur l'espace de travail de publication et compressez le dossier.

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)

Maintenant que vous disposez du bundle d'application, vous pouvez accéder à la console web et charger l'archive sur un environnement Elastic Beanstalk. Sinon, vous pouvez continuer à utiliser le kitAWSAplets de commande PowerShell pour mettre à jour l'environnement Elastic Beanstalk avec le bundle d'application. Veillez à avoir défini le profil et la région actuels sur le profil et la région contenant votre environnement Elastic Beanstalk à l'aide deSet-AWSCredentialsetSet-DefaultAWSRegionApplets de commande .

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

A présent, vérifiez l'état de la mise à jour grâce à la page d'état de l'environnement Elastic Beanstalk dans la boîte à outils ou la console web. Une fois terminé, vous pourrez accéder à chacune des applications que vous avez déployées vers le chemin IIS défini dans le manifeste de déploiement.