다수의 .NET 및 Elastic Beanstalk용 애플리케이션 - AWS Amazon Q를 사용한 툴킷

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

다수의 .NET 및 Elastic Beanstalk용 애플리케이션

배포 매니페스트를 사용하면 여러 애플리케이션을 동일한 Elastic Beanstalk 환경에 배포할 수 있습니다.

배포 매니페스트는 ASP.NET Core 웹 애플리케이션과 기존 ASP.NET 애플리케이션용 msdeploy 아카이브를 지원합니다. 프런트엔드에 ASP.NET Core를 사용하고 확장 API에 웹 API 프로젝트를 사용하여 뛰어난 새 애플리케이션을 작성한 시나리오가 있다고 가정해 보겠습니다. 또한 기존 ASP.NET을 사용하여 작성한 관리자 앱도 있습니다.

도구 키트의 배포 마법사는 단일 프로젝트의 배포에 중점을 둡니다. 여러 애플리케이션 배포를 잘 활용하려면 애플리케이션 번들을 수동으로 생성해야 합니다. 시작하려면 매니페스트를 작성합니다. 이 예제의 경우 솔루션의 루트에 매니페스트를 작성합니다.

매니페스트의 배포 단원에는 두 개의 하위 요소가 있습니다. 하나는 배포할 ASP.NET Core 웹 애플리케이션의 어레이이며 다른 하나는 배포할 msdeploy 아카이브의 어레이입니다. 각 애플리케이션의 경우 IIS 경로 및 애플리케이션의 비트 위치를 매니페스트에 상대적으로 설정합니다.

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

매니페스트를 작성하면, Windows PowerShell을 사용하여 애플리케이션 번들을 생성하고 기존 Elastic Beanstalk 환경을 업데이트하여 실행합니다. 스크립트가 Visual Studio 솔루션을 포함하는 폴더에서 실행된다는 가정 하에 작성됩니다.

먼저 스크립트에서 애플리케이션 번들을 생성할 작업 영역 폴더를 설정합니다.

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

폴더를 생성하면 프런트엔드를 가져올 준비가 되었습니다. 배포 마법사와 마찬가지로 .NET CLI를 사용하여 애플리케이션을 게시합니다.

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

"frontend" 하위 폴더는 출력 폴더로 사용되었으며, 매니페스트에서 설정한 폴더와 일치합니다. 이제 Web API 프로젝트에 대해서도 동일하게 수행해야 합니다.

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

관리자 사이트는 기존 ASP.NET 애플리케이션이므로, .NET CLI를 사용할 수 없습니다. 관리자 애플리케이션의 경우, msbuild를 통해 빌드 대상 패키지를 전달하여 msdeploy 아카이브를 생성합니다. 기본적으로 패키지 대상은 obj\Release\Package 폴더 아래에 msdeploy 아카이브를 생성하므로, 해당 아카이브를 게시 작업 영역으로 복사해야 합니다.

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

Elastic Beanstalk 환경에 이러한 모든 애플리케이션으로 작업할 사항을 알리려면 솔루션에서 게시 작업 영역으로 매니페스트를 복사한 다음 폴더를 압축합니다.

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)

이제 애플리케이션 번들이 있으므로 웹 콘솔로 이동하여 아카이브를 Elastic Beanstalk 환경에 업로드할 수 있습니다. 또는 를 계속 사용할 수 있습니다.AWSPowerShell cmdlet을 사용하여 Elastic Beanstalk 환경을 업데이트하여 애플리케이션 번들과 함께 업데이트합니다. 를 사용하여 현재 프로필과 리전을 Elastic Beanstalk 환경을 포함하는 프로필과 리전으로 설정해야 합니다.Set-AWSCredentialsSet-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

이제 도구 키트 또는 웹 콘솔에서 Elastic Beanstalk 환경 상태 페이지를 사용하여 업데이트 상태를 확인합니다. 완료되면 배포 매니페스트에서 설정한 IIS 경로에서 배포한 각 애플리케이션을 탐색할 수 있습니다.