리스너 규칙에 대한 작업 유형 - Elastic Load Balancing

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

리스너 규칙에 대한 작업 유형

작업은 리스너 규칙의 조건이 충족될 때 로드 밸런서가 요청을 처리하는 방법을 결정합니다. 각 규칙에는 일치하는 요청을 처리하는 방법을 지정하는 작업이 하나 이상 있어야 합니다. 각 규칙 작업에는 유형 및 구성 정보가 있습니다. Application Load Balancer는 리스너 규칙에 대해 다음 작업 유형을 지원합니다.

작업 유형
authenticate-cognito

[HTTPS 리스너] Amazon Cognito를 사용하여 사용자를 인증합니다. 자세한 내용은 사용자 인증 구성 단원을 참조하십시오.

authenticate-oidc

[HTTPS 리스너] OpenID Connect(OIDC)와 호환되는 자격 증명 공급자를 사용하여 사용자를 인증합니다. 자세한 내용은 사용자 인증 구성 단원을 참조하십시오.

fixed-response

사용자 지정 HTTP 응답을 반환합니다. 자세한 내용은 고정 응답 작업 단원을 참조하세요.

forward

요청을 지정된 대상 그룹으로 전달합니다. 자세한 내용은 전달 작업 단원을 참조하세요.

redirect

한 URL의 요청을 다른 URL로 리디렉션합니다. 자세한 내용은 리디렉션 작업 단원을 참조하십시오.

작업 기본 사항
  • 각 규칙에는 forward, redirect또는 라우팅 작업 중 정확히 하나가 포함되어야 하며 수행할 마지막 작업이어야 fixed-response합니다.

  • HTTPS 리스너에는 사용자 인증 작업과 라우팅 작업이 포함된 규칙이 있을 수 있습니다.

  • 여러 작업이 있는 경우 우선 순위가 가장 낮은 작업이 먼저 수행됩니다.

  • 프로토콜 버전이 gRPC 또는 HTTP/2인 경우, 지원되는 유일한 작업은 forward 작업입니다.

고정 응답 작업

fixed-response 작업은 클라이언트 요청을 삭제하고 사용자 지정 HTTP 응답을 반환합니다. 이 작업을 사용하여 2XX, 4XX, 5XX 응답 코드와 선택적 메시지를 반환할 수 있습니다.

fixed-response 작업이 수행되면 해당 작업과 리디렉션 대상의 URL이 액세스 로그에 기록됩니다. 자세한 내용은 액세스 로그 항목 단원을 참조하세요. 성공한 fixed-response 작업의 개수는 HTTP_Fixed_Response_Count 지표에 보고됩니다. 자세한 내용은 Application Load Balancer 지표 단원을 참조하십시오.

예 에 대한 고정 응답 작업의 예 AWS CLI

규칙을 만들거나 수정할 때 작업을 지정할 수 있습니다. 자세한 내용은 create-rulemodify-rule 명령을 참조하세요. 다음 작업은 지정된 상태 코드와 메시지 본문이 있는 고정 응답을 보냅니다.

[ { "Type": "fixed-response", "FixedResponseConfig": { "StatusCode": "200", "ContentType": "text/plain", "MessageBody": "Hello world" } } ]

전달 작업

forward 작업은 요청을 대상 그룹으로 라우팅합니다. forward 작업을 추가하기 전에 대상 그룹을 만들고 대상 그룹에 대상을 추가합니다. 자세한 내용은 Application Load Balancer 대상 그룹 생성 단원을 참조하십시오.

forward 작업에 대해 여러 대상 그룹을 지정하는 경우 각 대상 그룹에 대해 가중치를 지정해야 합니다. 각 대상 그룹 가중치는 0과 999 사이의 값입니다. 가중 대상 그룹이 있는 리스너 규칙과 일치하는 요청은 가중치를 기준으로 이러한 대상 그룹에 배포됩니다. 예를 들어, 각각 가중치가 10인 두 개의 대상 그룹을 지정하면 각 대상 그룹은 요청을 절반씩 받습니다. 가중치가 10인 대상 그룹과 가중치가 20인 대상 그룹 두 개를 지정하면 가중치가 20인 대상 그룹이 다른 대상 그룹보다 두 배 많은 요청을 받습니다.

