라우팅 규칙을 사용하는 방법
AWS Management Console, AWS CLI 또는 AWS SDK를 사용하여 라우팅 규칙을 만들 수 있습니다. 규칙을 생성한 후에는 우선순위를 변경할 수 있습니다.
라우팅 규칙 만들기
다음 절차에서는 라우팅 모드가 ROUTING_RULE_THEN_API_MAPPING
또는 ROUTING_RULE_ONLY
로 설정된 사용자 지정 도메인 이름에 대한 라우팅 규칙을 만드는 방법을 보여줍니다.
- AWS Management Console
https://console.aws.amazon.com/apigateway
에서 API Gateway 콘솔에 로그인합니다. 기본 탐색 창에서 사용자 지정 도메인 이름을 선택합니다.
-
사용자 지정 도메인 이름을 선택합니다.
-
라우팅 세부 정보 탭에서 라우팅 규칙 추가를 선택합니다.
-
새 조건 추가를 선택하여 새 조건을 추가합니다.
헤더 또는 기본 경로 조건을 추가할 수 있습니다. 모든 수신 요청을 사용자 지정 도메인 이름과 일치시키려면 조건을 추가하지 마세요.
작업에서 드롭다운을 사용하여 대상 API와 대상 스테이지를 선택합니다.
-
다음을 선택합니다.
우선 순위 필드에 우선 순위의 숫자를 입력합니다.
API Gateway는 규칙을 가장 낮은 값에서 가장 높은 값에 이르기까지 우선 순위에 따라 평가합니다.
조건 없이 규칙을 생성하는 경우 높은 값 우선 순위를 사용하는 것이 좋습니다.
라우팅 규칙 생성을 선택합니다.
- AWS CLI
-
다음 create-routing-rule 명령은 우선 순위가 50인 라우팅 규칙을 만듭니다. 이 예제에서 API Gateway는 헤더
Hello:World
와x-version:beta
및 기본 경로PetStoreShopper
가 있는 모든 수신 요청을 대상 APIa1b2c3
으로 라우팅합니다.aws apigatewayv2 create-routing-rule \ --domain-name 'api.example.com' \ --priority 50 \ --conditions '[ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ]'\ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod" } } ]'
출력은 다음과 같습니다.
{ "Actions": [ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": false } } ], "Conditions": [ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ], "Priority": 50, "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123", "RoutingRuleId": "abc123" }
라우팅 규칙의 우선 순위 변경
라우팅 규칙의 우선 순위를 변경할 수 있습니다. 이는 즉시 적용되며 API 소비자가 사용자 지정 도메인 이름을 간접적으로 호출하는 방식에 영향을 미칠 수 있습니다. 라우팅 규칙의 우선 순위를 설정할 때 규칙 사이에 간격을 두는 것이 좋습니다.
예를 들어 두 가지 라우팅 규칙, 즉 우선 순위가 50인 규칙 abc123
과 우선 순위가 150인 규칙 zzz000
을 고려합니다. API Gateway가 규칙 zzz000
을 먼저 평가하도록 규칙의 우선 순위를 변경하려면 규칙 zzz000
의 우선 순위를 30으로 변경할 수 있습니다.
- AWS Management Console
-
https://console.aws.amazon.com/apigateway
에서 API Gateway 콘솔에 로그인합니다. 기본 탐색 창에서 사용자 지정 도메인 이름을 선택합니다.
-
사용자 지정 도메인 이름을 선택합니다.
-
라우팅 세부 정보 탭에서 라우팅 규칙을 선택한 다음 편집을 선택합니다.
-
다음을 선택합니다.
-
우선 순위에 새 우선 순위를 입력합니다.
변경 사항 저장을 선택합니다.
- AWS CLI
-
다음 put-routing-rule 명령은 라우팅 규칙
abc123
의 우선 순위를 변경합니다.aws apigatewayv2 put-routing-rule \ --domain-name 'api.example.com' \ --priority 30 \ --routing-rule-id abc123 \ --conditions '[ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ]'\ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod" } } ]'
출력은 다음과 같습니다.
{ "Actions": [ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": false } } ], "Conditions": [ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ], "Priority": 38, "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123", "RoutingRuleId": "abc123" }