

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

# 에 ASP.NET Web Forms 애플리케이션 배포 AWS
<a name="deploying"></a>

## NuGet 패키지 관리
<a name="nuget-manage"></a>

NuGet은 .NET용 코드 패키지를 포함하고 관리하는 리포지토리입니다. 애플리케이션에는 [nuget.org](https://www.nuget.org/) 공개적으로 사용 가능한 패키지 또는 내부 리포지토리에 게시되는 사용자 지정 빌드 패키지라는 두 가지 유형의 NuGet 패키지가 설치될 수 있습니다. nuget.org 패키지를 풀다운하려면 애플리케이션을 빌드하는 인스턴스에 아웃바운드 인터넷 액세스 권한이 있어야 합니다. 일부 사용자의 경우 보안 문제 또는 네트워크 제한으로 인해 인터넷 액세스가 바람직하지 않을 수 있습니다.

이 문제를 해결하기 위해 관리형 아티팩트(NuGet) 리포지토리를 프로비저닝하여 nuget.org 같은 외부 소스에서 패키지를 다운로드할 수 있습니다. 완전 관리형 아티팩트 리포지토리 서비스 AWS CodeArtifact인를 NuGet 패키지 리포지토리로 사용할 수 있습니다. 자세한 내용은 AWS 블로그 게시물 [Using NuGet with AWS CodeArtifact](https://aws.amazon.com/blogs/devops/using-nuget-with-aws-codeartifact/)를 참조하세요. 다른 인기 있는 타사 옵션에는 [Nexus](https://help.sonatype.com/repomanager2/.net-package-repositories-with-nuget) 및 [Artifactory](https://www.jfrog.com/confluence/display/JFROG/NuGet+Repositories)가 있습니다. 이 접근 방식을 사용하면 프라이빗 리포지토리 내에서 공개적으로 사용 가능한 패키지를 캐시할 수 있으며 빌드 프로세스 중에 직접 인터넷에 액세스할 필요가 줄어듭니다. 다운로드할 수 있는 패키지를 더 잘 제어하려면 외부 액세스를 비활성화할 수 있습니다. 이 경우 개발자는 자체 NuGet 패키지와 필요한 기타 타사 패키지를 모두 리포지토리에 푸시해야 합니다.

NuGet 패키지 리포지토리를 사용하도록 애플리케이션을 구성하려면 프로젝트 루트 또는 솔루션 루트 디렉터리에 `NuGet.config` 파일을 생성합니다. 이 파일은 패키지를 복원할 때 NuGet이 사용해야 하는 패키지 소스를 지정합니다. 다음 예제에서는 CodeArtifact를 사용하도록 `NuGet.config` 파일을 구성하는 방법을 보여줍니다.

```
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageRestore>
        <!-- Allow NuGet to download missing packages -->
        <add key="enabled" value="True" />
        <!-- Automatically check for missing packages during build in Visual Studio -->
        <add key="automatic" value="True" />
    </packageRestore>
    <packageSources>
        <add key="MyRepo" value="https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/nuget/my_repo/v3/index.json" />
    </packageSources>
</configuration>
```

이 예제에서는를 CodeArtifact 리포지토리의 실제 URL`https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/nuget/my_repo/v3/index.json`로 바꿉니다. [CodeArtifact 콘솔](https://console.aws.amazon.com/codesuite/codeartifact/start)에서 또는 `aws codeartifact get-repository-endpoint` 명령을 실행하여이 URL을 찾을 수 있습니다.

**중요**  
`NuGet.config` 파일을 구성하면 동일한 디렉터리 구조 내의 모든 프로젝트에 영향을 미칩니다. 서로 다른 프로젝트에 서로 다른 패키지 소스를 사용하려면 각 프로젝트 또는 솔루션에 대해 별도의 `NuGet.config` 파일을 생성합니다.
애플리케이션을 빌드하는 인스턴스에 NuGet 패키지 리포지토리(예: CodeArtifact)에 연결하는 데 필요한 권한과 네트워크 액세스 권한이 있는지 확인합니다. 자격 증명 획득에 대한 자세한 내용은 [ CodeArtifact 설명서의 nuget 또는 dotnet CLI와 함께](https://docs.aws.amazon.com/codeartifact/latest/ug/nuget-cli.html) CodeArtifact 사용을 참조하세요.

## 애플리케이션 빌드
<a name="nuget-build"></a>

레거시 ASP.NET Web Forms 애플리케이션을 로 마이그레이션 AWS할 때 애플리케이션을 빌드하기 위한 중앙 도구로 Microsoft Build Engine(MSBuild)을 계속 사용합니다. MSBuild는 일반적으로 Visual Studio와 번들로 제공되지만 Visual Studio를 설치하지 않고도 Microsoft에서 독립 실행형 MSBuild 실행 파일을 다운로드하여 사용할 수 있습니다. 이 접근 방식은 MSBuild가 설치된 Windows 인스턴스 또는 Docker 컨테이너를 사용할 수 AWS있는 Web Forms 애플리케이션을 빌드할 때 특히 유용합니다.

ASP.NET Web Forms 애플리케이션을 빌드하는 데 필요한 두 가지 주요 단계는 NuGet 패키지 복원과 애플리케이션 빌드입니다. 이러한 단계를 수행하는 방법에 대한 세부 정보는 사용하기로 선택한 CI/CD 도구에 따라 다를 수 있습니다. 예를 들어 AWS CodeBuild를 사용하는 경우 빌드 프로세스는 Docker 컨테이너 내에서 실행됩니다.

### NuGet 패키지 복원
<a name="restore-package"></a>

애플리케이션을 빌드하기 전에 프로젝트에 필요한 NuGet 패키지를 복원해야 합니다. 프로젝트의 루트 디렉터리에서 실행되는 MSBuild 또는 NuGet 명령줄 인터페이스(CLI) 명령을 사용하여이 작업을 수행할 수 있습니다.

MSBuild 사용:

```
msbuild -t:restore
```

NuGet CLI 사용:

```
nuget restore
```

### MSBuild를 사용하여 빌드
<a name="msbuild"></a>

NuGet 패키지를 복원한 후 배포 아티팩트를 생성하는 기본 빌드 명령을 진행할 수 있습니다. 이 명령은 일반적으로 프로젝트 파일, 빌드 구성(예: `Release`) 및 빌드된 아티팩트의 출력 디렉터리를 지정합니다.

```
msbuild <ProjectName>.csproj /p:Configuration=Release /p:OutDir=<OutDir>
```

MSBuild 옵션에 대한 자세한 내용은 Microsoft 설명서의 [MSBuild 명령줄 참조](https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild-command-line-reference)를 참조하세요.

를 사용하여 ASP.NET 애플리케이션을 빌드하는 방법에 대한 자세한 내용은 AWS 블로그 게시물 [Creating CI/CD pipelines for ASP.NET 4.x with AWS CodePipeline and를 AWS Elastic Beanstalk](https://aws.amazon.com/blogs/devops/creating-ci-cd-pipelines-for-asp-net-4-x-with-aws-codepipeline-and-aws-elastic-beanstalk/) AWS CodeBuild참조하세요.

## 애플리케이션 배포하기
<a name="nuget-deploy"></a>

Web Forms 애플리케이션을 빌드한 후 대상 환경에 아티팩트를 배포합니다 AWS. 대부분의 시나리오에서는 빌드된 아티팩트를 Amazon Simple Storage Service(Amazon S3) 버킷에 압축하여 업로드하여 쉽게 배포 및 배포할 수 있습니다. 지침은 [Amazon S3 설명서를](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) 참조하세요.

Amazon EC2 인스턴스에 아티팩트를 배포하기 위한 두 가지 주요 옵션은 수동 및 자동입니다.

### 수동 배포
<a name="manual"></a>

이 옵션에는 EC2 인스턴스 사용자 데이터를 사용하여 다음 작업을 수행하는 스크립트를 포함하는 작업이 포함됩니다.
+ IIS(인터넷 정보 서비스) 설치
+ Amazon S3 버킷에서 빌드 아티팩트 가져오기 및 압축 해제
+ IIS 애플리케이션 생성 및 구성

이 접근 방식은 유연성을 제공하지만 수동 개입이 필요하고 애플리케이션이 확장되거나 자주 업데이트되는 경우 관리하기 어려울 수 있습니다.

### 배포 자동화
<a name="automated"></a>

권장 접근 방식은 자동 및 반복 가능한 배포에 [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)를 사용하는 것입니다. CodeDeploy는 AWS CodeBuild 및와 AWS 서비스 같은 다른와 원활하게 통합 AWS CodePipeline되므로 ASP.NET Web Forms 애플리케이션에 대한 전체 CI/CD 파이프라인을 생성할 수 있습니다. CodeDeploy를 사용하면 롤링 및 블루/그린 업데이트와 같은 배포 전략을 정의하여 가동 중지 시간을 최소화하고 애플리케이션 버전 간 원활한 전환을 보장할 수 있습니다.

CodePipeline, CodeBuild CodeBuild 및 CodeDeploy를 사용하여 ASP.NET Web Forms 애플리케이션의 CI/CD 파이프라인을 설정하는 방법에 대한 자세한 내용과 예제는 AWS 블로그 게시물 [Creating CI/CD pipelines for ASP.NET 4.x with AWS CodePipeline and AWS Elastic Beanstalk](https://aws.amazon.com/blogs/devops/creating-ci-cd-pipelines-for-asp-net-4-x-with-aws-codepipeline-and-aws-elastic-beanstalk/)를 참조하세요.

CodeBuild, CodeDeploy 및 CodePipeline과 AWS 서비스 같은를 사용하면 마이그레이션된 ASP.NET Web Forms 애플리케이션의 빌드 및 배포 프로세스를 간소화하고 AWS 인프라에 일관되고 안정적으로 배포할 수 있습니다.

자동 배포에 대한 자세한 내용은 AWS 블로그 게시물 [Generating CI/CD Pipelines for Containerized ASP.NET Applications using AWS App2Container](https://aws.amazon.com/blogs/modernizing-with-aws/generating-ci-cd-pipelines-for-containerized-asp-net-applications-using-aws-app2container/) 및 AWS re:Post의 [레거시 .NET Framework 애플리케이션을 위한 CI/CD 파이프라인 구축](https://repost.aws/questions/QUqSD-rVsFQBKYcrJGQt754w/net-4-7-application-on-ec2-windows)에 대한 정보를 참조하세요.