가중치가 적용된 대상 그룹 간에 트래픽을 분산하도록 규칙을 구성하고 대상 그룹 중 하나가 비어 있거나 비정상 대상만 있는 경우 로드 밸런서는 정상 대상이 있는 대상 그룹으로 자동으로 장애 조치하지 않습니다.

기본적으로 가중 대상 그룹 간에 트래픽을 배포하도록 규칙을 구성한다고 해서 고정 세션이 반드시 적용되는 것은 아닙니다. 고정 세션이 적용되도록 하려면 규칙에 대해 대상 그룹 고정을 활성화합니다. 로드 밸런서는 요청을 가중 대상 그룹에 처음 라우팅할 때 선택된 대상 그룹에 대한 정보를 인코딩하고 쿠키를 암호화하며 클라이언트에 대한 응답으로 쿠키를 포함하는 AWSALBTG라는 쿠키를 생성합니다. 클라이언트는 로드 밸런서에 대한 후속 요청에서 수신하는 쿠키를 포함해야 합니다. 로드 밸런서가 대상 그룹 고정 기능이 활성화된 규칙과 일치하고 쿠키를 포함하는 요청을 받으면 요청이 쿠키에 지정된 대상 그룹으로 라우팅됩니다.

Application Load Balancer는 URL로 인코딩된 쿠키 값을 지원하지 않습니다.

CORS(Cross-Origin Resource Sharing) 요청의 경우 고정을 활성화하려면 SameSite=None; Secure가 필요합니다. 이 경우 Elastic Load Balancing은 두 번째 쿠키인 AWSALBTGCORS를 생성합니다. 이 쿠키에는 원래 고정 쿠키와 동일한 정보와 SameSite 속성이 포함되어 있습니다. 클라이언트는 두 쿠키를 모두 수신합니다.

예 하나의 대상 그룹이 있는 전달 작업의 예

규칙을 만들거나 수정할 때 작업을 지정할 수 있습니다. 자세한 내용은 create-rulemodify-rule 명령을 참조하세요. 다음 작업은 요청을 지정된 대상 그룹으로 전달합니다.

[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" } ] } } ]
예 두 개의 가중 대상 그룹이 있는 전달 작업의 예

다음 작업은 각 대상 그룹의 가중치를 기준으로 지정된 두 대상 그룹에 요청을 전달합니다.

[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-targets/73e2d6bc24d8a067", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-targets/09966783158cda59", "Weight": 20 } ] } } ]
예 고정성이 활성화된 전달 작업의 예

대상 그룹이 여러 개인 전달 작업이 있고 하나 이상의 대상 그룹에 고정 세션이 활성화되어 있으면 대상 그룹 고정을 활성화해야 합니다.

다음 작업은 대상 그룹 고정 기능을 사용하여 요청을 지정된 두 대상 그룹으로 전달합니다. 고정 쿠키가 포함되지 않은 요청은 각 대상 그룹의 가중치에 따라 라우팅됩니다.

[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-targets/73e2d6bc24d8a067", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-targets/09966783158cda59", "Weight": 20 } ], "TargetGroupStickinessConfig": { "Enabled": true, "DurationSeconds": 1000 } } } ]

리디렉션 작업

redirect 작업은 클라이언트 요청을 한 URL에서 다른 URL로 리디렉션합니다. 요구 사항에 따라 리디렉션을 임시(HTTP 302) 또는 영구(HTTP 301)로 구성할 수 있습니다.

URI는 다음과 같은 구성 요소로 이루어집니다.

protocol://hostname:port/path?query

