

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

# QuickStart: Linux 기반 .NET Core 애플리케이션을 Elastic Beanstalk로 배포
<a name="dotnet-linux-quickstart"></a>

이 QuickStart 자습서에서는 Linux 기반 .NET Core 애플리케이션을 생성하고 AWS Elastic Beanstalk 환경에 배포하는 프로세스를 안내합니다.

**프로덕션용으로 사용 불가**  
예제는 설명용으로만 제공됩니다. 예제 애플리케이션을 프로덕션 환경에서 사용하지 마세요.

**Topics**
+ [AWS 계정](#dotnet-linux-quickstart-aws-account)
+ [사전 조건](#dotnet-linux-quickstart-prereq)
+ [1단계: Linux 기반 .NET Core 애플리케이션 생성](#dotnet-linux-quickstart-create-app)
+ [2단계: 로컬에서 애플리케이션 실행](#dotnet-linux-quickstart-run-local)
+ [3단계: EB CLI를 사용하여 Linux 기반 .NET Core 애플리케이션 배포](#dotnet-linux-quickstart-deploy)
+ [4단계: Elastic Beanstalk에서 애플리케이션 실행](#dotnet-linux-quickstart-run-eb-ap)
+ [5단계: 정리](#go-tutorial-cleanup)
+ [AWS 애플리케이션을 위한 리소스](#dotnet-linux-quickstart-eb-resources)
+ [다음 단계](#dotnet-linux-quickstart-next-steps)
+ [Elastic Beanstalk 콘솔을 사용하여 배포](#dotnet-linux-quickstart-console)

## AWS 계정
<a name="dotnet-linux-quickstart-aws-account"></a>

아직 AWS 고객이 아닌 경우 AWS 계정을 생성해야 합니다. 가입하면 Elastic Beanstalk 및 필요한 기타 AWS 서비스에 액세스할 수 있습니다.

이미 AWS 계정이 있는 경우 로 이동할 수 있습니다[사전 조건](#dotnet-linux-quickstart-prereq).

### AWS 계정 생성
<a name="dotnet-linux-quickstart-aws-account-procedure"></a>

#### 에 가입 AWS 계정
<a name="sign-up-for-aws"></a>

를 시작하려면이 AWS필요합니다 AWS 계정. 생성에 대한 자세한 AWS 계정내용은 *AWS Account Management 참조 안내서*의 [시작하기 AWS 계정](https://docs.aws.amazon.com//accounts/latest/reference/getting-started.html)를 참조하세요.

## 사전 조건
<a name="dotnet-linux-quickstart-prereq"></a>

이 설명서의 절차를 수행하기 위해서는 실행 명령줄을 입력할 쉘 또는 터미널이 필요합니다. 명령은 프롬프트 기호($)와 해당하는 경우 현재 디렉터리 이름 뒤에 리스트로 표시됩니다.

```
~/eb-project$ this is a command
this is output
```

Linux 및 macOS의 경우 선호하는 쉘과 패키지 관리자를 사용할 수 있습니다. Windows의 경우 [Linux용 Windows Subsystem을 설치](https://docs.microsoft.com/en-us/windows/wsl/install-win10)하여 Ubuntu 및 Bash의 Windows 통합 버전을 가져옵니다.

### EB CLI
<a name="dotnet-linux-quickstart-prereq.ebcli"></a>

또한 본 자습서는 Elastic Beanstalk 명령줄 인터페이스(EB CLI)를 사용합니다. EB CLI 설치 및 구성에 대한 자세한 내용은 [설정 스크립트를 사용하여 EB CLI 설치(권장)](eb-cli3.md#eb-cli3-install) 및 [EB CLI 구성](eb-cli3-configuration.md) 단원을 참조하세요.

### Linux의 .NET Core
<a name="dotnet-linux-quickstart-prereq.runtime"></a>

로컬 시스템에 .NET SDK가 설치되어 있지 않은 경우 [.NET 설명서](https://learn.microsoft.com/en-us/dotnet/) 웹 사이트의 [.NET 다운로드](https://dotnet.microsoft.com/en-us/download) 링크를 따라 설치할 수 있습니다.

다음 명령을 실행하여 .NET SDK 설치를 확인합니다.

```
~$ dotnet --info
```

## 1단계: Linux 기반 .NET Core 애플리케이션 생성
<a name="dotnet-linux-quickstart-create-app"></a>

프로젝트 디렉터리를 만듭니다.

```
~$ mkdir eb-dotnetcore
~$ cd eb-dotnetcore
```

다음으로, 다음 명령을 실행하여 Hello World 애플리케이션 샘플을 생성합니다.

```
~/eb-dotnetcore$ dotnet new web --name HelloElasticBeanstalk
~/eb-dotnetcore$ cd HelloElasticBeanstalk
```

## 2단계: 로컬에서 애플리케이션 실행
<a name="dotnet-linux-quickstart-run-local"></a>

애플리케이션을 로컬에서 실행하려면 다음 명령을 입력합니다.

```
~/eb-dotnetcore/HelloElasticBeasntalk$ dotnet run
```

출력은 다음 텍스트와 같습니다.

```
Building...
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:7294
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5052
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
```

**참고**  
`dotnet` 명령은 애플리케이션을 로컬에서 실행할 때 무작위로 포트를 선택합니다. 이 예제에서 포트는 5052입니다. 애플리케이션을 Elastic Beanstalk 환경에 배포하면 애플리케이션은 포트 5000에서 실행됩니다.

웹 브라우저에 `http://localhost:{{port}}` URL 주소를 입력합니다. 이 특정 예제의 경우 명령은 `http://localhost:5052`입니다. 웹 브라우저에 “Hello World\!”가 표시됩니다.

## 3단계: EB CLI를 사용하여 Linux 기반 .NET Core 애플리케이션 배포
<a name="dotnet-linux-quickstart-deploy"></a>

다음 명령을 실행하여 이 애플리케이션에 대한 Elastic Beanstalk 환경을 생성합니다.

 

**환경을 생성하고 Linux 기반 .NET Core 애플리케이션을 배포하려면**

1. 생성하려는 Elastic Beanstalk 환경에 배포할 애플리케이션을 컴파일하고 특정 폴더에 게시합니다.

   ```
   ~$ cd eb-dotnetcore/HelloElasticBeanstalk
   ~/eb-dotnetcore/HelloElasticBeanstalk$ dotnet publish -o site
   ```

1. 방금 앱을 게시한 사이트 디렉터리로 이동합니다.

   ```
   ~/eb-dotnetcore/HelloElasticBeanstalk$ cd site
   ```

1. **eb init** 명령으로 EB CLI 리포지토리를 초기화합니다.

   명령에서 지정하는 플랫폼 브랜치 버전과 관련된 다음 세부 정보에 유의하세요.
   + 다음 명령에서 `{{x.y.z}}`를 플랫폼 브랜치 *AL2023의 .NET 6*의 최신 버전으로 바꿉니다.
   + 최신 플랫폼 브랜치 버전을 찾으려면 *AWS Elastic Beanstalk 플랫폼* 안내서의 [.NET Core on Linux](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.dotnetlinux) *지원 플랫폼*을 참조하세요.
   + 버전 번호가 포함된 솔루션 스택 이름의 예는 `64bit-amazon-linux-2023-v3.1.1-running-.net-6`입니다. 이 예제에서 브랜치 버전은 *3.1.1*입니다.

   ```
   ~eb-dotnetcore/HelloElasticBeanstalk/site$ eb init -p 64bit-amazon-linux-2023-v{{x.y.z}}-running-.net-6 dotnetcore-tutorial --region us-east-2
   Application dotnetcore-tutorial has been created.
   ```

   이 명령은 이름이 `dotnetcore-tutorial`인 애플리케이션을 만들고 명령에 지정된 Linux 기반 .NET Core 플랫폼 버전을 통해 환경을 생성하도록 로컬 리포지토리를 구성합니다.

1. (선택 사항) SSH를 통해 애플리케이션을 실행하는 EC2 인스턴스에 연결할 수 있도록 **eb init**를 다시 실행하여 기본 키 페어를 구성합니다.

   ```
   ~eb-dotnetcore/HelloElasticBeanstalk/site$ eb init
   Do you want to set up SSH for your instances?
   (y/n): y
   Select a keypair.
   1) my-keypair
   2) [ Create new KeyPair ]
   ```

   키 페어가 이미 있는 경우 이를 선택하거나, 프롬프트에 따라 키 페어를 생성합니다. 프롬프트가 보이지 않거나 나중에 설정을 변경해야 하는 경우 **eb init -i**를 실행합니다.

1. 환경을 만들고 **eb create**로 해당 환경에 애플리케이션을 배포합니다. Elastic Beanstalk는 애플리케이션에 대한 zip 파일을 자동으로 빌드하고 포트 5000에서 시작합니다.

   to 

   ```
   ~eb-dotnetcore/HelloElasticBeanstalk/site$ eb create dotnet-tutorial
   ```

   Elastic Beanstalk가 환경을 생성하는 데에는 약 5분이 걸립니다.

## 4단계: Elastic Beanstalk에서 애플리케이션 실행
<a name="dotnet-linux-quickstart-run-eb-ap"></a>

환경 생성 프로세스가 완료되면 **eb open**으로 웹 사이트를 엽니다.

```
~eb-dotnetcore/HelloElasticBeanstalk/site$ eb open
```

축하합니다\! Elastic Beanstalk를 사용하여 Linux 기반 .NET Core 애플리케이션을 배포했습니다\! 그러면 애플리케이션에 대해 생성된 도메인 이름을 사용하여 브라우저 창이 열립니다.

## 5단계: 정리
<a name="go-tutorial-cleanup"></a>

애플리케이션 작업을 완료하면 환경을 종료할 수 있습니다. Elastic Beanstalk는 환경과 연결된 모든 AWS 리소스를 종료합니다.

EB CLI를 사용하여 Elastic Beanstalk 환경을 종료하려면 다음 명령을 실행하세요.

```
~eb-dotnetcore/HelloElasticBeanstalk/site$ eb terminate
```

## AWS 애플리케이션을 위한 리소스
<a name="dotnet-linux-quickstart-eb-resources"></a>

단일 인스턴스 애플리케이션을 생성했습니다. 이 애플리케이션은 단일 EC2 인스턴스를 사용하는 간단한 샘플 애플리케이션 역할을 하므로 로드 밸런싱이나 오토 스케일링이 필요하지 않습니다. 단일 인스턴스 애플리케이션의 경우 Elastic Beanstalk는 다음 AWS 리소스를 생성합니다.
+ **EC2 인스턴스** - 선택한 플랫폼에서 웹 앱을 실행하도록 구성된 Amazon EC2 가상 머신입니다.

  특정 언어 버전, 프레임워크, 웹 컨테이너 또는 조합을 지원하도록 각 플랫폼마다 실행하는 소프트웨어, 구성 파일 및 스크립트 세트가 다릅니다. 대부분의 플랫폼에서는 웹 앱 앞의 웹 트래픽을 처리하고, 웹 앱으로 요청을 전달하고, 정적 자산을 제공하고, 액세스 및 오류 로그를 생성하는 역방향 프록시로 Apache 또는 nginx를 사용합니다.
+ **인스턴스 보안 그룹** - 포트 80에서 수신 트래픽을 허용하도록 구성된 Amazon EC2 보안 그룹입니다. 이 리소스를 통해 로드 밸런서의 HTTP 트래픽이 웹 앱을 실행하는 EC2 인스턴스에 도달할 수 있습니다. 기본적으로 다른 포트에서는 트래픽이 허용되지 않습니다.
+ **Amazon S3 버킷(Amazon S3 bucket)** - Elastic Beanstalk 사용 시 생성된 소스 코드, 로그 및 기타 아티팩트의 스토리지 위치입니다.
+ **Amazon CloudWatch 경보** - 환경의 인스턴스에 대한 로드를 모니터링하는 두 개의 CloudWatch 경보로, 로드가 너무 높거나 너무 낮은 경우 트리거됩니다. 경보가 트리거되면 이에 대한 응답으로 Auto Scaling 그룹이 스케일 업 또는 축소됩니다.
+ **CloudFormation 스택** - Elastic Beanstalk는 CloudFormation 를 사용하여 환경에서 리소스를 시작하고 구성 변경 사항을 전파합니다. 리소스는 [CloudFormation 콘솔](https://console.aws.amazon.com/cloudformation)에서 볼 수 있는 템플릿에서 정의됩니다.
+  **도메인 이름(Domain name)** - *{{subdomain}}.{{region}}.elasticbeanstalk.com* 형식으로 웹 앱으로 라우팅되는 도메인 이름입니다.

이러한 모든 리소스는 Elastic Beanstalk에서 관리합니다. 사용자가 환경을 종료하면 Elastic Beanstalk는 환경에 있는 모든 리소스를 종료합니다.

## 다음 단계
<a name="dotnet-linux-quickstart-next-steps"></a>

애플리케이션을 실행하는 환경이 있으면 언제든 다른 애플리케이션 또는 애플리케이션의 새 버전을 배포할 수 있습니다. EC2 인스턴스를 프로비저닝하거나 다시 시작할 필요가 없기 때문에 새 애플리케이션 버전을 매우 빠르게 배포할 수 있습니다. Elastic Beanstalk 콘솔을 사용하여 새로운 환경을 탐색할 수도 있습니다. 자세한 단계는 이 가이드의 *시작하기* 장의 [환경 탐색](GettingStarted.md#GettingStarted.Explore)을 참조하세요.

샘플 애플리케이션을 1\~2개 배포하고 Linux 기반 .NET Core 애플리케이션을 로컬에서 개발하고 실행할 준비가 된 경우 [Elastic Beanstalk용 Linux 기반 .NET Core 개발 환경 설정](dotnet-linux-devenv.md) 단원을 참조하세요.

## Elastic Beanstalk 콘솔을 사용하여 배포
<a name="dotnet-linux-quickstart-console"></a>

Elastic Beanstalk 콘솔을 사용하여 샘플 애플리케이션을 시작할 수도 있습니다. 자세한 단계는 이 가이드의 *시작하기* 장의 [예제 애플리케이션 생성](GettingStarted.md#GettingStarted.CreateApp)을 참조하세요.