> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ale.run/llms.txt
> Use this file to discover all available pages before exploring further.

# AWS ALB 생성

## Target group 생성

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_01.png" />
</Frame>

> `EC2 > Load Balancing > Target groups`에서 `Create target group`을 클릭하세요.

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_02.png" />
</Frame>

> Specify group details 메뉴에서 대상 그룹 정보를 다음과 같이 입력 혹은 선택하고 `Next`를 클릭하세요.

* Basic configuration
  * Choose a target type: Instances
  * Target group name: 대상그룹 이름
  * Protocol-Port: HTTP, 9001
  * IP address type: IPv4
  * VPC: 인스턴스가 속한 VPC
  * Protocol version: HTTP1

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_03.png" />
</Frame>

> `ale`을 설치한 인스턴스를 선택하고 Ports for the selected instances에 9001을 입력한 후 Include as pending below를 클릭합니다.
> 이어서 `Create target group`를 클릭하세요.

## ALB 생성

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_04.png" />
</Frame>

> `EC2 > Load Balancing > Load balancers`에서 `Create Load Balancer`를 클릭합니다.
> 이어서  **Application Load Balancer**를 선택하세요.

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_05.png" />
</Frame>

> Load balancer 정보를 다음과 같이 입력 혹은 선택하고 `Create load balancer`를 클릭하세요.

* Basic configuration
  * Name: ALB 이름
  * Scheme: internet-facing
  * IP address type: ipv4
* Network mapping
  * VPC: 인스턴스가 속한 VPC
  * Availability Zones: 사용 가능한 모든 서브넷 선택
* Security groups
  * Security groups: EC2 인스턴스에 적용된 보안 그룹 선택
* Listeners and routing
  * Listener port: 80
  * Target group: 앞서 생성한 대상 그룹 선택

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_06.png" />
</Frame>

> 생성된 Load balancer 페이지에서 `Add rule`을 클릭하고, 아래의 5단계의 과정으로 rule을 생성하세요.

<Steps>
  <Step title="Add rule">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_07.png" />
    </Frame>

    > Name 필드에 Rule 이름을 입력하세요.
  </Step>

  <Step title="Define rule conditions">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_08.png" />
    </Frame>

    > `Add condition` 클릭 후 생성되는 모달에서 Host header 선택 후, `app.[도메인]`을 입력하고 `confirm`을 클릭하면 Condition 카드가 생성됩니다. 이어서 `Next`를 클릭하세요.
  </Step>

  <Step title="Define rule Actions">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_09.png" />
    </Frame>

    > Action types로 Forward to target groups를 선택하고 앞서 생성한 대상 그룹을 선택한 후 `Next`를 클릭하세요.
  </Step>

  <Step title="Set rule priority">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_10.png" />
    </Frame>

    > Priority를 1로 정한 후 `Next`를 클릭하세요.
  </Step>

  <Step title="Review and create">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_11.png" />
    </Frame>

    > 최종적으로 `Create`를 클릭하면 rule이 생성됩니다.
  </Step>
</Steps>

<Note>
  rule 생성 후 잠시 기다리면, `ale`이 인스턴스에서 정상적으로 실행 중인 경우 ALB에서 라우팅하는 대상 그룹의 상태가 아래의 이미지처럼 Healthy로 표시됩니다.

  <Frame>
    <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_12.png" />
  </Frame>
</Note>

## DNS 레코드 등록 및 ALB 적용

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_13.png" />
</Frame>

> Route53 > 호스팅 영역 > 적용 대상 도메인 페이지에서 `Create record`를 클릭하세요.

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_14.png" />
</Frame>

> 레코드 생성 페이지에서 아래와 같이 값을 입력한 후 `Create record`를 클릭하세요.

* **레코드 이름**: app
* **레코드 유형**: A
* **Alias**: 활성화
* **Route traffic to**
  * **Alias to Application and Classic Load Balancer**
  * **Region**: VPC의 리전
  * **ALB**: 앞서 생성한 ALB 선택

<Info>
  설정한 레코드 이름의 도메인(ex. app.aletest.run)은 `ale`의 접속 도메인으로 사용됩니다.
</Info>

## ACM 인증서 생성 및 적용

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_15.png" />
</Frame>

> AWS Certificate Manager 대시보드에서 `Request`를 클릭하고 이어지는 화면에서 Request a public certificate를 선택하고 `Next`를 클릭하세요.

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_16.png" />
</Frame>

> 인증서 정보를 다음과 같이 입력하고 `Request`를 클릭하세요.

* Domain names
  * Fully qualified domain name: app.\[도메인]
* Validation method
  * DNS validation
* Key configuration
  * RSA 2048

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_17.png" />
</Frame>

> DNS validation을 위해 생성된 인증서 페이지에서 `Create record in Route 53`을 클릭하고, 이어서 `Create records`를 클릭하세요.

## ALB HTTPS 리스너 추가

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_18.png" />
</Frame>

> `EC2 > Load Balancing > Load Balancers`의 생성된 Load balancer 페이지에서 `Add listener`를 클릭하세요.

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_19.png" />
</Frame>

> 이어지는 화면에서 다음과 같이 값을 입력한 후 `Add`를 클릭하세요.

* Listener configuration
  * Protocol: HTTPS
  * Port: 443
* Default actions
  * Routing actions: Forward to target groups
    * Target group: 앞서 생성한 대상 그룹 선택
* Security Policy
  * Security category: All security policies
  * Policy name: `recommended` 표시된 정책 적용
* Default SSL/TLS server certificate
  * Certificate source: From ACM
  * Certificate: 앞서 생성한 ACM 인증서 선택

<Tip>
  `https://app.[도메인]`에 접속해 `ale`에 정상적으로 접속되는지 확인하세요.

  <Frame>
    <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/en/04_20.png" />
  </Frame>
</Tip>

<Note>
  정상적인 사용을 위해 이어지는 인그레스 구성 과정이 필요합니다.
</Note>

## 연결 유휴 제한 시간 설정

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_18.png" />
</Frame>

> `EC2 > Load Balancing > Load Balancers`의 생성된 Load balancer 페이지에서 **Attributes** 탭을 클릭하세요.

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/setup/ec2/images/04_18.png" />
</Frame>

> 우측 상단의 Edit 버튼을 클릭하고 **Connection idle timeout**을 `4000`초로 수정합니다. 이어서 하단의 Save Changes를 클릭합니다.