리디렉션 루프를 피하기 위해 프로토콜, 호스트 이름 포트, 경로 중 최소 하나를 수정해야 합니다. 수정하지 않은 구성 요소는 원래 값을 유지합니다.

protocol

프로토콜(HTTP 또는 HTTPS)입니다. HTTP를 HTTP로, HTTP를 HTTPS로, HTTPS를 HTTPS로 리디렉션할 수 있습니다. HTTPS를 HTTP로 리디렉션할 수는 없습니다.

hostname

호스트 이름입니다. 호스트 이름은 대/소문자를 구분하지 않고 최대 128자까지 가능하며 영숫자, 와일드카드(* 및 ?), 하이픈(-)으로 구성됩니다.

port

포트입니다(1~65535).

경로

"/"로 시작하는 절대 경로입니다. 경로는 대/소문자를 구분하고, 길이가 최대 128자일 수 있으며, 영숫자, 와일드카드(* 및 ?), &(& 사용), 특수 문자 _-.$/~"'@:+로 구성됩니다.

query

쿼리 파라미터입니다 최대 길이는 128자입니다.

다음 예약 키워드를 사용하여 원래 URL의 URI 구성 요소를 대상 URL에 다시 사용할 수 있습니다.

  • #{protocol} - 프로토콜을 포함합니다. protocol 및 query 구성 요소에 사용합니다.

  • #{host} - 도메인을 포함합니다. hostname, path, query 구성 요소에 사용합니다.

  • #{port} - 포트를 포함합니다. port, path, query 구성 요소에 사용합니다.

  • #{path} - 경로를 포함합니다. path 및 query 구성 요소에 사용합니다.

  • #{query} - 쿼리 파라미터를 포함합니다. query 구성 요소에 사용합니다.

redirect작업이 수행되면 액세스 로그에 작업이 기록됩니다. 자세한 내용은 액세스 로그 항목 단원을 참조하세요. 성공한 redirect 작업의 개수는 HTTP_Redirect_Count 지표에 보고됩니다. 자세한 내용은 Application Load Balancer 지표 단원을 참조하세요.

예 콘솔을 사용한 리디렉션 작업 예

다음 규칙은 HTTPS 프로토콜과 지정된 포트(40443)를 사용하는 URL로의 영구 리디렉션을 설정하지만, 원래 호스트 이름, 경로, 쿼리 파라미터를 포함합니다. 이 화면은 "https://#{host}:40443/#{path}?#{query}"와 동일합니다.

HTTPS 프로토콜과 지정된 포트(40443)를 사용하는 URL로 요청을 리디렉션하지만, 원본 URL의 원본 도메인, 원본 경로, 원본 쿼리 파라미터를 포함하는 규칙입니다.

다음 규칙은 원래 프로토콜, 포트, 호스트 이름, 쿼리 파라미터를 포함하는 URL로의 영구 리디렉션을 설정하고, #{path} 키워드를 사용하여 수정된 경로를 생성합니다. 이 화면은 "#{protocol}://#{host}:#{port}/new/#{path}?#{query}"와 동일합니다.

원본 프로토콜, 원본 포트, 원본 호스트 이름, 원본 쿼리 파라미터를 포함하는 URL로 요청을 리디렉션하고, #{path} 키워드를 사용하여 수정된 경로를 생성하는 규칙입니다.
예 에 대한 리디렉션 작업 예제 AWS CLI

규칙을 만들거나 수정할 때 작업을 지정할 수 있습니다. 자세한 내용은 create-rulemodify-rule 명령을 참조하세요. 다음 작업은 포트 443에서 HTTP 요청을 HTTPS 요청으로 리디렉션합니다. 호스트 이름, 경로, 쿼리 문자열은 HTTP 요청과 동일합니다.

[ { "Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "Host": "#{host}", "Path": "/#{path}", "Query": "#{query}", "StatusCode": "HTTP_301" } } ]