

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

# Application Load Balancer에 리스너 규칙 추가
<a name="add-rule"></a>

리스너를 생성할 때 기본 규칙을 정의합니다. 추가 규칙은 언제든지 정의할 수 있습니다. 각 규칙은 작업과 조건을 지정해야 하며 선택적으로 변환을 지정할 수 있습니다. 자세한 내용은 다음을 참조하세요.
+ [작업 유형](rule-action-types.md)
+ [조건 유형](rule-condition-types.md)
+ [변형](rule-transforms.md)

------
#### [ Console ]

**규칙을 추가하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **로드 밸런서**를 선택합니다.

1. 로드 밸런서를 선택합니다.

1. **리스너 및 규칙** 탭에서 **프로토콜: 포트** 열의 텍스트를 선택하여 리스너에 대한 세부 정보 페이지를 엽니다.

1. **규칙** 탭에서 **규칙 추가**를 선택합니다.

1. (선택 사항) 규칙의 이름을 지정하려면 **이름 및 태그**를 확장하고 이름을 입력합니다. 태그를 추가하려면 **추가 태그 추가**를 선택하고 태그 키와 태그 값을 입력합니다.

1. 각 조건에 대해 **조건 추가**를 선택하고 조건 유형을 선택한 다음 필요한 조건 값을 입력합니다.
   + **호스트 헤더** – 일치 패턴 유형을 선택하고 호스트 헤더를 입력합니다.

     **값 일치** – 최대 128자입니다. 대/소문자를 구분하지 않습니다. 허용되는 문자는 a-z, A-Z, 0-9이고 특수 문자는 -\_., 와일드카드(\* 및 ?) 입니다. '.' 문자를 하나 이상 포함해야 합니다. 마지막 "." 문자 다음에는 알파벳만 포함할 수 있습니다.

     **정규식 일치** – 최대 128자입니다.
   + **경로** – 일치 패턴 유형을 선택하고 경로를 입력합니다.

     **값 일치** – 최대 128자입니다. 대소문자 구분. 허용되는 문자는 a-z, A-Z, 0-9이고 특수 문자는 \_-.$/\~"'@:\+; &; and wildcards (\* 및 ?)입니다.

     **정규식 일치** – 최대 128자입니다.
   + **쿼리 문자열** – 키:값 페어 또는 키가 없는 값을 입력합니다.

     최대 128자입니다. 대/소문자를 구분하지 않습니다. 허용되는 문자는 a-z, A-Z, 0-9이며 특수 문자는 \_-.$/\~"'@:\+&()\!,;=; 및 와일드카드(\* 및 ?)입니다.
   + **HTTP 요청 방법** – HTTP 요청 방법을 입력합니다.

     최대 40자입니다. 대소문자 구분. 허용되는 문자는 A-Z이고 특수 문자는 -\_입니다. 와일드카드는 지원되지 않습니다.
   + **HTTP 헤더** – 일치 패턴 유형을 선택하고 헤더의 이름과 비교 문자열을 입력합니다.
     + **HTTP 헤더 이름**— 규칙은 이 헤더가 포함된 요청을 평가하여 일치하는 값을 확인합니다.

       **값 일치** – 최대 40자입니다. 대/소문자를 구분하지 않습니다. 허용되는 문자는 a-z, A-Z, 0-9이며 특수 문자는 \*?-\!\#$%&'\+.^\_`\|\~입니다. 와일드카드는 지원되지 않습니다.

       **정규식 일치** – 최대 128자입니다.
     + **HTTP 헤더 값**— HTTP 헤더 값과 비교할 문자열을 입력합니다.

       **값 일치** – 최대 128자입니다. 대/소문자를 구분하지 않습니다. 허용되는 문자는 a-z, A-Z, 0-9, 공백이며, 특수 문자는 \!"\#$%&'()\+,./:;<=>@[]^\_`{\|}\~-; 및 와일드카드(\* 및 ?)입니다.

       **정규식 일치** – 최대 128자입니다.
   + **소스 IP** - 소스 IP 주소를 CIDR 형식으로 정의합니다. IPv4 및 IPv6 CIDR 모두 허용됩니다. 와일드카드는 지원되지 않습니다.

1. (선택 사항) 변환을 추가하려면 **변환 추가**를 선택하고 변환 유형을 선택한 다음 일치시킬 정규식과 대체 문자열을 입력합니다.

1. (선택 사항, HTTPS 리스너만 해당) **사전 라우팅 작업**에서 다음 작업 중 하나를 선택합니다.
   + **사용자 인증** - 자격 증명 공급자를 선택하고 필요한 정보를 제공합니다. 자세한 내용은 [Application Load Balancer를 사용하여 사용자 인증](listener-authenticate-users.md) 단원을 참조하십시오.
   + **토큰 검증** - JWKS 엔드포인트, 문제 및 추가 클레임을 입력합니다. 자세한 내용은 [Application Load Balancer를 사용하여 JWTs 확인](listener-verify-jwt.md) 단원을 참조하십시오.

1. **라우팅 작업**에서 다음 작업 중 하나를 선택합니다.
   + **대상 그룹에 전달** – 대상 그룹을 선택합니다. 다른 대상 그룹을 추가하려면 **대상 그룹 추가**를 선택하고, 대상 그룹을 선택하고, 상대 가중치를 검토하고, 필요에 따라 가중치를 업데이트합니다. 대상 그룹 중 하나에서 고정을 활성화한 경우 그룹 수준 고정을 활성화해야 합니다.
   + **URL로 리디렉션** – **URI 파트** 탭에서 각 파트를 개별적으로 입력하거나 **전체 URL** 탭에서 전체 주소를 입력합니다. **상태 코드**의 경우 요구 사항에 따라 임시(HTTP 302) 또는 영구(HTTP 301) 중 하나를 선택합니다.
   + **고정 응답 반환** – 폐기된 클라이언트 요청에 대해 반환할 **응답 코드**를 입력합니다. 선택적으로 **콘텐츠 유형**과 **응답 본문**을 지정할 수 있습니다.

