Support varias aplicaciones para .NET y Elastic Beanstalk - AWS Kit de herramientas con Amazon Q

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Support varias aplicaciones para .NET y Elastic Beanstalk

Con el manifiesto de la implementación, tiene la posibilidad de implementar varias aplicaciones en el mismo entorno de Elastic Beanstalk.

El manifiesto de la implementación es compatible con aplicaciones web ASP.NET Core así como archivos msdeploy para aplicaciones ASP.NET tradicionales. Imagine una situación en la que usted haya desarrollado una nueva aplicación sorprendente mediante ASP.NET Core para el frontend y un proyecto de API web para una API de extensiones. También tiene una aplicación de administración que escribió mediante ASP.NET tradicional.

El asistente de implementación del conjunto de herramientas se centra en la implementación de un proyecto individual. Para aprovechar la implementación de varias aplicaciones, tendrá que construir el paquete de la aplicación a mano. Para empezar, escriba el manifiesto. En este ejemplo, escribirá el manifiesto en la raíz de su solución.

La sección de implementación del manifiesto tiene dos elementos secundarios: una matriz de aplicaciones web ASP.NET Core para su implementación y una matriz de archivos msdeploy para su implementación. Para cada aplicación, establezca la ruta de IIS y la ubicación de los bits de la aplicación relativos al manifiesto.

{ "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 el manifiesto escrito, utilizará Windows PowerShell para crear el paquete de la aplicación y actualizar un entorno de Elastic Beanstalk existentes para ejecutarla. El script se escribe suponiendo que se ejecutará desde la carpeta que contiene la solución de Visual Studio.

Lo primero que tiene que hacer en el script es configurar una carpeta de área de trabajo en la que crear el paquete de la aplicación.

$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 vez que haya creado la carpeta, ha llegado el momento de preparar el frontend. Al igual que con el asistente de implementación, utilice la CLI de dotnet para publicar la aplicación.

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

Observe que la subcarpeta “frontend” se utilizó para la carpeta de salida, que se corresponde con la carpeta que estableció en el manifiesto. Ahora tiene que hacer lo mismo para el proyecto de 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

El sitio de administración es una aplicación ASP.NET tradicional, por lo que no puede utilizar la CLI de dotnet. Para la aplicación de administración, debe utilizar msbuild, transfiriendo el paquete de destino de compilación para crear el archivo msdeploy. De forma predeterminada, el destino del paquete crea el archivo msdeploy en la carpeta obj\Release\Package, por lo que tendrá que copiar el archivo en el área de trabajo de publicación.

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

Para indicar al entorno de Elastic Beanstalk qué debe hacer con todas estas aplicaciones, copie el manifiesto de su solución en el área de trabajo de publicación y, a continuación, comprima la carpeta.

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)

Ahora que tiene el paquete de la aplicación, puede ir a la consola web y cargar el archivo a un entorno de Elastic Beanstalk. También puede seguir usando laAWSCmdlets de PowerShell para actualizar el entorno de Elastic Beanstalk con el paquete de la aplicación. Asegúrese de que ha establecido el perfil y la región actuales en el perfil y la región que contienen su entorno de Elastic Beanstalk medianteSet-AWSCredentialsySet-DefaultAWSRegionCmdlets de .

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

Compruebe el estado de la actualización en el conjunto de herramientas o la consola web de la página de estado del entorno de Elastic Beanstalk. Cuando finalice, podrá acceder a cada una de las aplicaciones que implementó en la ruta de IIS establecida en el manifiesto de implementación.