Support de vários aplicativos para o .NET e o Elastic Beanstalk - AWS Kit de ferramentas com Amazon Q

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Support de vários aplicativos para o .NET e o Elastic Beanstalk

Usando o manifesto de implantação, você tem a capacidade de implantar vários aplicativos no mesmo ambiente do Elastic Beanstalk.

O manifesto de implantação oferece suporte a aplicativos web ASP.NET Core, bem como a arquivos msdeploy de aplicativos ASP.NET tradicionais. Imagine um cenário onde você tenha escrito um novo aplicativo incrível usando o ASP.NET Core para o front-end e um projeto de API web para uma API de extensões. Você também tem um aplicativo admin que escreveu usando o ASP.NET tradicional.

O assistente de implantação do toolkit se concentra na implantação de um único projeto. Para aproveitar a implantação de vários aplicativos, você precisa construir o pacote de aplicativos manualmente. Para começar, escreva o manifesto. Para este exemplo, você escreverá o manifesto na raiz da solução.

A seção de implantação no manifesto tem dois filhos: uma matriz de aplicativos web do ASP.NET Core a ser implantada e uma matriz de arquivos msdeploy a ser implantada. Para cada aplicativo, você define o caminho do IIS e o local dos bits do aplicativo em relação ao manifesto.

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

Com o manifesto escrito, você usará o Windows PowerShell para criar o pacote de aplicativos e atualizar um ambiente do Elastic Beanstalk existente para executá-lo. O script é escrito pressupondo-se que será executado na pasta que contém a solução do Visual Studio.

A primeira coisa que você precisa fazer no script é configurar uma pasta de workspace na qual criar o pacote de aplicativos.

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

Assim que você tiver criado a pasta, será o momento de preparar o front-end. Assim como acontece com o assistente de implantação, use a CLI do dotnet para publicar o aplicativo.

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

A subpasta "frontend" foi usada para a pasta de saída, de acordo com a pasta definida por você no manifesto. Agora você precisa fazer a mesma coisa para o projeto da 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

O site admin é um aplicativo do ASP.NET tradicional, de maneira que você não pode usar a CLI do dotnet. Para o aplicativo admin, você deve usar msbuild, passando o pacote de destino da compilação para criar o arquivo msdeploy. Por padrão, o destino do pacote cria o arquivo msdeploy na pasta obj\Release\Package, logo, você precisará copiar o arquivo para o workspace de publicação.

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 informar ao ambiente do Elastic Beanstalk o que fazer com todos esses aplicativos, copie o manifesto da solução para o workspace de publicação e compacte a pasta.

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)

Agora que tem o pacote de aplicativos, você pode ir até o console web e fazer upload do arquivo para um ambiente do Elastic Beanstalk. Você também pode continuar a usar oAWSCmdlets do PowerShell para atualizar o ambiente do Elastic Beanstalk com o pacote de aplicativos. Verifique se você definiu o perfil e a região atuais segundo o perfil e a região que contêm o ambiente do Elastic Beanstalk usandoSet-AWSCredentialseSet-DefaultAWSRegioncmdlets do .

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

Agora verifique o status da atualização usando página de status do ambiente do Elastic Beanstalk no toolkit ou no console web. Depois de terminar, você poderá navegar até cada um dos aplicativos que implantou no caminho do IIS definido no manifesto da implantação.