1. **다음**을 선택합니다.

1. **우선순위**에 1\~50,000 범위의 값을 입력합니다. 규칙은 가장 낮은 값에서 가장 높은 값에 이르기까지 우선순위에 따라 평가됩니다.

1. **다음**을 선택합니다.

1. **검토 및 생성** 페이지에서 **생성**을 선택합니다.

------
#### [ AWS CLI ]

**규칙을 추가하려면**  
[create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) 명령을 사용합니다.

다음 예에서는 `forward` 작업과 `host-header` 조건이 포함된 규칙을 생성합니다.

```
aws elbv2 create-rule \
    --listener-arn {{listener-arn}} \
    --priority {{10}} \
    --conditions "Field=host-header,Values={{example.com}},{{www.example.com}}" \
    --actions "Type=forward,TargetGroupArn={{target-group-arn}}"
```

두 대상 그룹 간에 트래픽을 분산하는 전달 작업을 생성하려면 대신 다음 `--actions` 옵션을 사용합니다.

```
    --actions '[{
        "Type":"forward",
        "ForwardConfig":{
          "TargetGroups":[
            {"TargetGroupArn":"{{target-group-1-arn}}","Weight":{{50}}},
            {"TargetGroupArn":"{{target-group-2-arn}}","Weight":{{50}}}
          ]
        }
    }]'
```

다음 예에서는 `fixed-response` 작업과 `source-ip` 조건이 포함된 규칙을 생성합니다.

```
aws elbv2 create-rule \
    --listener-arn {{listener-arn}} \
    --priority {{20}} \
    --conditions '[{"Field":"source-ip","SourceIpConfig":{"Values":["{{192.168.1.0/24}}","{{10.0.0.0/16}}"]}}]' \
    --actions "Type=fixed-response,FixedResponseConfig={StatusCode=403,ContentType=text/plain,MessageBody='{{Access denied}}'}"
```

다음 예에서는 `redirect` 작업과 `http-header` 조건이 포함된 규칙을 생성합니다.

```
aws elbv2 create-rule \
    --listener-arn {{listener-arn}} \
    --priority {{30}} \
    --conditions '[{"Field":"http-header","HttpHeaderConfig":{"HttpHeaderName":"User-Agent","Values":["*Mobile*","*Android*","*iPhone*"]}}]' \
    --actions "Type=redirect,RedirectConfig={Host={{m.example.com}},StatusCode=HTTP_302}"
```

------
#### [ CloudFormation ]

**규칙을 추가하려면**  
[AWS::ElasticLoadBalancingV2::ListenerRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-listenerrule.html) 유형의 리소스를 정의합니다.

다음 예에서는 `forward` 작업과 `host-header` 조건이 포함된 규칙을 생성합니다. 조건이 충족되면 규칙은 지정된 대상 그룹으로 트래픽을 전송합니다.

```
Resources:
    myForwardListenerRule:
     Type: 'AWS::ElasticLoadBalancingV2::ListenerRule'
     Properties:
       ListenerArn: !Ref myListener
       Priority: {{10}}
       Conditions:
         - Field: host-header
           Values:
             - {{example.com}}
             - {{www.example.com}}
       Actions:
         - Type: forward
           TargetGroupArn: !Ref myTargetGroup
```

또는 조건이 충족될 때 두 대상 그룹 간에 트래픽을 분산하는 전달 작업을 생성하려면 `Actions`를 다음과 같이 정의합니다.

```
       Actions:
         - Type: forward
           ForwardConfig:
             TargetGroups:
               - TargetGroupArn: !Ref TargetGroup1
                 Weight: {{50}}
               - TargetGroupArn: !Ref TargetGroup2
                 Weight: {{50}}
```

다음 예에서는 `fixed-response` 작업과 `source-ip` 조건이 포함된 규칙을 생성합니다.

```
Resources:
    myFixedResponseListenerRule:
     Type: 'AWS::ElasticLoadBalancingV2::ListenerRule'
     Properties:
       ListenerArn: !Ref myListener
       Priority: {{20}}
       Conditions:
         - Field: source-ip
           SourceIpConfig:
             Values:
                - {{192.168.1.0/24}}
                - {{10.0.0.0/16}}
       Actions:
         - Type: fixed-response
           FixedResponseConfig:
             StatusCode: 403
             ContentType: text/plain
             MessageBody: "{{Access denied}}"
```

다음 예에서는 `redirect` 작업과 `http-header` 조건이 포함된 규칙을 생성합니다.

```
Resources:
    myRedirectListenerRule:
     Type: 'AWS::ElasticLoadBalancingV2::ListenerRule'
     Properties:
       ListenerArn: !Ref myListener
       Priority: {{30}}
       Conditions:
         - Field: http-header
           HttpHeaderConfig:
             HttpHeaderName: User-Agent
             Values: 
               - "*Mobile*"
               - "*Android*"
               - "*iPhone*"
       Actions:
         - Type: redirect
           RedirectConfig:
             Host: {{m.example.com}}
             StatusCode: HTTP_302
```

------